mirror of
https://github.com/waynesutton/markdown-site.git
synced 2026-01-12 04:09:14 +00:00
168 lines
7.0 KiB
Markdown
168 lines
7.0 KiB
Markdown
---
|
|
title: "About"
|
|
slug: "about"
|
|
published: true
|
|
order: 2
|
|
excerpt: "An open-source publishing framework built for AI agents and developers to ship websites, docs, or blogs."
|
|
---
|
|
|
|
An open-source publishing framework built for AI agents and developers to ship websites, docs, or blogs. Two ways to publish: write markdown and sync from the terminal, or use the web dashboard. Your content is instantly available to browsers, LLMs, and AI agents. Built on Convex and Netlify.
|
|
|
|
## What makes it a dev sync system?
|
|
|
|
**File-based content.** Posts and pages live in `content/blog/` and `content/pages/` as markdown files with frontmatter. Version controlled in your repo. The dashboard provides a web UI for creating and editing content directly in the database.
|
|
|
|
**CLI publishing workflow.** Write markdown locally, then run `npm run sync` (dev) or `npm run sync:prod` (production). Content appears instantly via Convex real-time sync. Images require git commit and push since they are served as static files from Netlify.
|
|
|
|
**Dashboard workflow.** Create and edit content at `/dashboard` without touching files. Dashboard content saves directly to the database with `source: "dashboard"` tracking. Export to markdown files with `npm run export:db` when needed.
|
|
|
|
**Sync commands:**
|
|
|
|
Sync command scripts are located in `scripts/` (sync-posts.ts, sync-discovery-files.ts).
|
|
|
|
**Development:**
|
|
|
|
- <span class="copy-command">npm run sync</span> - Sync markdown content
|
|
- <span class="copy-command">npm run sync:discovery</span> - Update discovery files (AGENTS.md, llms.txt)
|
|
- <span class="copy-command">npm run sync:all</span> - Sync content + discovery files together
|
|
|
|
**Production:**
|
|
|
|
- <span class="copy-command">npm run sync:prod</span> - Sync markdown content
|
|
- <span class="copy-command">npm run sync:discovery:prod</span> - Update discovery files
|
|
- <span class="copy-command">npm run sync:all:prod</span> - Sync content + discovery files together
|
|
|
|
**Export dashboard content:**
|
|
|
|
- <span class="copy-command">npm run export:db</span> - Export dashboard posts/pages to content folders (development)
|
|
- <span class="copy-command">npm run export:db:prod</span> - Export dashboard posts/pages (production)
|
|
|
|
**Version controlled.** Markdown source files live in your repo alongside code. Commit changes, review diffs, roll back like any codebase. The sync command pushes content to the database.
|
|
|
|
```bash
|
|
# Edit a post, then commit and sync
|
|
git add content/blog/my-post.md
|
|
git commit -m "Update intro paragraph"
|
|
npm run sync # dev
|
|
npm run sync:prod # production
|
|
```
|
|
|
|
**Dual source architecture.** File-synced content (`source: "sync"`) and dashboard content (`source: "dashboard"`) coexist. Neither overwrites the other. Use whichever workflow fits your needs.
|
|
|
|
## The real-time twist
|
|
|
|
<a href="https://convex.dev"><img src="/images/logos/convex-wordmark-black.svg" alt="Convex" width="120" /></a>
|
|
|
|
What separates this from a static site generator is the Convex real-time database. Once you sync content:
|
|
|
|
- All connected browsers update immediately
|
|
- No rebuild or redeploy needed
|
|
- Search, stats, and RSS update automatically
|
|
|
|
It's a hybrid: developer workflow for publishing + real-time delivery like a dynamic CMS.
|
|
|
|
## The stack
|
|
|
|
| Layer | Technology |
|
|
| -------- | ------------------ |
|
|
| Frontend | React + TypeScript |
|
|
| Backend | Convex |
|
|
| Styling | CSS variables |
|
|
| Hosting | Netlify |
|
|
| Content | Markdown |
|
|
|
|
## Features
|
|
|
|
**Themes and UI:**
|
|
|
|
- Four theme options (dark, light, tan, cloud)
|
|
- Font switcher (serif, sans, monospace) with localStorage persistence
|
|
- Mobile menu with hamburger navigation on smaller screens
|
|
- Image lightbox for full-screen image viewing when clicked
|
|
- Scroll-to-top button with configurable threshold
|
|
|
|
**Content and navigation:**
|
|
|
|
- Sidebar layout for docs-style pages with table of contents
|
|
- Right sidebar with CopyPageDropdown on wide screens
|
|
- Featured section with list/card view toggle and excerpts
|
|
- Dedicated blog page with hero cards and featured rows
|
|
- Tag pages at `/tags/{tag}` with related posts in footer
|
|
- Homepage configuration to use any page or post as homepage
|
|
|
|
**Search and discovery:**
|
|
|
|
- Dual search modes: Keyword (exact match) and Semantic (meaning-based) with Cmd+K toggle
|
|
- Semantic search uses OpenAI embeddings for finding conceptually similar content
|
|
- Ask AI header button (Cmd+J) for RAG-based Q&A about site content with streaming responses
|
|
- Full text search with Command+K shortcut and result highlighting
|
|
- Static raw markdown files at `/raw/{slug}.md`
|
|
- RSS feeds (`/rss.xml` and `/rss-full.xml`) and sitemap for SEO
|
|
- API endpoints for AI/LLM access (`/api/posts`, `/api/export`)
|
|
- HTTP-based MCP server at `/mcp` for AI tool integration (Cursor, Claude Desktop)
|
|
|
|
**Sharing and AI integration:**
|
|
|
|
- Copy to ChatGPT, Claude, and Perplexity sharing buttons
|
|
- Generate Skill option for AI agent training
|
|
- View as Markdown option in share dropdown
|
|
|
|
**Content creation:**
|
|
|
|
- Markdown writing page at `/write` with frontmatter reference
|
|
- AI Agent chat powered by Anthropic Claude (toggle in Write page or right sidebar)
|
|
- Firecrawl content importer (`npm run import <url>`) for external articles
|
|
|
|
**Dashboard and admin:**
|
|
|
|
- Dashboard at `/dashboard` for content management and site configuration
|
|
- Posts and pages editor with live preview and frontmatter sidebar
|
|
- Sync commands UI for executing syncs from browser
|
|
- Newsletter management with AgentMail integration and admin UI
|
|
- Real-time analytics at `/stats` with visitor map
|
|
|
|
**Newsletter and contact:**
|
|
|
|
- Newsletter signup forms on homepage, blog page, and posts
|
|
- Contact forms on pages/posts via frontmatter with AgentMail delivery
|
|
- Email notifications for new subscribers and weekly stats
|
|
|
|
**Version control:**
|
|
|
|
- 3-day version history for posts and pages (similar to Obsidian Sync)
|
|
- Automatic snapshots before every content change (sync or dashboard edit)
|
|
- Side-by-side diff view to compare versions
|
|
- One-click restore with automatic backup of current version
|
|
- Toggle to enable/disable via dashboard settings
|
|
|
|
**Developer and AI agent support:**
|
|
|
|
- CLAUDE.md for Claude Code instructions and workflows
|
|
- AGENTS.md for AI coding agent context (agents.md spec)
|
|
- Skills files in `.claude/skills/` (frontmatter, convex, sync)
|
|
- Sync discovery commands to update AGENTS.md, CLAUDE.md, and llms.txt
|
|
- Optional WorkOS authentication for dashboard access
|
|
- GitHub contributions graph with year navigation
|
|
- Logo gallery with clickable links and static grid or marquee scroll
|
|
|
|
## Who this is for
|
|
|
|
- Developers who want version-controlled content
|
|
- Teams comfortable with markdown and CLI
|
|
- Projects where AI agents generate content programmatically
|
|
- Sites that need real-time updates without full rebuilds
|
|
|
|
## Fork configuration
|
|
|
|
After forking, configure your site with a single command:
|
|
|
|
```bash
|
|
cp fork-config.json.example fork-config.json
|
|
# Edit fork-config.json
|
|
npm run configure
|
|
```
|
|
|
|
Or follow the manual guide in `FORK_CONFIG.md`. Both options update all 11 configuration files with your site information.
|
|
|
|
Fork it, customize it, ship it.
|