This repository contains the source code for my personal portfolio, built with a modern, lightweight, privacy-first technical architecture. It serves as a central hub for my research in emergent physics, network topologies, and sovereign software engineering.
- Framework: React (v19) + Vite (v8)
- Routing: React Router (v7)
- Animations: Framer Motion (v12)
- Styling: Pure CSS Modules + Global CSS Variables (No Tailwind).
- Type Safety: Strict TypeScript.
The entire design system is built using CSS variables, allowing for instantaneous, site-wide theme changes without touching a single component.
To change the theme:
- Open
src/styles/tokens.css - Scroll to the
THEMEblock you wish to activate. - Uncomment the block to apply the colors (e.g., Absolute Clarity, Enclave Cream, Vibrant Azure).
- The site will immediately reflect the new background, text contrast, glassmorphism borders, and primary accent colors.
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Build for production:
npm run build
This is a fully static Single Page Application (SPA). Because it uses react-router-dom for client-side routing, you must configure your hosting provider to route all traffic to index.html.
Vercel is the easiest option for Vite/React apps.
- Steps:
- Push this code to a GitHub repository.
- Go to Vercel and click "Add New Project".
- Import your GitHub repository.
- Vercel will automatically detect Vite and set the Build Command to
npm run buildand Output Directory todist. - Routing Fix: Create a
vercel.jsonfile in the root of your project with the following:{ "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }] } - Click Deploy.
Cloudflare Pages offers a blazing fast global CDN for free.
- Steps:
- Log in to the Cloudflare dashboard > Pages > Connect to Git.
- Select your repository.
- Framework preset: None (or Vite if available).
- Build command:
npm run build - Build output directory:
dist - Routing Fix: Cloudflare Pages handles SPA routing automatically if you use the framework preset. If you experience 404s on refresh, create a
_redirectsfile in yourpublicfolder with the content:/* /index.html 200
- Steps:
- Go to Netlify and "Add new site" -> "Import an existing project".
- Select your GitHub repository.
- Build command:
npm run build - Publish directory:
dist - Routing Fix: Create a file named
_redirectsin yourpublicdirectory (so it ends up indist) with the exact content:/* /index.html 200
GitHub Pages requires slightly different routing configurations.
- Steps:
- In
vite.config.ts, add thebaseproperty if your repo is a project site (e.g.,base: '/your-repo-name/'). If it is a user site (saifmukhtar.github.io), leave the base as/. - Routing Fix: GitHub Pages doesn't natively support SPA routing. You can use a hack by copying
index.htmlto404.htmlduring the build process. - Add a GitHub Actions workflow
.github/workflows/deploy.ymlusing the officialactions/deploy-pagessetup for static sites.
- In
This project is licensed under the MIT License - see the src/pages/License.tsx file for details. Open source libraries used herein belong to their respective copyright holders.