About this project

# Total CMS A modern flat-file content management system for PHP 8.2+ that stores all content as JSON files on disk instead of in a database. There is no MySQL to provision, no migrations to run, and no plugin ecosystem to keep patched — content lives on disk, so it version-controls, backs up, and deploys like the rest of your code. ## Core Features - **No Database Required** — All content is stored as flat JSON files on disk. Deploy by simply copying files between environments. - **33 Built-in Collection Types** — Blog, image, gallery, file, and more, plus support for unlimited custom schemas. - **Twig Templating** — 89 custom filters and 49 functions on top of stock Twig 3 for powerful template logic. - **Site Builder** — Add a page in the admin interface and it becomes live immediately. No build or generate step required. - **REST API** — Full CRUD operations for headless use, with API-key or OAuth 2.1 authentication. - **Built-in MCP Server** — Exposes your site's collections and search to AI agents (Pro edition). - **Automations** — Schedule, webhook, and event-triggered handlers with a job queue. - **Extensions System** — A register/boot lifecycle with capability-based permissions. - **Admin Interface** — Form builder with 20+ field types, media management, and passkey login support. - **CLI (`tcms`)** — Manage collections, schemas, objects, import/export, sync, and deploys from the command line. - **Image Processing** — On-the-fly resizing, watermarking, and OKLCH color handling using GD or ImageMagick. ## Requirements - PHP 8.2+ (8.4 supported) - Composer 2.0+ - Apache or Nginx with URL rewriting - PHP extensions: GD or ImageMagick, JSON, Fileinfo, OpenSSL No database server is required. No Node.js runtime needed in production. ## Installation ```bash composer create-project totalcms/totalcms mysite cd mysite ``` Point your web server's document root at `public/`, then open the site in a browser. The setup wizard handles the admin account, data directory, and license configuration. The installer also offers a **subpath** layout, which serves Total CMS from `/tcms/` and leaves `public/` free for your own frontend build. ## Template Example ```twig {% for post in cms.collection.objects('blog') %} <article> <h2>{{ post.title }}</h2> {{ post.content|markdown }} </article> {% endfor %} ``` ## CLI Commands ```bash vendor/bin/tcms collection:list vendor/bin/tcms jumpstart:export backup.json vendor/bin/tcms cache:clear vendor/bin/tcms deploy ``` ## AI Agent Support Total CMS is designed to work well with coding agents: - **[llms.txt](https://docs.totalcms.co/llms.txt)** and **[llms-full.txt](https://docs.totalcms.co/llms-full.txt)** — complete documentation in one fetch - **Agent skill** — installed into `.claude/skills/` automatically on `composer install`, covering collections, schemas, the CLI, and the Site Builder workflow - **Built-in MCP server** — point an agent at a live site to query its collections and schemas directly (Pro edition) ## Documentation Full documentation is available at [docs.totalcms.co](https://docs.totalcms.co). ## Support - [Documentation](https://docs.totalcms.co) - [Email Support](mailto:support@totalcms.co) ## License Total CMS is commercial software. A license is required for production use. See [LICENSE.md](LICENSE.md) for terms. Free 45-day trials are available — no credit card required. Visit [totalcms.co](https://totalcms.co) for details.