
Chase the vision, not the money; the money will end up following you.
Tony Hsieh, Zappos CEO
Poem: Rack to the rescue
Inventory tracking by the books is such a pain; For every sale I make, I have to calculate the gain. But apps like Record Rack have saved the day, it's such a hack; It solved my tracking issues and have shown me where I lack. Even on vacation, I can keep up with my business, Track goods with precision and know my profit any instant!
Record Rack is the first "big" project I've ever worked on. It would be the first application tailored towards solving actual (paying) customer needs. Before then, I just coded for a hobby and to solve my own problems. The Record Rack project would change all of that.
In this post, I'd like to talk about Record Rack: its purpose, its history, and its evolution.
The problem
Meet Jane Doe.
Jane owns a retail shop in Nigeria. She sells rice, beans, noodles, can tomatoes, pasta, flour, oil, garri, and a lot of other raw ingredients you would find in your kitchen.
From Monday to Saturday, Jane would drive to her shop to monitor all operations that took place. She paid a staff of 5 to sell goods, attend to customers and ensure that the items she had in stock were well accounted for.
As the years went by, the shop only got bigger and more profitable. She tried to open multiple shops in various locations but had to close them down because of theft from her very own staff in those shops. She had seemingly reached an impasse.
And though her business seemed to be at its peak since she's started, it was plagued with unspoken problems:
- All transactions were written on paper, making transactions error-prone and slow. Customers also had to wait long times, leading to some leaving for other nearby shops.
- Receipts were written by hand by her staff, making each transaction take longer. The copy of receipts were done by literal carbon copy.
- At the end of the day, all money made and stock sold (or purchased by the business) had to be balanced. Balancing the accounts involved counting the stock to make sure the quantity is correct and ensuring the money made equals the money documented. Since this was done at the end of the day, workers had to leave late on days where miscalculations happened or a lot of money was made1.
- Jane was unaware when stock items were low or sold out, making it harder to satisfy customers reliably.
- Jane had no way to measure what stock items sold well or which ones she made the most profit from without measuring it herself from the books.
- Jane had to rely on staff to report the right numbers.
- If any of the books used for taking records was lost, there was no backup.
- Debtors and creditors were loosely tracked in a book. Looking up old records was hard.
- Recurring customers were not tracked. If they were, the business can decide to offer discounts.
Record Rack to the rescue!
Out of all the pain mentioned above, Record Rack wore its cape and offered to save the day ๐ฆธ!
From hearing all these issues faced by Jane, my business partner and I rose to the challenge. We were laser-focused on making a software that could solve Jane's problems and the many local retailers that face similar issues.
This ultimately led to the creation of Record Rack.
Record Rack is an inventory management software made with the pain of the Nigerian retail entrepreneur in mind:
- It tracked all the stock items sold and purchased.
- Jane was kept up-to-date on all inventory changes and transactions through a mobile app we provided; she no longer was required to visit her shop to monitor operations.
- Sale transactions were much faster and all receipts were printed by the software. Jane's revenue increased.
- It tracked other income (i.e. income that was not made from stock items).
- It tracked all business expenses.
- It notified the user when a product was low in stock or sold out.
- It allowed users to edit created transactions (useful for customers who needed changes).
- It tracked debtors and creditors, along with each payment made, the deadline for payment and how much was left to pay.
- It supported subunits, allowing users to track goods with multiple units. For example, a carton of noodles can be sold by the sachet instead of the full carton.
- Recurring customers could be tracked and therefore rewarded.
- It used a simple interface. This was important in getting her staff up to speed quickly.
If business is all about relieving pain ๐ค, Record Rack was definitely the Tylenol ๐.
Gallery
The official Record Rack logo:

Background used in the main Record Rack application:

Notifications showing items low in stock:

Newer version of the notifications showing items low in stock in red:

"Manage debtors/creditors" window:

"Manage users" window:

Multiple sale and purchase windows:

Multiple sale windows:

First summary page:

Revised summary page:

Old "User Privileges" window:

Revised "User privileges" page:

Add a note to a new sale entry:

The notification widget:

Windows load independent of others:

Highlighted terms for quick search:

Alternate summary page:

Another alternate summary page:

Another alternate summary page:

Show detailed quantity breakdown using the subunits:

List of sale entries for the day:

