Splitting InitiumPHP into core and skeleton
17 hours agoSo, I finally did the thing I'd been putting off for way too long: I broke InitiumPHP into two pieces.
If you haven't run into it before, InitiumPHP is my little PHP starter framework — the thing I reach for when I want to spin up a small project that needs user accounts without dragging in the whole Laravel universe. Turnkey auth (signups, password resets, the whole email dance), a handful of dependency-light packages wired together, no build step, no magic. That's the entire pitch. I like it that way.
But it had one annoying wart. To start a new project you cloned the repo. Which meant the framework and your app lived in the same place, tangled together — and any time I fixed a bug in the framework, well, good luck getting that fix into the three projects you'd already cloned. You'd be hand-copying files like it's 2009. (I would know. That was my workflow.)
Anyway, that always bugged me, and I finally fixed it.
Now there are two packages:
timbotron/initium-php-core— the actual framework. Routing, the base classes, the DB layer, auth, email, templates, migrations. NamespaceInitium\. You never touch it directly; it's just a dependency.timbotron/initium-php-skeleton— the boilerplate app that requires core. NamespaceApp\. This is what you start a new project from.
Both are on Packagist now, so kicking off a project is just:
composer create-project timbotron/initium-php-skeleton myapp
Fill in your config, import the migrations, point your web root at public/, and go. And here's the part that makes me genuinely happy: framework fixes now arrive with a plain composer update. No more cloning-and-editing. Also I did a pretty big refactor pass and hardened things up a bit.
If you want to poke at it, it's all up on GitHub and Packagist. I hope it's useful to someone else building something small! :)
Stay tuned — I've still got a short list of hardening bits to land.
- Core: https://github.com/timbotron/initium-php-core · https://packagist.org/packages/timbotron/initium-php-core
- Skeleton: https://github.com/timbotron/initium-php-skeleton · https://packagist.org/packages/timbotron/initium-php-skeleton