Blog
Posts with slugs, draft/publish visibility, and full admin CRUD at /admin/blog.
PlugPHP is a modular vanilla-PHP starter kit for cPanel and shared hosting. Routing, auth, the database layer, uploads, mail and an admin dashboard are already written and hardened — so the only thing left to build is the part people actually see.
git clone https://github.com/Bcp-Sambo/plugphp.git
This is the real module picker. Flip one and watch the routes it registers.
Every new site starts by paying an agent to rebuild the same login form you already paid for last month.
Leaving WordPress usually means giving up the thing that made it easy — a working installer, an admin panel, modules you switch on. PlugPHP keeps that feel, drops the 20 years of legacy, and runs on the cheapest plan you already have.
No node_modules, no bundler, no Composer run. Download the ZIP and it works — vendor/ ships with the kit.
Clone it, or grab the ZIP from GitHub. Nothing to compile.
git clone https://github.com/ Bcp-Sambo/plugphp.git
Serve public/ locally, or upload to your host. No MySQL on your laptop? Create the database in cPanel and use that.
php -S 127.0.0.1:8000 -t public public/router.php
Open /install.php. It checks your environment, tests the connection, runs migrations, seeds demo content and creates your admin user. Then delete it.
rm public/install.php # the step everyone skips
Point the agent at SKILL.md. It styles the views that are already wired to real data — and leaves core/ alone.
> read SKILL.md, then design the blog index
Every module owns its routes, migrations, views and its own SKILL.md. Turn one off and its routes are never registered — no dead links, no leftovers.
Posts with slugs, draft/publish visibility, and full admin CRUD at /admin/blog.
Structured service pages with detail routes, ready for pricing and schema markup.
A portfolio with case-study pages and a native JSON column for flexible metadata.
Validated, CSRF-protected, stored to the database and delivered through Mailer::send().
Login, logout, opt-in registration, forgot and reset password. Hashing and sessions live in core.
One control panel that every module plugs into. Your client edits content; nobody touches code.
The two static pages every site starts with, seeded with demo content so nothing is blank on first run.
A module is a folder: routes, migrations, views, a module class. Build one end to end →
These are being built the same way everything above was — as modules you switch on, or leave off. No dates promised.
Need one of these first? Say so in an issue — that's how the order gets decided.
Every kit has conventions. This one writes them down, in the repo, where the agent will actually look — root SKILL.md plus one per module.
Auth, CSRF, database access and mail live in core/ and are marked read-only. An agent can't quietly reinvent a session handler at 2am.
Semantic HTML wired to real data, waiting for a design. That's the whole job you hand over — and the whole budget you spend.
Prepared statements, escaped output, CSRF on every state-changing route, correct heading order and real alt text — enforced by the rules, not by review.
PlugPHP is built by one person, in public. What gets fixed and what gets built next comes out of what people ask for — so ask.
A short form: what happened, where, your PHP and MySQL versions. Enough to reproduce it without a back-and-forth.
Open the bug form Something missingTell me what it should do and what you're doing instead today. That second answer is what moves things up the list.
Open the request form Already askedBefore you write, check the list — a 👍 on an existing issue counts for more than a duplicate. Most-wanted sits at the top.
See open issues
Free, GPL-3.0, and running on shared hosting in about the time it takes to make coffee. Bring a project — we want to see what your agent does with it.
git clone https://github.com/Bcp-Sambo/plugphp.git
Then delete public/install.php. Seriously — it's the one step people skip.