Somewhere in the middle of trying to pivot into a developer role, I spent a lot of time learning React. I built a few things with it. Portfolio pieces, mostly. But the work that was actually paying — even if only just — was helping people with WordPress.

A lot of that work was administrative.

  • Knowing where things live.
  • How to configure themes.
  • How to fix something that had drifted slightly out of shape.

But occasionally I’d drop into the code and that’s where something clicked. Underneath it all, it was PHP. Something I’d first used about twenty years earlier and it felt… familiar.

So I leaned into that.

I started looking properly at Laravel — probably version 7 or 8 at the time — to see how it had evolved. I’d touched it before, but never really built anything meaningful with it. This time was different. It felt comfortable almost immediately. Not because I knew everything, but because what I didn’t know was easy to find.

  • The documentation made sense.
  • The community was helpful.

It was one of those environments where you can move quickly without feeling lost. Around that point, I realised something slightly frustrating. I’d spent a lot of time aiming for React roles… …when PHP might have been the more natural fit. Fewer roles, maybe — but a much stronger foundation to build on and fewer reasons to talk myself out of applying.

So I started building.

I put together a few smaller things first. A Laravel-based version of my portfolio. A gig-style platform, something loosely inspired by Fiverr — although I never pushed that very far, as I ended up focusing on something else instead. (That turned into another project: ThatNewJob.com). Then I decided to build something more substantial.

A timesheet system.

Not because I needed one. But because it was just complex enough to be interesting. I approached it properly.

  • Built out a plan in Airtable.
  • Aligned it with a series of blog posts.
  • Recorded a few demo videos to show how things worked.

You can see the starting point here

The plan was split into phases:

  • MVP
  • Enhanced features
  • Future functionality

And the MVP was broken down into sprints. The core pieces were:

  • Authentication and initial setup
  • User management
  • Time code management
  • Approval workflows

This was as much a project management exercise as it was a development one.

  • Structuring the work.
  • Breaking things down.
  • Moving through it incrementally.

Technically, it was built with:

  • Laravel (with Blade templates)
  • SQLite
  • Authentication scaffolding via Breeze
  • Tailwind CSS

Nothing particularly exotic. But enough to build something that felt complete. I documented parts of the process as I went:

Each of those includes a small demo video — not tutorials, just a way of showing how the pieces fit together.

I got most of the MVP working.

Then I got a full-time job. Not as a developer I should add, but with that new job came a shift in energy.

The system itself worked. It did what it needed to do:

  • create timesheets
  • submit them
  • manage approval workflows

It was a solid MVP.

I pushed it to GitHub.

Made it public. Partly as a portfolio piece, and partly with the vague hope that someone might find it useful. Nothing happened for a long time. Then, about 18 months later, someone cloned the repository, they made a series of changes. fixes, improvements and opened a pull request.

By that point, I’d been away from the project long enough that it took me longer to get it running locally again than it did to review their work. Their changes were good. Some of them even solved problems I’d just run into while trying to get the project back up and running. I merged the PR. Said thank you. That was it.

No big open-source momentum. No growing community. Just one person, picking something up and making it better. And honestly, that was enough.

I don’t plan to take this project any further. It did what I needed it to do at the time and it represents something useful. A point where I stopped just trying things… …and started structuring them.

That moment — when someone else found it, understood it, and improved it — was probably the most satisfying part of the whole thing.

Tags: