Daniel's Blog
2 min read

Static Blog Editor

Table of Contents

Static Blog Editor Demo

License: MIT Python 3.11+ Next.js 14

Project Overview

Static Blog Editor is a full-stack visual blog editor designed specifically for static site generators (such as Astro, Hugo, Jekyll, Eleventy, Gatsby, etc.). Through GitHub OAuth authentication, it allows you to create, edit, and publish blog posts via a modern web interface without manually editing files.

Why Build This Project?

Previously tried Keystatic as a CMS for my blog, but found it cumbersome to configure and the user experience wasn’t great. So I decided to build my own, creating a simpler and more user-friendly blog editor.

Core Features

  • GitHub Integration - OAuth authentication, manage blog content directly through GitHub API
  • Visual Editor - BlockNote-based Markdown editor with real-time preview
  • Image Processing - Drag-and-drop upload with automatic image optimization
  • Auto-save Drafts - Automatically save drafts locally while writing, no content loss even if you accidentally close the page
  • Dark Mode - Full dark theme support
  • Responsive Design - Optimized for both desktop and mobile devices

Tech Stack

Backend

  • FastAPI (Python 3.11+)
  • PyGithub for GitHub API interactions
  • Pillow for image optimization
  • Pydantic for data validation

Frontend

  • Next.js 14 (App Router)
  • TypeScript & React 18
  • shadcn/ui component library
  • TailwindCSS
  • Zustand state management
  • TanStack React Query

Quick Start

# Backend
cd blog-editor-api
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000

# Frontend
cd blog-editor-web
npm install
npm run dev

License

MIT License