This repository contains the source code for my personal portfolio website, built with Next.js, Tailwind CSS, and Sanity. The project is structured as a monorepo using pnpm workspaces and is managed with Turborepo.
This project is proof of work: long-form, first-person case studies grounded in real code, with snippets linked back to their repositories. Rather than a services-and-pricing template, it's built to show how I think while I ship — decisions, dead ends, and trade-offs — with interactive annotated code as the centerpiece. It's open-source, easily customizable, and deployable, with a Next.js frontend and a Sanity CMS backend for content management.
This monorepo is organized using pnpm workspaces and Turborepo. The workspaces are located in the apps and packages directories:
apps/web: The Next.js frontend application.apps/studio: The Sanity CMS studio for content management.packages/*: Shared packages and utilities, including@v2/sanity-schemasfor type-safe Sanity content.
- Node.js (v24 or later)
- pnpm (v11 or later)
- Sanity CLI (install globally)
-
Clone the repository:
git clone https://github.com/Maiz27/v2.git cd v2 -
Install dependencies from the root directory:
pnpm install
-
Set up environment variables:
- For the web app, copy
.env.exampleto.envinapps/weband provide your Sanity project details. - For the Sanity studio, please refer to the detailed instructions in the studio README.
- For the web app, copy
This project uses Turborepo to manage scripts. You can run the following commands from the root directory:
-
To start all applications in development mode:
pnpm dev
-
To build all applications for production:
pnpm build
-
To lint all applications:
pnpm lint
You can also run scripts for individual applications:
pnpm dev:web: Starts the development server for the web app.pnpm dev:studio: Starts the development server for the Sanity studio.pnpm build:web: Builds the web app for production.pnpm build:studio: Builds the Sanity studio for production.pnpm lint:web: Lints the web app.pnpm lint:studio: Lints the Sanity studio.pnpm generate:types: Extracts the Sanity schema and regenerates the type-safe content types.
Contributions are welcome! Please fork the repository and create a pull request with your changes.
This project is open-source and available under the MIT License.
