A minimal, SEO-optimized personal website built with React, TypeScript, Vite, and Tailwind CSS.
- ✨ Minimal, centered single-column layout (544px max width)
- 🌙 Dark mode support with system preference detection
- 📝 MDX-powered blog with automatic content indexing
- 🔍 SEO-optimized with Open Graph, Twitter Cards, and JSON-LD
- 📱 Fully responsive design
- ⚡ Fast builds with Vite
- Framework: React 18 with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS v3
- Routing: React Router v6
- Content: MDX for blog posts
- UI Components: Radix UI primitives
- Deployment: Vercel
/
├── components/ # React components
│ ├── ui/ # Radix UI components
│ └── figma/ # Figma import components
├── content/ # MDX content files
│ └── writing/ # Blog articles (*.mdx)
├── data/ # Static data and article metadata
├── hooks/ # Custom React hooks
├── imports/ # SVG imports from Figma
├── pages/ # Page components
├── scripts/ # Build scripts
│ ├── generate-mdx-index.js # Auto-generates content index
│ └── fix-imports.js # Fixes versioned imports
├── styles/ # Global styles and Tailwind config
├── utils/ # Utility functions
├── App.tsx # Main app component
├── main.tsx # React entry point
└── index.html # HTML entry point
- Node.js >= 18.0.0
- npm or yarn
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview- Create a new
.mdxfile in/content/writing/ - Add frontmatter with required fields:
---
title: Your Article Title
description: Brief description for SEO
publishDate: DD.MMM.YYYY
author: Your Name
ogImage: https://yourdomain.com/og-image.jpg
keywords: keyword1, keyword2, keyword3
---
Your article content here...- Add the article entry to
/data/articles.ts - Run
npm run generate-mdxto rebuild the content index
npm run generate-mdx- Generates content index from MDX filesnpm run fix-imports- Fixes versioned package importsnpm run test-mdx- Tests MDX generation
Note: The content index (/content/writing/index.ts) is auto-generated. Never edit it manually!
The build process runs automatically in this order:
- Fix Imports - Removes version numbers from import statements
- Generate MDX Index - Creates the content index from MDX files
- Vite Build - Builds the production bundle
The project is configured for zero-config deployment on Vercel:
- Push your code to GitHub
- Import the repository in Vercel
- Deploy! Vercel will automatically:
- Install dependencies
- Run build scripts
- Deploy to production
npm run buildThe build output will be in the /dist directory.
vite.config.ts- Vite configurationtailwind.config.js- Tailwind CSS configurationpostcss.config.js- PostCSS configurationtsconfig.json- TypeScript configurationvercel.json- Vercel deployment settings
- Server-side meta tags (Open Graph, Twitter Cards)
- JSON-LD structured data for Person and WebSite
- Semantic HTML with proper heading hierarchy
- Optimized images with alt text
- Canonical URLs for all pages
- Dynamic meta tags per page/article
Open source - feel free to use as a template for your own site!
Built by Akash Bhadange (@designerdada)