This project is an advanced, dynamic, multi-page digital portfolio built for the CS5709 module at the University of Limerick. It showcases my skills, projects, and technical abilities.
This Phase 2 version has evolved significantly from the original, incorporating peer feedback to implement advanced features, a robust technology stack, and a fully responsive user experience.
- Dynamic Content Management:
- Blog: Fetches posts from a live Firebase Firestore database.
- Projects & Skills: Data is dynamically loaded from local JSON files, demonstrating separation of concerns.
- Advanced Animation Stack:
- Page Transitions: Smooth, animated transitions between all routes using Framer Motion.
- Interactive UI: Utilizes GSAP for the initial welcome splash screen and scroll-triggered animations on the About page.
- Fully Responsive Design:
- Adapts seamlessly to all device sizes, from mobile to desktop.
- Features a functional hamburger menu for intuitive mobile navigation.
- Interactive Filtering & Search:
- The projects page includes a live search bar and category filters to sort projects dynamically.
- Performance Optimized:
- Uses React.lazy() and Suspense for code-splitting, ensuring fast initial load times.
- Dark / Light Mode:
- Includes a theme toggle button, with the user's preference saved in
localStorageusing React Context.
- Includes a theme toggle button, with the user's preference saved in
- API Integration:
- The contact form is fully functional and integrates with Formspree for backend email handling.
- Core: React.js, TypeScript, Vite
- Styling: CSS3 (with CSS Variables), Material-UI (MUI)
- Animation: Framer Motion, GSAP
- Routing:
react-router-dom - Data & API: Firebase (Firestore), Formspree
- Tooling: Git, GitHub, GitHub Actions (for CI/CD)
This project uses GitHub Actions for continuous integration and continuous deployment (CI/CD). The workflow is defined in .github/workflows/deploy.yml and automates the deployment of the portfolio to GitHub Pages.
Key steps in the pipeline:
- Trigger: The action automatically runs on every
pushto themainbranch. - Build: It sets up a Node.js 20.x environment, installs dependencies using
npm ci, and builds the static site withnpm run build. - Deploy: The resulting
./distdirectory is then deployed to thegh-pagesbranch using thepeaceiris/actions-gh-pagesaction, which updates the live demo site.
To run this project locally, follow these steps:
You need to have Node.js and npm installed on your machine.
-
Clone the repository:
git clone [https://github.com/GavinZHU2020/FirstPortForlio.git](https://github.com/GavinZHU2020/FirstPortForlio.git)
-
Navigate into the project directory:
cd FirstPortForlio -
Install the dependencies:
npm install
-
(Optional) Firebase Setup: To run the blog, you will need to set up your own Firebase project and create a
src/firebaseConfig.tsfile with your credentials. -
Start the development server:
npm run dev
The application will be available at http://localhost:5173.
This project was updated by Wenkai Zhu for Assessment 3 (Phase 2) of the CS5709 module.