Projects: Leonidas

The Leonidas Customer Relationship Manager: my largest, most influential project. It started as a giant whiteboard drawing five years before I wrote the first line of code for it. Leonidas was going to replace numerous in-house services: time sheets, work orders, budgeting, marketing, and contact database management.

My initial ideas sparkled with microservices strewn across multiple servers, passing messages and processing data as it came in from employees. It was going to be so modern and ahead of its time.

EmaWioSlrekrSveOirrcvdeNieocrtSeiefrivciacteiToSiSnlmeaercsvkhiecSeeetrvice

The hardest decision was which programming language to build the application with. I was still learning Go and I was the only one on the team with any experience with it. Eventually, I chose PHP as it was what the team was comfortable with and they could jump in and help. I also decided not to use an existing framework, but instead use PHP as the framework. This took out so much bloat and complexity and really offered a lot of flexibility when I needed it. After a few years and almost 4000 commits, it is still kicking and just as fast as it was on day one.

If I started this project today, I would definitely try it in Go, but I don’t know if I would split it up into microservices as I initially planned. Some components would certainly break off from the monolith, and I would likely design the whole thing to work in a serverless environment. I may take it on as an academic exercise in the future.

Components

To avoid a novel, I split up a few of the components in Leonidas into their own sections:

  1. Permissions Keeping users away from the danger buttons
  2. Timesheets The most mundane part of the day: Updating your time sheet