My personal developer portfolio — a fast, responsive single-page application that showcases my skills, experience, education, and projects. Content is managed through a Sanity CMS and rendered by a React + TypeScript frontend.
🔗 Live site: shawkyebrahim.vercel.app
Frontend
- React 18 + TypeScript
- Vite — build tool & dev server
- React Router — client-side routing
- Emotion — CSS-in-JS styling
- react-spring — animations
- Font Awesome — icons
- react-markdown — Markdown content rendering
- Vercel Analytics
Content / Backend
- Sanity — headless CMS (Sanity Studio)
Tooling
- Vitest + Testing Library — testing
- Deployed on Vercel
This is a monorepo with two independent workspaces:
My-Portfolio/
├── react-frontend/ # React + Vite single-page application
│ └── src/
│ ├── APIs/ # Sanity data fetching
│ ├── components/ # Reusable UI components
│ ├── containers/ # Page-level layout sections
│ ├── contexts/ # React context providers
│ └── Portfolio/ # Page composition
└── sanity-backend/ # Sanity Studio (content schemas & CMS)
└── schemas/ # Portfolio content models
- Node.js (LTS recommended) and npm
cd react-frontend
npm install
npm run devThe app opens automatically at http://localhost:5173.
cd sanity-backend
npm install
npm run devSanity Studio runs at http://localhost:3333.
Run these inside react-frontend/:
| Script | Description |
|---|---|
npm run dev |
Start the Vite dev server |
npm run build |
Build for production (outputs to build/) |
npm run preview |
Preview the production build locally |
npm test |
Run the test suite with Vitest |
- Home — a short introduction about me.
- Skills — languages, frameworks, tools, and concepts I work with.
- Education — degree and relevant coursework.
- Experience — internships and professional training.
- Projects — selected projects I've built.
- Contact — ways to get in touch.
All content is editable through the Sanity Studio without touching code.
This project is licensed under the MIT License — see the LICENSE file for details.
Thanks for visiting! Questions or feedback are always welcome.
- Email: shawkyebrahim2514@gmail.com
- LinkedIn: shawkyebrahim2514