Mintage TimeKeeper ·

Laying the foundations

The first commits behind what is now TimeKeeper: a modular codebase with an HR module and a remuneration module, set up in a single day.

1 min read31 commits that monthFoundationsArchitecture

Where TimeKeeper started

The code that would grow into Mintage TimeKeeper began at the end of May 2024. All 31 commits this month landed on the same day, and nearly all of them are about getting a skeleton to stand up rather than shipping anything a customer could use.

We chose to build the project as a set of separate modules that plug into a shared core, instead of one large application. Each area of the product lives in its own module, so it can be added, upgraded or retired without disturbing the rest. That decision has shaped everything since, including how TimeKeeper later shed the parts it no longer needed.

The first two modules

Two modules arrived on day one. An HR module holds the basic employee record. A remuneration module covers how people are paid, and it went through several rounds of changes within hours as we settled its shape.

Around them we wired up the plumbing a modular system needs: service providers that register each module, shared packages, corrected module paths and a renamed module or two.

Mostly groundwork

The rest of the month's commits are honest housekeeping. We added a testing environment, set up the containers the project runs in, removed unused code and a dependency we did not need, and fixed a handful of broken paths and imports along the way.

None of this is visible to an end user, and that is the point of a foundations month: the next pieces of work had somewhere solid to go.

This article was written from Mintage TimeKeeper’s commit history for May 2024. See Mintage TimeKeeper today