Personal portfolio site built with React 19, TypeScript, Vite, and Tailwind CSS 4.
- React 19 + React Router 7 (SPA)
- Vite 7 with imagetools for responsive image optimization
- Tailwind CSS 4 + Radix UI primitives
- Flagsmith for feature flags
pnpm install
cp .env.example .env.local # then fill in values
pnpm dev # http://localhost:3000| Variable | Required | Description |
|---|---|---|
VITE_SITE_URL |
Yes | Production URL for SEO meta tags |
VITE_FLAGSMITH_ENVIRONMENT_ID |
No | Enables live feature flags (falls back to all-on locally) |
VITE_FLAGSMITH_API |
No | Override Flagsmith API endpoint |
pnpm dev # Dev server
pnpm build # Type check + production build
pnpm preview # Preview build on port 8080
pnpm lint # ESLint
pnpm lint:fix # ESLint with auto-fix
pnpm format # Prettier
pnpm type-check # TypeScript check onlyBlog pages are gated by the blogs_enabled Flagsmith flag. Without VITE_FLAGSMITH_ENVIRONMENT_ID set, all flags default to enabled.
Configured for Vercel (SPA rewrites in vercel.json). For other platforms, configure your server to serve index.html for all routes.