nik_blog
TypeScriptOther
This is my personal blog built with Next.js 15. It has a minimal UI and supports dark/light mode.
- Stars
- 0
- Forks
- 1
- Open issues
- 1
My Blog
This is my personal blog built with Next.js 15. It has a minimal UI and supports dark/light mode. I write posts as Markdown files in the posts/ folder.
Features
- Pages: Home, Blog, Projects, Contact
- Markdown posts:
.mdfiles inposts/are auto-listed on/blogand rendered at/blog/[slug] - Dark/Light mode: toggle in the header (saved in
localStorage) - Static generation for fast, SEO-friendly pages
- Tailwind v4 styling with simple design tokens in
app/globals.css
Stack
- Next.js 15, React 19, TypeScript
- Tailwind CSS v4
- gray-matter, remark, remark-html
Run locally
npm install
npm run dev
# open http://localhost:3000
Production build:
npm run build
npm start
Structure
app/
layout.tsx # Layout, header, footer, theme
page.tsx # Home
projects/page.tsx # Projects list
projects/[slug/]/page.tsx # Project page
blog/page.tsx # Blog list
blog/[slug]/page.tsx # Blog post
contact/page.tsx # Contact
ThemeToggle.tsx # Theme switcher (client)
lib/
md.ts # Markdown parsing + helpers
github.ts # Fetches data from GitHub API
utils.ts # Reusable utility functions
posts/ # My posts
Theming notes
- Class-based dark mode (
.dark) to avoid flashes - Theme tokens in
app/globals.css(--background,--foreground, etc.) - Toggle component lives in the header (
ThemeToggle)
Optional next steps
- Set
metadataBase(site URL) inapp/layout.tsx - Add
sitemapandrobotsif needed - Add an OG image generator
License (public repo note)
All code and content in this repository are © 2025 Nikita Tysiachnyi. All rights reserved. See LICENSE.