Case study · Product I own
Internal Team Operations Platform
Kanban, team calendar, time tracking, messaging and an encrypted vault, self hosted.
- Role
- Sole architect and developer
- Status
- Live
- Period
- Jun 2026 to Jul 2026
- Stack
- CodeIgniter 4, Shield, MariaDB, Service Worker
Summary
- Problem
- A team needed projects, time tracking, messaging and shared secrets in one self hosted system.
- System
- A full internal ops suite on CodeIgniter 4 and Shield: Kanban projects and tasks, a team calendar, worker owned time tracking, messaging and broadcasts, an internal board, notifications and an encrypted vault.
- Outcome
- Live as a private, self hosted platform, repeatable for any team that needs one.
What needed to exist
One self hosted place for the work and the people doing it.
A team needed projects, time, messaging and shared secrets in one system it hosts itself: Kanban projects and tasks, a team calendar, worker owned time tracking, team messaging with broadcasts, an internal board with voting, notifications, and an encrypted secrets vault.
Architecture
Server rendered, with a soft navigation layer.
The suite runs on CodeIgniter 4 and Shield over MariaDB. Pages render on the server, with a soft navigation layer and a service worker on top. It connects to a third party workforce time tracker with tokens encrypted at rest, and failed cron runs alert by email and Telegram.
Decisions
Trust first: the defaults are the culture document.
Private by default
- Context
- Every internal tool decides what the people overseeing the work can see.
- Tempting answer
Open by default, and claw visibility back feature by feature.- What I did
- New surfaces start personal; sharing or team visibility is a choice a person makes.
- Why
- It stops visibility being argued again on every feature, and it does not quietly normalise exposure.
-
One all seeing role
A single owner who can see everything is the counterweight that makes privacy for everyone else credible, and the way to resolve a dispute or audit a mess.
-
No surveillance
No screenshots, no idle detection, no keystroke logging. People are judged by what they ship, not by hours in a seat.
-
Oversight without control
Overseers watch; they do not rewrite. The person doing the work owns their record: they can correct it, export it and keep it.
-
Two honest numbers
When one metric feels wrong it is usually two metrics wearing one hat, so the platform shows both and surfaces the overlap as data.
Result
Live and self hosted.
The platform is live as a private, self hosted system with no public URL, and it is repeatable for any team that needs one.