This repository contains the source code for my personal website. It’s where I share information about my work, projects, resume, and contact details.
- Live site: mackenzieg.tech
- License: MIT (see
LICENSE)
- React (Create React App), React Router
- SCSS for styling
- Static pre-render with
react-snap - Deployed to GitHub Pages with
gh-pages
Prerequisites:
- Node.js >= 14 (nvm recommended)
Install dependencies:
npm installStart the dev server (with fast refresh):
npm startThe site will be available at http://localhost:3000.
src/data/about.md: About page content (Markdown).src/data/projects/projects.js: Project cards and mapping to details.- Add a new project by:
- Creating a Markdown file in
src/data/projects/(e.g.,my-project.md). - Adding an entry to
projectCardsandprojectDetailswith a matchingprojectId. - Placing images in
public/images/projects/and referencing them by path.
- Creating a Markdown file in
- Add a new project by:
src/data/resume/:degrees.js,positions.js,courses.js,skills.jspower the Resume page.
src/data/contact.js: Contact information.- Public assets:
public/files/: PDFs and documents (e.g., resume).public/images/: Site and project images.- Favicons and PWA assets under
public/images/favicon/.
Routing and pages live under src/pages/. Layout and UI components are under src/layouts/ and src/components/.
This site uses a custom domain configured via public/CNAME (mackenzieg.tech).
- Ensure
homepageinpackage.jsonis set to your domain (already configured). - Build and pre-render:
npm run predeploy
- Publish to GitHub Pages:
npm run deploy
GitHub Pages should serve the gh-pages branch automatically. If needed, confirm your repository’s Pages settings are configured to use the gh-pages branch (root).
- Update meta tags (title/description/social preview) in
public/index.html. - Update analytics (if used) in
src/components/Template/Analytics.js. - Linting:
npm run lint - Tests:
npm test
This site started from an open-source template and is MIT licensed. Big thanks to the maintainers and the open-source community.