Tim Habersack

Where I put my things..

Splitting InitiumPHP into core and skeleton

17 hours ago

So, 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. Namespace Initium\. You never touch it directly; it's just a dependency.
  • timbotron/initium-php-skeleton — the boilerplate app that requires core. Namespace App\. 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