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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.