Personal portfolio SPA built with React, TypeScript, Mantine, and GitHub Pages deployment.
- React 18 + TypeScript
- Create React App (
react-scripts) - Mantine UI
- React Router (HashRouter for GitHub Pages compatibility)
- Jest + React Testing Library
- Node.js 18+ (Node 20 recommended)
- npm (this repo is standardized on npm)
Install dependencies:
npm install --legacy-peer-depsThe --legacy-peer-deps flag is currently required due existing peer dependency constraints in the dependency tree.
npm startApp runs at http://localhost:3000.
npm start: Run development server.npm run build: Build production bundle tobuild/.npm run deploy: Deploybuild/to GitHub Pages.npm test: Run tests in watch mode.npm run test:ci: Run tests once for CI usage.npm run lint: Lint TypeScript/TSX sources.npm run typecheck: Run TypeScript compiler checks.npm run format: Apply Prettier formatting.npm run format:check: Verify formatting.npm run check: Run lint + typecheck + CI tests.
GitHub Actions workflow is configured at .github/workflows/ci.yml and runs:
- dependency install
npm run checknpm run build
src/Components: reusable UI componentssrc/Pages: top-level routed pagessrc/DynamicPages: dynamic route viewssrc/Data: static content/data modulessrc/styles: shared styling tokens/helpers
This project uses gh-pages and homepage in package.json.
Deploy with:
npm run deploy