https://github.com/joho1968/tinymash
tinymash is a free and open source flat-file CMS for PHP 8.4+
https://github.com/joho1968/tinymash
cms flat-file-cms flatfilecms foss opensource oss php php84 signage signage-platform signage-player
Last synced: 7 days ago
JSON representation
tinymash is a free and open source flat-file CMS for PHP 8.4+
- Host: GitHub
- URL: https://github.com/joho1968/tinymash
- Owner: joho1968
- License: agpl-3.0
- Created: 2026-05-19T15:41:47.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-06-18T15:53:02.000Z (14 days ago)
- Last Synced: 2026-06-18T17:29:09.963Z (14 days ago)
- Topics: cms, flat-file-cms, flatfilecms, foss, opensource, oss, php, php84, signage, signage-platform, signage-player
- Language: PHP
- Homepage: https://tinymash.joho.se
- Size: 2.57 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# tinymash
tinymash is a flat-file CMS and publishing platform for PHP 8.4.1+. It stores content on disk, does not require a database server, and ships with both a public site and an admin interface.
It is built for self-hosted publishing: pages, posts, author spaces, themes, plugins, media, tags, feeds, maintenance tasks, and a CLI for day-to-day operations.
## What tinymash is for
tinymash is a good fit if you want:
- a database-free CMS
- a small self-hosted publishing stack
- pages and blog posts in the same system
- multiple authors without adding a lot of platform weight
- a PHP application that stays readable and easy to deploy
## What ships with it
The shipped runtime includes:
- a web-based admin interface
- flat-file content, draft, user, and media storage
- public themes and theme settings
- plugin support
- media uploads for editor and site imagery
- feeds, tags, menus, search, backup/export, imports, and housekeeping tooling
- a CLI for cache management, deploy builds, housekeeping, imports, backups, and other maintenance work
## Normal installation path
The normal production path is to run tinymash from a prepared runtime tree and point your web server at `public/`.
If you are holding a tinymash deploy package, the short version is:
1. copy the runtime tree to the server
2. point the web root at `public/`
3. make `data/`, `users/`, and `tmp/` writable by the PHP/web-server user
4. create `app/config/tinymash.json` from `app/config/tinymash.json.example` if it does not already exist, then review it
5. create the first admin user
6. set up housekeeping from cron
The full step-by-step version is in `INSTALL.md`.
## Runtime requirements
- PHP `8.4.1` or newer
- a web server such as Nginx or Apache
- PHP-FPM or another supported PHP SAPI
- writable `data/`, `users/`, and `tmp/` directories
Required PHP extensions:
- `mbstring`
- `json`
- `dom`
- `session`
- `openssl`
- `fileinfo`
Recommended PHP extensions for full feature coverage:
- `curl`
- `gd` or `imagick`
- `simplexml`
- `exif`
- `intl`
- `zip`
For ordinary public and admin use, tinymash can run with a small PHP memory limit; `16M` is enough for many small sites. Larger batch jobs such as imports, backups/exports, media cleanup, and big upload/import runs may need more memory. The CLI import commands also accept explicit memory-limit options where that matters.
## First admin user
Before you can use `/admin/login`, create at least one local admin user:
```bash
php8.4 bin/tinymash.php user set-password admin strong-password-here superadmin
```
## Command line
Common operator commands are documented in [CLI.md](CLI.md).
## Sample files
Public sample files live under `samples/`:
- `samples/server/nginx.sample.conf`
- `samples/server/apache.sample.conf`
- `samples/server/php-fpm.sample.conf`
- `samples/server/php-opcache-production.ini`
- `samples/server/php-opcache-development.ini`
- `samples/server/tinymash.logrotate`
- `samples/cron/tinymash.cron`
- `samples/deploy/rsync-deploy.sh`
## Files and paths
- `public/`: web root
- `app/config/tinymash.json`: main runtime configuration; deploy packages ship `app/config/tinymash.json.example` as the safe starting point
- `data/`: content, drafts, media, caches, plugin/theme data
- `users/`: user records
- `tmp/`: temporary runtime files
- `bin/tinymash.php`: CLI entrypoint
## Source checkouts
If you are running tinymash directly from a source checkout instead of a prepared runtime tree, install the PHP dependencies first and treat that as a developer/operator workflow rather than the normal end-user install path.
## License
tinymash is licensed under `AGPL-3.0-or-later`. See `LICENSE`.
Copyright 2026 Joaquim Homrighausen; all rights reserved.
## Credits
tinymash uses a small set of bundled third-party packages and frontend assets, including:
- Bootstrap
- Bootstrap Icons
- highlight.js
- emoji-picker-element and bundled emoji picker data
- `flightphp/core`
- `flightphp/runway`
- `latte/latte`
- `league/commonmark`
- `symfony/mailer`