A Symfony CMS to rapidly create, manage and maintain your websites — from the admin, from Git, or from your AI agent.
- Content is Markdown + Twig. Pages are Markdown with front matter; templates are plain Twig. No proprietary field builder to learn.
- Multi-site and multi-language from one app and one admin.
- SQLite by default. No database server to provision — and no migrations to run.
- Database or flat files. With Flat, content lives as Markdown in Git and the admin stays usable.
- Deployable as a static site. Static Generator exports the whole site for GitHub Pages, Apache or FrankenPHP.
- Extensible where it matters — events, entity filters, CommonMark extensions and Twig components, all documented.
composer create-project pushword/new pushword "^1.0.0-rc"
cd pushword && php bin/console pw:user:create
php -S 127.0.0.1:8004 -t public/Full requirements and the FrankenPHP setup are in the installation guide.
Officially maintained bundles, installable one by one:
| Admin | Manage pages, media and users (EasyAdmin) |
| Flat | Turn Pushword into a flat-file, Git-based CMS |
| API | Token-authenticated REST API, OpenAPI-described |
| Search | SQLite full-text search via Loupe, zero infra |
| Static Generator | Export the site as static files |
| Page Scanner | Find dead links, 404s and redirects |
| Newsletter | Audiences, campaigns and automations |
| Version | Page versioning and diffs |
See all extensions for the rest — block editor, snippets, quizzes, comments and more.
Visit pushword.piedweb.com
This repository is the monorepo: every bundle lives in packages/ and is split
read-only to its own repository for distribution. Issues and pull requests belong
here.
If you're interested in contributing to Pushword, please read our contributing docs before submitting a pull request.
If Pushword is useful to you, starring the repository is the simplest way to help others find it. You can also support its maintenance on Liberapay.
The MIT License (MIT). Please see License File for more information.