After a year of hard work we decided to pull the trigger and release a completely revamped behind the scenes version of Timeclock.Kiwi!
You can see the official release notes here but the gist of it is this:
Complete rewrite of the application from Express to Svelte
When we started out we thought, “How hard could it be to make a simple Timeclock app? Surely it won’t be that big of a project…?” Well as it always goes, there was a lot more to making a program like this than we initially realised and as it has slowly scaled into a massive project that has become increasingly harder to manage, causing us to stagnate. The Svelte framework allows us to add features and improve the app far more easily whilst keeping things organised. So even though it was a lot of work to re-write the whole program in this framework we feel it was well worth it.
Changed database from MongoDB to Postgres
This was another rookie mistake that we only found out about after being far too committed. As it turns out, noSQL query language is awful; particularly for complex queries. When you add the fact that to use noSQL properly you are supposed to write data often and delete never, we had to design some of our data to be duplicated across multiple tables. This ended up causing edge case issues that were simply not fixable in the proper noSQL way. Ultimately we felt that the pain of using noSQL was too great and it was discouraging us from developing the app so we decided to move to a relational database instead.
Redesigned landing pages to include resources about how to set up and use the program
When we first built the site, we were focused on the app itself and its features. To save time we built our landing page to be a single long page that had all the information that was needed with the occasional link to other third party websites when we needed more functionality. However we have had a lot more time to work on the landing pages so have broken them up into many smaller pages that all have specialised content.
API now available
One of our biggest customers has a very advanced processing and production line. They needed to be able to automatically pass jobs to the timeclock so that they can track who is working on what and for how long. So we built an API so anyone (including them) can pass through jobs as needed. It has been in production for some time and works very well.