The Same Application
In Whichever Stack You Work
Sign-in, roles, an admin area and analytics, built once as a specification and implemented natively in each stack.
Learn it once. Get it wherever the job takes you.
Two Boilerplates, One Specification
Each one written in its own stack's plain idioms. Neither is a port of the other.
MVCLM PHP
A small MVC framework in plain PHP with no packages, no service container and no build step. Seven classes in the core, one front controller, one readable routing table.
Runs on ordinary shared hosting. Copy the files, point the document root at the public folder, run one script.
MVCLM React-Django
A typed React front end against a Django REST API, with cookie-based JWT authentication and the whole stack in Docker Compose: database, backend, frontend, nginx and certbot.
Clone it and run one command. The same command brings up local development and the production deployment.
What Every MVCLM Boilerplate Gives You
The same application, whichever one you clone.
Accounts That Already Work
Registration, sign-in against hashed passwords, remembered sessions, email verification, password reset by single-use link, and account self-delete behind a confirmation.
Roles and Account Statuses
Ordinary users, moderators and administrators, plus an account status that decides who may sign in. A suspended account is turned away at the door and signed out of any session it already holds.
An Admin Area, Not An Admin Plugin
A users list with search, sorting and pagination, a user edit page for role and status, and an analytics page with growth charts, breakdowns and key metrics. Written as part of the application, so you can change it.
Operational Switches
A demo mode that blocks destructive actions so you can put the thing on a public URL, a contact form with a honeypot and a Reply-To header, and a public layout beside a signed-in one.
Why One Specification Across Stacks
Most starter kits are tied to the stack that produced them, so moving between languages means learning somebody else's decisions all over again. MVCLM fixes the application instead of the language: the same roles, the same statuses, the same admin pages, the same demo mode. What changes is the idiom underneath. Once you know how one of them behaves, you know how the next one behaves, and the only thing left to learn is the stack itself.
Where They Are Not The Same
The specification is shared. The stacks are not, and pretending otherwise would waste your afternoon.
| MVCLM PHP | MVCLM React-Django | |
|---|---|---|
| Sign in with Google | Not included | Included, alongside local accounts |
| Maintenance mode | Not included | Site-wide banner, gated auth endpoints |
| Settings changed at runtime | Settings file, edited on the server | App Settings page in the admin area |
| Public profile pages | Included, optionally signed-in only | Not included |
| Test data | One script seeds the database | Generate fake users from the admin area |
| What it runs on | Ordinary shared hosting, Apache | Docker Compose, nginx, Let's Encrypt |
| Build step | None. The stylesheet ships built | Vite, run inside the container |
| Database | MySQL or MariaDB | PostgreSQL 16 |
Both are MIT licensed, and both have a live demo you can sign into before you clone anything.