Search by

caligrafy / caligrafy-quill

doryazar

Describe it. Approve it. Ship it. Your idea turned into a complete app: a PHP MVC framework, made for Claude Code, that serves one capability to web pages, Vue apps, REST APIs and AI agents (MCP)

Package info

github.com/caligrafy/caligrafy-quill

Type:framework

pkg:composer/caligrafy/caligrafy-quill

Fund package maintenance!

DoryAzar

Statistics

Installs: 213

Dependents: 0

Suggesters: 0

Stars: 9

Open Issues: 0

v2.26.1 2026-11-15 21:47 UTC

README

Caligrafy: Describe it. Approve it. Ship it.

Your idea turned into a complete app. Describe it to Claude Code, approve the plan, and Caligrafy ships it online, with the code in your own GitHub repository. Or write it yourself: everything Claude writes is plain Caligrafy, documented step by step.

Why developers choose it. A feature is written once, as a capability, and served to pages, Vue apps, REST, AI agents over MCP and Snap Cards, with the same rules and audit log everywhere. The same app takes 471 lines in Caligrafy against 708 in Laravel and 1,076 in Symfony, 7 of 8 security defaults need no code, and a new project installs 16.6 MB. See why Caligrafy: the benefits, the measurements, and what it is not yet.


With Claude

git clone https://github.com/caligrafy/caligrafy-quill.git myapp
cd myapp
claude
/caligrafy-quill:idea A reading list: I add books I want to read, mark them as read, and rate them from 1 to 5.
You Claude and Caligrafy
1. Describe it your idea, in a sentence a plan: the tables, every feature, who may do what, the pages
2. Approve it read the plan, change it, say OK build every feature once and check it
3. Ship it approve the sign-ins in your browser your GitHub repository, online at https://<name>.caligrafy.com

Claude never asks for a password or a key, and asks before spending credits. Quickstart with Claude has the details.

Start from a proven prompt on the marketplace, and sell yours there once it is online (/caligrafy-quill:marketplace, 25% of every sale).


By hand

You need Git and Docker Desktop (running):

git clone https://github.com/caligrafy/caligrafy-quill.git myapp
cd myapp
.bin/caligrafer quickstart --docker --example

Open http://localhost:8080/tasks. The Quickstart then takes you through the same app over REST and from an AI agent, and puts it online with php caligrafer.php cloud deploy.

A feature, by hand, is four small pieces:

Piece File Example
A table application/models/Bookshelf/create_db.sql CREATE TABLE IF NOT EXISTS books (...), run with php caligrafer.php sql application/models/Bookshelf/create_db.sql (a later change: php caligrafer.php migrate make <name>)
A model application/models/Bookshelf/Book.php class Book extends Model { public $id; public $title; ... }, one property per column
A capability application/services/ #[Capability(name: 'list_books', readOnly: true)] with Book::with('author')->paginate(20)
Its routes application/config/routing/web.php Route::page('/books', 'Books/index', ['data' => ['books' => 'list_books']])

The same capability is then a REST endpoint (Route::capabilities()), a tool for AI agents (Route::mcp()) and a function of the generated JavaScript client. Forms, sign-in, webhooks and downloads (CSV, JSON or many files as one ZIP) are one route each (Route::form, Route::auth, Route::webhook, Route::download), and Route::action answers whatever a page or a form cannot say. Every request is declared: an application needs no controller. Your first capability builds one, page included.


A complete app

Every feature is written once, as a capability (its inputs, rules and permissions), and served everywhere: web pages, Vue apps on desktop, tablet and phone, a REST API, AI agents such as Claude or Cursor over MCP, and Snap Cards with an assistant: Route::snap(); turns every capability into a card a person can use, shown with card views in your app's own look (Claude writes them from your pages), and gives them a Home that shows what needs them and an assistant that answers with those cards (Snap Cards and the assistant). Same rules, same permissions, same audit log, whichever way it is called. A capability can also run on a timer (scheduled jobs), reach your users with the app closed (notifications: web push and email), or run later, outside the request (background jobs, with retries).

Data models, queries (filters, paging, related rows, every value bound), migrations, the cache
Pages Pug views and page components, declarative routes, design styles, install to home screen
Assistant Snap Cards: every capability as a card (Ask, Show, Go, Track, Offer) in your app's own look (card views written from your pages), a Home that orchestrates what needs you, an assistant (Claude) that keeps the conversation's context; changes only from a Confirm
People sign-in with a username or an email, passkeys, permissions and tokens
In the box payments, AI (OpenAI, open models, Watson), face detection, machine learning, social cards, a production Dockerfile
Production a production image that sizes itself to its container, keeps database connections, preloads the framework and keeps public answers in memory; an experimental async server for the API and AI agents; a 15 MB install, with each optional SDK added by php caligrafer.php add <feature>
Security by default CSRF, bound queries, inputs, passwords, sessions, token scopes and N+1 prevention with no code
Quality tests that call capabilities the way every channel does, php caligrafer.php doctor

See How Caligrafy works.

Fast and small. On the same benchmark machine (2 CPUs), Caligrafy 2.26 answers 7,998 HTML pages a second, against 4,182 for Nuxt, 1,135 for Next.js, 1,830 for Symfony and 266 for Laravel; it is faster than Next.js on every test, and its experimental async server answers capability calls at 113,700 a second. A new project installs 13 packages and 16.6 MB, and a container uses about 35 MB (release notes).


Learn

If you want to Read
Know why to choose it Why Caligrafy: benefits, measurements, and what it is not yet
See everything Caligrafy does The documentation
Learn step by step, with Claude or by hand The Caligrafy course
Build a feature Your first capability
Every command Caligrafer
Put it online Putting it online: Caligrafy Cloud or your own server
Give the docs to a coding agent (Cursor, Codex, Copilot, Gemini) AGENTS.md, llms.txt and llms-full.txt: every wiki page in one file
See what changed Changelog
Contribute Contributing and how the framework is built

Community and support

If Caligrafy helps you, sponsor it on GitHub or share caligrafy.com.


Caligrafy is released under the MIT License.