Skip to content

Eisha313/post-stream

Repository files navigation

Post Stream

Next.js TypeScript Tailwind CSS License: MIT

A minimal, fast, and SEO-friendly markdown-powered blog built with Next.js 14, featuring dynamic routing and server-side rendering.

✨ Features

  • 📝 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

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

# Clone the repository
git clone https://github.com/yourusername/post-stream.git
cd post-stream

# Install dependencies
npm install

# Start development server
npm run dev

Open http://localhost:3000 to see your blog.

📝 Writing Posts

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**!

Frontmatter Fields

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

📁 Project Structure

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

⚙️ Configuration

Site Settings

Update site metadata in app/layout.tsx:

export const metadata: Metadata = {
  title: 'Your Blog Name',
  description: 'Your blog description',
};

Styling

Customize colors and fonts in tailwind.config.js.

🚢 Deployment

See our Deployment Guide for detailed instructions on deploying to:

  • Vercel (recommended)
  • Netlify
  • Docker
  • Self-hosted servers

Quick Deploy to Vercel

Deploy with Vercel

📚 Documentation

🛠️ Scripts

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

🤝 Contributing

Contributions are welcome! Please read our Contributing Guide for details.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments


Made with ❤️ using Next.js

About

A minimal markdown-powered blog with dynamic routing and server-side rendering

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors