← All work Case study · Radi Digital · 2026
Strukchad
Software that helps construction companies run projects, workers, purchasing and money in one place, with a mobile app for staff on site.
Site teams work from phones on patchy connections, on projects with hundreds of tasks. If the app is slow or shows the wrong company's data, people go back to paper and WhatsApp.
The business also needs to get paid: subscriptions by card, and mobile money for the property side.
Strukchad is built by a team at Radi Digital, and most of the core platform and its AI features are teammates' work. My contributions were on the mobile app and on payments. Much of it was done with an AI coding assistant, and I reviewed and tested every change.
Problems I solved, and how
-
A task list that stays fast on big projects
- Problem
- The Tasks screen drew every section, bill-of-quantities item and task at once, which crawled on large projects.
- Approach
- I turned the tree into flat rows on the app's shared virtualised list, so only rows near the screen are drawn, while keeping collapse state and accessibility. A test scrolls through 500 tasks.
-
Showing only the active company's data
- Problem
- Worker queries relied on row-level security alone, so someone who belonged to several companies saw workers from all of them.
- Approach
- Every worker query now filters by the active organisation as well, so the database rules are a safety net, not the only filter.
-
Data loading that silently lost rows
- Problem
- Some screens quietly dropped data at scale. The approval inbox lost price-check flags once an order had more than 1,000 lines.
- Approach
- I capped the id-list loader at four requests at a time and fixed the approval summaries to page through every line.
-
Subscription billing with Paystack
- Problem
- Companies needed to pay by card on a schedule, and a missed or duplicated webhook means charging wrong.
- Approach
- I wrote the first version: a card setup session, verification that saves the card authorisation for later charges, and a webhook that checks an HMAC-SHA512 signature over the raw body, stores each event to avoid processing it twice, and schedules retries for failed charges. A teammate later fixed the duplicate-detection key and added monitoring.
-
Mobile money with Lemonade
- Problem
- On the property side, tenants pay rent by mobile money and landlords hold wallet balances.
- Approach
- I built wallet onboarding and top-ups, and tenant rent payments with identity checks and a block on starting a second payment while one is pending. I also moved the wallet logic out of an edge function into a server API.