Welcome
Getting started with Acachy CMS
Welcome to the Acachy CMS documentation.
Overview
Acachy is a headless CMS built with modern technologies:
- Fastify — High-performance Node.js HTTP framework
- TypeScript — Type safety across the entire codebase
- Drizzle ORM — Lightweight, type-safe SQL ORM
- PostgreSQL — Reliable database (via Supabase)
Architecture
Acachy follows a modular architecture within a Turborepo monorepo:
acachy-cms/
├── apps/
│ ├── api/ # Fastify API server
│ └── docs/ # Documentation site
├── packages/
│ ├── shared/ # Shared types
│ ├── ui/ # UI components
│ ├── eslint-config/
│ └── typescript-config/
├── database/
│ └── schema/ # Database schema
└── package.jsonAPI
The API is available at http://localhost:3333.
Authentication
POST /api/admin/auth/login
{
"email": "admin@acachy.com",
"password": "admin123"
}Returns a JWT access token and sets a refresh token cookie.
Content Types
POST /api/admin/content-types
Content-Type: application/json
Authorization: Bearer <token>
{
"name": "Post",
"slug": "post",
"fields": [
{ "name": "title", "type": "text", "required": true },
{ "name": "content", "type": "markdown", "required": true }
]
}Entries
POST /api/admin/entries/post
Content-Type: application/json
Authorization: Bearer <token>
{
"data": {
"title": "Hello World",
"content": "# My first post"
}
}Public API
GET /api/v1/content/post
x-api-key: ck_live_<your-api-key>Features
- JWT + refresh token authentication
- Content type definitions with custom fields
- Entry management with draft/publish workflow
- Auto-generated slugs
- Public API with API key authentication
- Rate limiting (100 req/min)