Miscellaneous details about the project
- Date started: September 2013
- Initial release date: ~ March 2014
- Stable release date: ~ May 2014
- Customers: 1
- Used between: 2014 - 2022
- Released as a desktop app and a mobile app
Tech stack used
Record Rack Epsilon
After I left Nigeria, I worked in in-flight entertainment2 for a couple years and I decided to work on a new version of Record Rack. This version was created to:
- Address all the bugs of the previous version.
- There was a lot of rounding errors, since I stored floating point numbers for subunit quantities. (I know, rookie mistake ๐).
- There were random crashes.
- Some days, the application wouldn't record some quantity changes.
- Make the look-and-feel of the application more modern.
- Update the UI code to use QML instead of C++, since QML was better for rapid application development.
- Write better code. The last version's code was monstrous!3.
Unfortunately, this version was canned, but it did teach me a lot about C++/QML development and separating UI and logic.
Gallery
Testing Chart.js (excuse my French in the image ๐):

Same screen with a more defined sidebar (excuse my French in the image ๐):

Our company name and logo, Gecko Solutions:

Login screen:

Login screen with access granted dialog:

Login screen with access denied dialog:

Login screen with access granted message (revised design):

Login screen with access denied message (revised design):

Stock page with a product list:

Dashboard page:

New stock item page (though it says "New Sales Entry" ๐):

New sales home page:

New sales entry page:

Stock page with extended sidebar:

Stock page with collapsed sidebar (ignore the Spider-Man background ๐):

Old login screen vs new login screen (ignore the Spider-Man background ๐):

Old access denied screen vs new access denied screen (ignore the Spider-Man background ๐):

Old access granted screen vs new access granted screen (ignore the Spider-Man background ๐):

Old login screen vs new login screen (ignore the Spider-Man background ๐):

Old main screen vs new main screen (ignore the Spider-Man background ๐):

Old "New Sales Entry" page vs new "New Sales Entry" page with prompt:

Old "New Sales Entry" page vs new "New Sales Entry" page without prompt:

Old stock page vs new stock page:

Old main screen vs new dashboard page:

Login page (again):

Sales home page:

Sign up page:

Sign up page with picture selected:

Stock grid view:

Old stock page:

Miscellaneous details about the project
- Date started: ~ November 2015
- Date ended: ~ November 2018
- Release date: Never released
- Created as a desktop app
- Eventually abandoned
Tech stack used
Record Rack Paper: Yet another version
I stopped Record Rack Epsilon because I got distracted. Plus, it lacked some solid UI patterns like the first version. The first Record Rack used the widgets library from Qt, making the look and feel more consistent. Epsilon used QML, which encouraged you to code the UI yourself from scratch at the time.
Building Epsilon from scratch was kinda hard. Mind you, at the time I knew nothing about typography, colors, spacing, nothing! My shortcomings were revealed in my final design. (Check the Epsilon gallery above.)
So for this version, I chose to use Material Design by Google instead. With the help of a QML library I found on GitHub (called Fluid), I decided to start Record Rack (again) from scratch. This time, I would use more of my experience and all the best practices I've learned over the years.
This was definitely my best attempt, compared to previous years.
Gallery
Unfortunately, I don't have any pictures of this lying around. If I could get it to compile again, I'll update this section.4
Miscellaneous details about the project
- Date started: ~ January 2019
- Date ended: ~ November 2020
- Release date: Never released
- Created as a desktop app (to be ported to mobile)
- Eventually abandoned
Tech stack used
- MySQL
- Qt C++
- QML
- Fluid QML (for Material Design components)
Record Rack: To infinity, and beyond!
On October 2025, my college colleague and I decided to give it one more go. We observed that the market is still vacant in Nigeria, and since we've done it before, we believe we could do it again. However, this time, we are much more knowledgeable in our crafts (we both code) and the market needs. My colleague also has connections to some of the businesses that would be interested, so we decided to get back to the Rack!
Over the course of the year, I'll update you on how things are going. Right now, we are still ironing out bugs and features, but we plan to release soon. By the time we release, I would blog more about how that is going. The main focus is to make a product and get it out there as soon as possible so we can get user feedback quickly and iterate.
Gallery
List of products:

"New Sale Entry" page:

"New Sale Entry" page with cart items:

"Stock" home page:

List of income entries:

"Reports" page:

"Stock Reports" page:

Miscellaneous details about the project
- Date started: October 2025
- Release date: To be determined
- Created as a PWA (supported by all platforms a browser can run on)
Tech stack used
The bottom line
In summary, Record Rack is dead; long live Record Rack! ๐
-
Almost like they were punished for making more money.ย โฉ
-
I guess I should have expected it, being an amateur at the time.ย โฉ
-
This is why I chose the current stack for the latest. I hated having to recompile and with newer versions of Qt, though my functionality hadn't changed. This is part of the reason why web code "lasts forever" compared to native code.ย โฉ