Skip to content

Latest commit

 

History

278 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

whexy.com (whexy1999)

Yet Another Blog system with Next.js

Live Demo

Overview

  • app/* - All pages, layouts, static and dynamic routes, with Next.js 13 Layouts RFC.
    • app/posts/* - Blog posts with Markdown X and server-side customized components.
    • app/dyn/* - Realtime updated posts (I call them "dynamic blogs") with Notion as the backend CMS.
  • components/* - React components designed for boosting the reading experience.
  • lib/* - Collection of helpful utilities or code for external services.
  • public/* - Static assets including images, files, etc.
  • styles/* - Customized code highlighting, LaTeX math support, and global CSS config.

Dynamic Content with Static Speed

From version 2.0, All data, even for GitHub star numbers and Bilibili video information, is fetched, updated and processed on the edge server in real-time. When you open the page, there will be no local API calls. You will immediately receive pure HTML content with cached data from the server. As you read, the data on the page will continuously update with the latest version streamed from an edge server behind-the-scenes.

Learn more

I've written a post discussing how to design a blog system.

Running Locally

$ git clone https://github.com/whexy/blog-1999.git
$ cd blog-1999
$ pnpm install
$ pnpm run dev

With Nix

The project is Nix-managed using the numtide/blueprint layout. A reproducible toolchain (Node.js 22, pnpm 10, TypeScript) is provided via a flake devshell:

$ nix develop          # enter the dev shell, then `pnpm install && pnpm run dev`
$ nix flake check      # run lint + typecheck in a sandbox (offline)
$ nix fmt              # format the tree (prettier + nixfmt via treefmt)

Entering the dev shell installs git-hooks.nix pre-commit hooks (treefmt formatting, ESLint, tsc, nil/statix), which then run on every git commit.

With direnv, the dev shell loads automatically on cd:

$ direnv allow         # one-time, picks up .envrc

The Nix files live under nix/ (devshell.nix, formatter.nix, treefmt.nix, pre-commit-check.nix, checks/, packages/).

Cloning / Fork

Please follow the MIT license and remove all of my personal information (resume, blog posts, images, etc.).

Special Thanks

The blog system is inspired by Leerob, the Director of Developer Relations at Vercel. His Next.js blog repo: https://github.com/leerob/leerob.io

About

Yet Another Blog system with Next.js

Topics

Resources

Stars

50 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages