A blog engine where you write first and categorize never.
Type two sentences without a title and it becomes a thought. Paste a URL with commentary and it becomes a link. Write something long with a title and it becomes an article. Three content types, inferred automatically from what you write. No database. No build step.
git clone https://github.com/1mb-dev/markgo && cd markgo
make build
./build/markgo init --quick
./build/markgo serve
# Visit http://localhost:3000Or download a release from GitHub Releases.
Write from anywhere — CLI for drafting in your editor, web compose form for publishing from your phone. Quick capture: tap the FAB, type a thought, hit Publish. Under 5 seconds.
SPA navigation — Instant page transitions. The router fetches HTML and swaps content — no full page reloads, no client-side rendering framework.
Works offline — Installable PWA with Service Worker. Pages cached for offline reading. Compose queue syncs when you're back online.
Mobile-native feel — Bottom navigation, full-screen search overlay, visual viewport handling for iOS keyboards. CSS starts at 320px and works up.
Your files, your control — Articles are markdown files with YAML frontmatter. Edit in vim, version with git, back up however you like. The compose form writes files to disk — it's a convenience layer, not a lock-in.
Zero dependencies — Single Go binary with embedded web assets. No Node.js, no PHP, no database. markgo init creates only your content directory and config.
markgo serve # Start the web server
markgo init [--quick] # Initialize a new blog
markgo new [--title "..." --tags "..."] # Create an article
markgo new --type thought # Quick thought (no title needed)
markgo new --type link # Share a linkCopy .env.example to .env:
BLOG_TITLE="Your Blog Title"
BLOG_AUTHOR="Your Name"
BASE_URL="https://yourdomain.com"Admin credentials enable the compose form, admin panel, and login:
ADMIN_USERNAME=you
ADMIN_PASSWORD=something-strongSee Configuration Guide for all options.
Docker:
docker compose up -dSee Deployment Guide for systemd, reverse proxy, and production setup.
make dev # Dev server with hot reload
make build # Build binary
make lint # golangci-lint
make test # Run tests
make test-race # Race detector
make coverage # Coverage report- Getting Started — Install, first post, and features overview
- Configuration — All environment variables
- Architecture — How the system works
- API — Every HTTP endpoint
- Deployment — Docker, systemd, reverse proxy
- Design Language — The principles behind every decision
MIT License — see LICENSE.