Skip to content

tszhong0411/nelsonlai.me

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Cover

nelsonlai.me

Framework Language License

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.

Features

Core Technologies

  • Next.js 15 with App Router
  • TypeScript with strict configuration
  • Tailwind CSS for styling
  • MDX for content
  • Drizzle ORM
  • I18n for internationalization support

UI/UX

  • 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

Blog Features

  • Comment system
  • Like Functionality
  • Post view counter
  • Blog post search
  • RSS feed
  • Sitemap

Performance & SEO

  • Lighthouse score of nearly 100
  • SEO optimized with meta tags and JSON-LD
  • Open graph images using next/og

Development Experience

  • Vitest for unit/integration testing
  • Playwright for E2E testing
  • ESLint configuration
  • Prettier code formatting
  • Husky & lint-staged
  • Conventional commit lint
  • CSpell for spell checking

Authentication & Data

  • Better Auth
  • Redis caching
  • Upstash for API rate limiting
  • t3-env for environment variables
  • Umami Analytics

Email Templates

Comment Notification

Comment notification template

Reply Notification

Reply notification template

Getting Started

Prerequisites

Development

To run this project locally, you need to set up the development environment.

Setup

  1. Clone the repository:
git clone https://github.com/tszhong0411/nelsonlai.me
  1. Navigate to the project directory:
cd nelsonlai.me
  1. Install dependencies using pnpm:
pnpm install

Environment Setup

  1. Copy .env.example to .env.local and update the environment variables as needed.
cp .env.example .env.local
  1. Run required services using Docker:
docker compose up -d
  1. Run the database migrations:
pnpm db:migrate
  1. Seed the database:
pnpm db:seed
  1. 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

Credits

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:

Referenced the following projects for inspiration:

and more but I can't remember them all

Author

Donation

If you find this project helpful, consider supporting me by sponsoring the project.

License

This project is open source and available under the MIT License.