Turn Pushword into a flat-file CMS — pages and media stored as Markdown + CSV on disk, round-tripped with the database and trackable in Git.
- Two-way
pw:flat:syncbetween Markdown/CSV files and the database. - Auto-export after admin edits, optional auto git commit.
- Conflict resolution, editorial locks and webhook locking.
- Optional user sync (
users.yaml), conversation and snippet sync.
composer require pushword/flatVisit pushword.piedweb.com/extension/flat.
Each entity decides its own direction: import when files are newer, export when the database is. Details: sync behavior reference.
flowchart TD
Start([pw:flat:sync]) --> LockCheck{Webhook lock?}
LockCheck -->|Yes| Blocked([Blocked])
LockCheck -->|No| Media{Media: file hash changed?}
Media -->|Yes| MediaImport[Import media.csv + files<br/>delete media missing from CSV<br/>regenerate media.csv]
Media -->|No| MediaExport[Export media.csv]
MediaImport --> Page
MediaExport --> Page
Page{Pages: .md newer than DB?} -->|Yes| PageImport[Import redirection.csv + .md<br/>resolve relations, delete orphan pages<br/>regenerate index.csv]
Page -->|No| PageExport[Export .md, index.csv, redirection.csv]
PageImport --> Others
PageExport --> Others
Others[Conversations, users.yaml, snippets,<br/>extension syncs] --> End([Done])
Pushword is a modular CMS — one Symfony bundle for the core and one bundle per feature. See the full list and guides at pushword.piedweb.com/extensions.
If you're interested in contributing to Pushword, please read our contributing docs before submitting a pull request.
The MIT License (MIT). Please see License File for more information.