gd, json, openssl, mbstring, fileinfomod_rewrite (or PHP built-in server for local testing)data/ and images/git clone https://github.com/easeo-nl/easeo-cms.git
cd easeo-cms
php -S localhost:8000 router.php
Visit http://localhost:8000 — the setup wizard will guide you through configuration.
install.php creates the data filesAll data is stored as JSON files in data/. No database, no migrations, no ORM.
| File | Purpose |
|---|---|
site.json |
Company info, colors, fonts, socials, tracking |
content.json |
Page content keyed by slug |
navigation.json |
Main + footer menu items |
users.json |
User accounts |
posts.json |
Blog posts |
media.json |
Media library index |
forms.json |
Form definitions |
pages.json |
Dynamic pages |
redirects.json |
URL redirects |
includes/content.php — Data layer: load_json(), save_json(), site(), e()includes/lang.php — i18n: t() translation functionincludes/header.php — HTML head, navigation, structured dataincludes/footer.php — Footer, cookie consentincludes/blog-engine.php — Blog CRUD, pagination, post cardsincludes/form-engine.php — Form rendering, CSRFincludes/media-engine.php — Upload, resize, thumbnails, SVG sanitizationincludes/mailer.php — SMTP via PHPMailer or mail() fallbackEASEO CMS has built-in multilingual support. Language files are stored in lang/:
lang/
en.json ← default (English)
nl.json ← Dutch
Use t('key') anywhere in PHP to output a translated string:
<?= t('button_save') ?> // "Save" or "Opslaan"
<?= t('error_field_required', ['field' => 'Email']) ?> // with params
lang/en.json to lang/xx.json (your locale code)language in data/site.json to your locale codeEASEO CMS is designed for full control over your data:
Your JSON data files are plain text. You can read, export, backup, and migrate them with standard tools. No proprietary format, no vendor lock-in.
Pull requests are welcome. Fork the repository, make your changes, and open a PR.
snake_casesnake_casekebab-caselang/*.jsonMIT License — see LICENSE.txt