A minimal, fast, and SEO-friendly markdown-powered blog built with Next.js 14, featuring dynamic routing and server-side rendering.
- 📝 Markdown-Powered - Write posts in markdown with frontmatter support
- 🚀 Server-Side Rendering - Fast initial page loads with SSR
- 🔍 SEO Optimized - Automatic meta tags, Open Graph, and sitemap generation
- 📱 Responsive Design - Beautiful reading experience on all devices
- ⚡ Fast Performance - Optimized caching and minimal JavaScript
- 📰 RSS Feed - Auto-generated RSS feed for subscribers
- ⏱️ Reading Time - Automatic reading time estimates
- 🎨 Typography - Beautiful prose styling with Tailwind Typography
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/yourusername/post-stream.git
cd post-stream
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:3000 to see your blog.
Create markdown files in the /posts directory:
---
title: My First Post
date: '2024-01-15'
excerpt: A brief description of your post
author: Your Name
tags:
- nextjs
- blog
---
# Your content here
Write your post content in **markdown**!| Field | Required | Description |
|---|---|---|
title |
Yes | Post title |
date |
Yes | Publication date (YYYY-MM-DD) |
excerpt |
No | Brief description for previews |
author |
No | Author name |
tags |
No | Array of tags |
image |
No | Cover image URL |
post-stream/
├── app/
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Home page
│ ├── not-found.tsx # 404 page
│ ├── posts/
│ │ └── [slug]/
│ │ └── page.tsx # Individual post page
│ └── feed.xml/
│ └── route.ts # RSS feed endpoint
├── components/
│ ├── Header.tsx # Site header
│ ├── Footer.tsx # Site footer
│ └── PostCard.tsx # Post preview card
├── lib/
│ ├── posts.ts # Post loading utilities
│ ├── markdown.ts # Markdown processing
│ ├── seo.ts # SEO utilities
│ ├── feed.ts # RSS generation
│ ├── reading-time.ts # Reading time calculator
│ ├── cache.ts # Caching utilities
│ └── types.ts # TypeScript types
├── posts/ # Your markdown posts
│ └── welcome.md
└── docs/ # Documentation
├── API.md
├── CONTRIBUTING.md
└── DEPLOYMENT.md
Update site metadata in app/layout.tsx:
export const metadata: Metadata = {
title: 'Your Blog Name',
description: 'Your blog description',
};Customize colors and fonts in tailwind.config.js.
See our Deployment Guide for detailed instructions on deploying to:
- Vercel (recommended)
- Netlify
- Docker
- Self-hosted servers
- API Reference - Library functions and utilities
- Contributing Guide - How to contribute
- Deployment Guide - Deployment instructions
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run start |
Start production server |
npm run lint |
Run ESLint |
Contributions are welcome! Please read our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js - The React Framework
- Tailwind CSS - Utility-first CSS
- gray-matter - Frontmatter parsing
- remark - Markdown processing
Made with ❤️ using Next.js