Karhdo.dev
My 🏡 in the ☁: Featuring my portfolio, showcases, code snippets, development logs, and creative ideas.
Install / Use
/learn @Karhdo/Karhdo.devREADME
Website
<a href="https://karhdo-blog.vercel.app"><img src="https://raw.githubusercontent.com/Karhdo/karhdo.dev/main/public/static/images/projects/karhdo-blog.png" alt="Image Karhdo's Blog Website" /></a>
Tech Stack
This blog is hosted on Vercel, built with Next.js and Tailwind CSS using Tailwind Nextjs Starter Blog.
This blog site takes inspiration from lehuynh.dev. I appreciate Leo Huynh and Timothy Lin for their contribution to this minimal, lightweight, and highly customizable blog starter.
A few major over-engineering-changes from the original repo:
- ⚛️ Upgrading to React 19, NextJS 16
- 🎉 Adopting Typescript, committing with Conventional Commits
- 👀 Theming in dark mode with Tokyonight Neovim Theme colors for better contrast.
- 👨💻 My website refers to the design and code from the lehuynh.dev repository and incorporates the tailwind-nextjs-starter-blog template, version 1.0.
- 📥 Bumping up
mdx-bundler,rehype/remarkplugins and dependencies to the latest version
Docker Deployment
Run the blog using Docker with standalone output mode for optimized image size (~200-300MB).
Quick Start
- Create a
.envfile with required environment variables:
POSTGRES_URL=postgresql://postgres:postgres@postgres:5432/karhdo_blog
GITHUB_API_TOKEN=your_github_token
SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
SPOTIFY_REFRESH_TOKEN=your_spotify_refresh_token
NEXT_PUBLIC_GISCUS_REPO=your_username/your_repo
NEXT_PUBLIC_GISCUS_REPOSITORY_ID=your_repo_id
NEXT_PUBLIC_GISCUS_CATEGORY=your_category
NEXT_PUBLIC_GISCUS_CATEGORY_ID=your_category_id
- Start services:
docker compose up -d
- Run migrations:
docker compose exec app pnpm prisma:migrate:deploy
- Access at http://localhost:3000
Docker Image: Node.js 24 Alpine with multi-stage build (deps → builder → runner) running as non-root user.
Express Your Support
If this project has been beneficial, show your appreciation with a ⭐
Image Credits
The images utilized within this blog originate from Unsplash, GIFs are sourced from GIPHY, and illustrations are from Storyset.
Extending sincere thanks for these exceptional resources 🙏
<p align="center"><b>Copyright © 2026 - Do Trong Khanh (Karhdo)</b></p> <!-- MARKDOWN LINKS & IMAGES --> <!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
