If you like the project, please give it a Star on Github! ⭐
SynaptikCMS
A full-featured flat-file PHP CMS built for speed and simplicity. JSON storage, no database, no dependencies — just upload to any server and go.
Live Demo · Download Themes · Download Plugins · Documentation · Changelog · Report a Bug
What is SynaptikCMS?
SynaptikCMS is a flat-file content management system built in PHP. Content is stored as individual JSON files — no database engine, no configuration overhead, no moving parts.
It was built for developers, designers, artists, creative professionals, writers, bloggers, or anyone who want a CMS that is fast by default, easy to deploy anywhere, and simple enough to theme from scratch without fighting a framework.
Installed footprint: ~2MB. Zero runtime dependencies beyond PHP.
Why SynaptikCMS?
| SynaptikCMS | WordPress | Grav | Kirby | Bludit | Typemill | |
|---|---|---|---|---|---|---|
| Database required | ✗ | MySQL | ✗ | ✗ | ✗ | ✗ |
| Admin panel included | ✓ | ✓ | Plugin | ✓ | ✓ | ✓ |
| WYSIWYG + Markdown | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ |
| Theme system | ✓ hooks/filters | ✓ | ✓ | ✓ | ✓ | ✓ Twig |
| Plugin system | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| One-click updates | ✓ core/themes/plugins | ✓ | ✓ | ✓ | ✓ | ✓ |
| Built-in i18n | ✓ EN/FR/ES | Plugin | ✓ | ✓ | ✓ | ✓ |
| Image optimization | ✓ built-in | Plugin | Plugin | Plugin | Plugin | Plugin |
| Built-in analytics | ✓ plugin | Plugin | Plugin | Plugin | Plugin | Plugin |
| Composer required | ✗ | ✗ | ✓ | ✓ | ✗ | ✓ |
| Install footprint | ~2 MB | ~86 MB | ~52 MB | ~20 MB | ~9 MB | ~10 MB |
| License | MIT free | GPL free | MIT free | Paid | MIT free | MIT free |
| Install time | ~2 min | ~10 min | ~5 min | ~5 min | ~3 min | ~5 min |
SynaptikCMS is not trying to replace WordPress at scale. It is the right tool when you want a real admin panel with no database — for portfolios, documentation sites, small business sites, personal blogs or any project where simplicity and load speed matter.
Features
Content
- 3 content types — Articles, Pages, Projects (Portfolio)
- WYSIWYG and Markdown editors — switch per post, content preserved
- Draft system — autosave at user-defined intervals, one-click publish
- Scheduled publication — set a future date, CMS publishes automatically
- Categories and Tags — hierarchical categories (up to 3 levels), tag management, merge and purge orphans
- Custom Fields — define extra fields per content type, use them in your theme
- Related Content — manual selection or automatic suggestions based on shared tags and categories
- Image Galleries — one or more galleries per post, 4 layouts: grid, masonry, justified, carousel
- Shortcodes —
[toc],[gallery],[callout],[quote],[button],[recent_articles],[recent_projects],[articles_by_tag],[contact_form]
Admin Panel
- Media Manager — upload, browse, rename, move with drag and drop, batch compression
- Menu Builder — drag and drop custom navigation, nested items, external links
- Template Editor — live-edit your active theme files with automatic backup before each save
- SEO Overview — audit meta titles, descriptions and keywords across all content in one view
- Alt Text Assistant — bulk-edit alt text and captions for gallery images
- Sitemap Generator — one-click XML sitemap, submit URL shown inline
- Backup and Restore — full ZIP backup of
/data/,/files/and settings; restore in one click - Automatic Updates — one-click updates for the CMS core, themes, and plugins, with an automatic safety backup before each update
- Translation Editor — add or edit translations with the built-in editor (both for back-end and front-end), or simply customize the text strings displayed on your site
Themes
- Hook and filter system for theme developers
- Partials for article and project cards
- Live theme preview without activating
- Theme upload via ZIP with validation
- Theme manager with activate and delete
- Ships with default theme:
Mono. More themes can be downloaded at https://synaptikcms.com/themes/ - Full theme developer documentation at https://synaptikcms.com/docs/theming/theming-guide/
Plugins
- Self-contained extensions under
/plugins/— own routing, data storage, and admin screens, with zero core file edits required - Plugin pages render inside the real admin panel (sidebar entry, standard layout) once activated
- Install by uploading a
.zipfrom Admin → Tools → Extensions, activate and deactivate with one click - Activation state tracked separately from installation — deactivating a plugin preserves its data
- Official plugins can be downloaded at https://synaptikcms.com/plugins/
- Full plugin developer documentation at https://synaptikcms.com/docs/tools/plugin-system/
SEO and Performance
- Meta title, description, keywords per content item
- Open Graph and Twitter Card tags
- JSON-LD schema markup
- Canonical URLs
- RSS feed auto-injected in
<head> - Per-request cache for settings and content indexes
- Split-file architecture — single item pages load exactly one JSON file
Internationalisation
- Front-end and admin panel fully localised
- Ships with English, French, Spanish
- Add a new language by dropping a JSON file in
/lang/or by using the built-in translation editor
System Requirements
Server
| Requirement | Minimum | Notes |
|---|---|---|
| Web server | Apache 2.2+ | Nginx works but requires manual rewrite config |
| PHP | 7.4+ | 8.0+ recommended |
| Database | — | None required |
PHP Extensions
Required
| Extension | Used for |
|---|---|
json | All read/write on .json data files |
mbstring | Search, contact form validation, UTF-8 string ops |
hash | HMAC tokens (CSRF, theme preview signing) |
session | Admin authentication |
pcre | Slug sanitisation, HTML purification, content parsing |
filter | Email validation in contact form |
fileinfo | MIME type detection on file uploads |
Required for image features
| Extension | Used for |
|---|---|
gd | Image resizing, thumbnails, JPEG/PNG/GIF optimisation |
| GD + JPEG | Handling .jpg/.jpeg uploads |
| GD + PNG | Handling .png uploads |
Optional
| Extension | Used for |
|---|---|
| GD + WebP | WebP conversion — gracefully disabled if absent |
ZipArchive | Theme and plugin upload, and automatic updates |
Apache
Required modules: mod_rewrite, mod_authz_core
Required directive: AllowOverride All on the document root
The CMS ships with a root .htaccess handling URL routing, security headers and cache rules:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
Nginx (not officially supported)
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ ^/(data|bckps)/ { deny all; }
location ~ (settings\.json|admin-credentials\.php)$ { deny all; }
Filesystem Permissions
The following paths must be writable by the PHP process:
| Path | Required for |
|---|---|
/ | settings.json, install.lock during setup |
/data/ | All content read/write |
/files/ | Media uploads |
/bckps/ | Backups, CSRF secret |
/admin/ | Credentials, draft autosave |
/theme/ | Theme ZIP upload |
/plugins/ | Plugin ZIP upload and each plugin's own data storage |
Recommended: 755 for directories, 644 for files.
Browser (Admin Panel)
| Browser | Minimum |
|---|---|
| Chrome / Edge | 80+ |
| Firefox | 75+ |
| Safari | 13.1+ |
Internet Explorer is not supported.
Setup Checklist
[ ] Apache 2.2+ with mod_rewrite enabled
[ ] AllowOverride All on the document root
[ ] PHP 7.4+ (8.0+ recommended)
[ ] Extensions: json, mbstring, hash, session, pcre, filter, fileinfo
[ ] GD with JPEG and PNG support
[ ] ZipArchive recommended (theme/plugin upload, auto-updates)
[ ] Root .htaccess in place
[ ] Write permissions on: /, /data/, /files/, /bckps/, /admin/, /theme/, /plugins/
Theming
Themes live in /theme/{theme-name}/. A minimal theme requires:
theme/
└── my-theme/
├── css/
│ └── style.css
├── header.php
├── footer.php
└── home.php
Optional overrides: content-articles.php, content-pages.php, content-projects.php, content-list.php, 404.php, functions.php, page-templates/, partials/.
The Theme API exposes hooks (add_action), filters (add_filter), and helpers (render_site_logo, render_header_scripts, render_navigation, etc.). See the documentation for the full reference.
Plugin Development
Plugins live in /plugins/{plugin-name}/. A minimal plugin requires:
plugins/
└── my-plugin/
├── plugin.json
└── my-plugin-init.php
Unlike themes, plugins are not tied to the active theme — once activated from Admin → Tools → Extensions, a plugin runs regardless of which theme is in use, and can register its own admin sidebar entry and full admin page rendered inside the standard admin layout. See the plugin system documentation for the full developer reference: the plugin API, admin page rendering, front-end shortcode integration, session reuse, CSRF, i18n, and how to package a plugin for distribution.
License
MIT — free for personal and commercial use. See LICENSE.md.
Contributing
Issues and pull requests are welcome. Please open an issue before submitting a large PR to discuss the change.
