Welcome to the monorepo of my personal blog! This repository houses the code for my blog, where I share my thoughts, projects, and insights. Feel free to explore and get inspired.
- Next.js 15 with App Router
- TypeScript with strict configuration
- Tailwind CSS for styling
- MDX for content
- Drizzle ORM
- I18n for internationalization support
- Radix UI for accessible UI components
- Responsive design
- Light/Dark mode
- Image zoom in blog posts
- Shiki for code syntax highlighting
- Motion for animations
- Table of contents for blog posts
- Comment system
- Like Functionality
- Post view counter
- Blog post search
- RSS feed
- Sitemap
- Lighthouse score of nearly 100
- SEO optimized with meta tags and JSON-LD
- Open graph images using
next/og
- Vitest for unit/integration testing
- Playwright for E2E testing
- ESLint configuration
- Prettier code formatting
- Husky & lint-staged
- Conventional commit lint
- CSpell for spell checking
- Better Auth
- Redis caching
- Upstash for API rate limiting
- t3-env for environment variables
- Umami Analytics
- Node, recommended
>=22
with corepack enabled - pnpm, recommended
>=9
- Docker
- Visual Studio Code with recommended extensions
- Optionally React Developer Tools
To run this project locally, you need to set up the development environment.
- Clone the repository:
git clone https://github.com/tszhong0411/nelsonlai.me
- Navigate to the project directory:
cd nelsonlai.me
- Install dependencies using pnpm:
pnpm install
- Copy
.env.example
to.env.local
and update the environment variables as needed.
cp .env.example .env.local
- Run required services using Docker:
docker compose up -d
- Run the database migrations:
pnpm db:migrate
- Seed the database:
pnpm db:seed
- Run the app:
pnpm dev # Run all services
# or
pnpm dev:web # Run only the web app
# or
pnpm dev:docs # Run only the documentation app
The services will be available at the following URLs:
Service | URL |
---|---|
App | localhost:3000 |
React Email | localhost:3001 |
Docs | localhost:3002 |
Database | localhost:5432 |
Redis | localhost:6379 |
Redis serverless | localhost:8079 |
This project has been possible thanks to the wonderful open-source community. Special thanks to Timothy for the Tailwind nextjs starter blog template.
This project also uses/adapts the following open-source projects.
Without them, this project would not have been possible:
- Comment System - from fuma-comment
- Rehype Plugins - from fumadocs
- UI - from shadcn/ui
- ESLint config - from @antfu/eslint-config
- Admin UI - from shadcn-admin
Referenced the following projects for inspiration:
- fumadocs
- leerob.io
- nerdfish.be
- nextra.site
- theodorusclarence.com
- ped.ro
- delba.dev
- joshwcomeau.com
- blog.maximeheckel.com
- zenorocha.com
- jahir.dev
- anishde.dev
- nikolovlazar.com
- samuelkraft.com
- bentogrids.com
- ui.aceternity.com
- hover.dev
- vocs.dev
and more but I can't remember them all
If you find this project helpful, consider supporting me by sponsoring the project.
This project is open source and available under the MIT License.