A modern, fast blog built with Next.js 16, TypeScript, Tailwind CSS, and MDX.
- Next.js 16 with App Router for optimal performance
- TypeScript for type safety
- Tailwind CSS for beautiful, responsive styling
- MDX for rich, interactive blog content
- Static Site Generation for lightning-fast page loads
- GitHub Pages deployment with automated CI/CD
- SEO Optimized with metadata and Open Graph support
- Syntax Highlighting for code blocks
- Reading Time estimation for posts
- Responsive Design that works on all devices
- Next.js 16 - React framework
- TypeScript - Type safety
- Tailwind CSS - Styling
- MDX - Markdown with JSX
- Gray Matter - Frontmatter parsing
- Rehype - HTML processing
- Remark - Markdown processing
- Node.js 20 or higher
- npm or yarn
- Clone the repository:
git clone https://github.com/sonicdmg/sonicdmg.github.io.git
cd sonicdmg.github.io- Install dependencies:
npm install- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
Blog posts are written in MDX format and stored in the content/posts/ directory.
- Create a new
.mdxfile incontent/posts/:
touch content/posts/my-new-post.mdx- Add frontmatter and content:
---
title: "My New Post"
date: "2026-02-26"
description: "A brief description of my post"
tags: ["nextjs", "typescript"]
category: "tutorial"
author: "David Gilardi"
---
# My New Post
Your content here...title(required): Post titledate(required): Publication date (YYYY-MM-DD)description(required): Brief description for SEOtags(optional): Array of tagscategory(optional): Post categoryauthor(optional): Author namedraft(optional): Set totrueto hide from production
The site automatically deploys to GitHub Pages when you push to the main branch.
- Build the site:
npm run build- The static files will be in the
out/directory.
- Go to your repository settings
- Navigate to Pages
- Set Source to "GitHub Actions"
- Push to main branch to trigger deployment
.
├── app/ # Next.js App Router pages
│ ├── blog/ # Blog pages
│ ├── about/ # About page
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Homepage
│ └── globals.css # Global styles
├── components/ # React components
├── content/ # Blog content
│ └── posts/ # MDX blog posts
├── lib/ # Utility functions
│ ├── posts.ts # Post fetching logic
│ ├── types.ts # TypeScript types
│ └── utils.ts # Helper functions
├── public/ # Static assets
├── .github/ # GitHub Actions workflows
├── next.config.ts # Next.js configuration
├── tailwind.config.ts # Tailwind configuration
└── tsconfig.json # TypeScript configuration
- Modify
tailwind.config.tsfor Tailwind customization - Edit
app/globals.cssfor global styles - Update color scheme in
app/layout.tsx
Update site metadata in app/layout.tsx:
export const metadata: Metadata = {
title: 'Your Site Title',
description: 'Your site description',
// ...
};MIT License - feel free to use this project for your own blog!
- Built with Next.js
- Styled with Tailwind CSS
- Deployed on GitHub Pages