Ink
Markdown-Native CMS
What it is
Ink is a content management system built entirely around Markdown files. No database. No admin panel. Your content is plain text files versioned with Git, built into a fast static site by Eleventy v3, and deployable to any CDN.
The idea came from watching people fight WordPress for sites that didn't need WordPress. Most small business sites, portfolios, and documentation projects need five things: a way to write content, a way to organize it, a design system that doesn't fall apart, a build step, and somewhere to host it. Ink handles the first four and stays out of the way on the fifth.
How it works
The project is a monorepo with four packages:
| Package | What it does | Status |
|---|---|---|
| CLI | Scaffolds projects, creates content, manages content types | v1.0 (stable) |
| Starter | Eleventy v3 template with layouts, components, and design tokens | v0.1 (beta) |
| Desktop App | Electron editor with live preview, media management, Git publishing, and AI assistant | Alpha |
| Site | Marketing/docs site at get.ink — built with Ink itself | Beta |
A typical workflow looks like:
npx ink init my-site # scaffold a new project
cd my-site
npx ink add blog # add blog content type
npx ink add blog "My Post" # create a new post
npx ink serve # start dev server
npx ink build # build for production
The CLI generates the Markdown file with correct frontmatter, drops it in the right directory, and registers it with the Eleventy collection system. The build outputs a _site/ folder you can deploy anywhere.
Content types
Ink ships with eight content types, each with its own frontmatter schema, layout template, archive page, and directory structure:
| Type | Use case |
|---|---|
| Blog | Posts with dates, authors, tags, and featured images |
| Docs | Documentation with ordered sections |
| Team | Staff profiles with photos and roles |
| Services | Service descriptions with icons and pricing |
| Features | Product feature pages |
| Portfolio | Project showcases with galleries |
| FAQ | Q&A pairs organized by category |
| Service Areas | Location-based pages for local SEO |
Adding a content type is one command — ink add docs — and everything from the directory to the archive page gets created automatically.
Component library
Twelve ready-made UI components ship with the starter template:
- contact-form — Formspree/Netlify compatible
- feature-grid — Auto-pulls from your features collection
- testimonials — Carousel or grid layout
- pricing-table — Tiered pricing cards
- stats-counter — Animated numbers
- image-gallery — Responsive grid with lightbox
- tabs — Tabbed content sections
- logo-cloud — Client/partner logos
- newsletter-signup — Email capture
- timeline — Vertical timeline
- modal — Accessible dialogs
- social-share — Share buttons
Components are Nunjucks includes with scoped CSS. Drop them into any page with a single line.
Design token system
The entire visual identity is controlled through CSS custom properties in a single file. Change one variable, the whole site follows:
:root {
--color-primary: #2563eb;
--font-body: 'Inter', sans-serif;
--spacing-md: 1.5rem;
--radius-default: 0.5rem;
}
Colors, typography, spacing, shadows, breakpoints — all configurable from one place. No digging through component files.
Obsidian compatibility
The content directory is structured to work as an Obsidian vault. Open your project's content/ folder in Obsidian and you get a rich visual editor, backlinks, graph view, and full Markdown preview — while Ink handles the build and deployment. Obsidian templates are included for each content type.
Desktop app
The Electron desktop app provides a full visual editing environment:
- Project management — Create, open, and switch between Ink projects
- Markdown editor — CodeMirror 6 with syntax highlighting and live frontmatter forms
- Split-pane preview — Live Eleventy dev server rendered alongside the editor
- Media management — Organize and insert images by content type
- Git publishing — Stage, commit, and push without touching the terminal
- AI assistant — Claude or GPT integration for writing help and content generation
- Theme customizer — Live visual editor for design tokens with color pickers and font selectors
The app is in alpha — core editing and preview work, edge cases are still being ironed out.
Deployment
Ink sites are static HTML. Deploy to anything:
| Platform | Setup |
|---|---|
| Cloudflare Pages | Connect repo, set build command to npx @11ty/eleventy, output dir _site/ |
| Netlify | Same as above, auto-detected |
| Vercel | npm run build, output _site/ |
| GitHub Pages | Build in CI, publish _site/ |
The starter includes pre-configured _redirects and _headers files for Cloudflare and Netlify.
Why I built it
I've set up dozens of sites over 10 years in IT. The same pattern kept repeating: a client needs a site, WordPress is overkill, but hand-coding HTML from scratch doesn't scale either. Ink fills that gap — enough structure to move fast, enough simplicity that there's nothing to maintain.
The content is yours. It's Markdown files in a Git repo. If Ink disappears tomorrow, you still have your content in a universally readable format.
Project resources