Skip to content

High-performance Go blog engine with file-based content. Runs as dynamic server or exports to static HTML. 30MB footprint, sub-second startup.

License

Notifications You must be signed in to change notification settings

vnykmshr/markgo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

240 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

MarkGo

CI Go Version License

A high-performance blog engine built with Go. MarkGo combines file-based content management with a dynamic web server.

Live Demo

Quick Start

Download a release from GitHub Releases, or build from source:

git clone https://github.com/vnykmshr/markgo && cd markgo
make build

./build/markgo init --quick
./build/markgo serve
# Visit http://localhost:3000

See Getting Started Guide for detailed setup instructions.

Features

Performance

  • Server ready in under 1 second
  • 30MB memory footprint, ~27MB binary
  • In-memory caching with no external dependencies
  • No runtime requirements (Node.js, PHP, databases)

Content Management

  • Markdown files with YAML frontmatter
  • Git-based workflow for version control
  • CLI tools for article creation and export

Production Ready

  • Docker deployment support
  • Static site export (GitHub Pages, Netlify, Vercel)
  • Built-in security: rate limiting, CORS, input validation
  • SEO automation: sitemaps, Schema.org, Open Graph, Twitter Cards
  • Full-text search and RSS/JSON feeds

Developer Experience

  • Clean architecture with separated concerns
  • Unified CLI with subcommands
  • Environment variable configuration
  • Extensive documentation

Usage

markgo init [--quick]                    # Initialize a new blog
markgo serve                             # Start the web server
markgo new [--title "..." --tags "..."]  # Create an article
markgo export --output ./public          # Export to static site

Configuration

Configure via environment variables. Copy .env.example to .env:

BLOG_TITLE="Your Blog Title"
BLOG_AUTHOR="Your Name"
BASE_URL="https://yourdomain.com"
CACHE_ENABLED=true
SEARCH_ENABLED=true

See Configuration Guide for complete options.

Deployment

Static export (GitHub Pages, Netlify, Vercel):

markgo export --output ./public --base-url https://yourdomain.com

Docker:

docker compose up -d

Manual (systemd):

make build
scp build/markgo server:/usr/local/bin/
sudo cp deployments/markgo.service /etc/systemd/system/
sudo systemctl enable --now markgo

See Deployment Guide and Static Export Guide for details.

Development

make dev             # Start dev server with hot reload
make build           # Build for current platform
make build-release   # Build for all platforms
make fmt             # Format code
make lint            # Run linter (golangci-lint v2)
make test            # Run tests
make test-race       # Run tests with race detection
make coverage        # Generate coverage report

Documentation

Contributing

Contributions welcome. See Contributing Guide for details.

License

MIT License - see LICENSE file.


Made with Go

About

High-performance Go blog engine with file-based content. Runs as dynamic server or exports to static HTML. 30MB footprint, sub-second startup.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 2

  •  
  •