[<ondwani

The problem

A tailoring business needed one place to run orders, production, materials, staff and money. Once it worked, other garment businesses needed the same thing, but a system built for one shop couldn't safely hold anyone else's data.

The solution

I rebuilt it as a platform where each business gets its own isolated workspace and subdomain, moved the first business in as tenant one, and added a shared marketplace where businesses sell finished pieces.

Where it started

Titunge began in December 2025 as an ERP for Gloria'z Daughter, a tailoring business. It covered the work of running the shop: orders and receipts, production batches, materials and stock movements, customers, employees, payments, expenses and overheads, with costing per garment type so the owner could see what each piece really costs to make.

One system, many businesses

To open it to other businesses, every table gained a business id, and Postgres row-level security enforces the boundary at the database level, so one tenant can't read another's data even if an application query is wrong. Each business works on its own subdomain, and the original standalone app was migrated in as the first tenant and retired.

Menus adjust to each member's role, deleted records go to a recycle bin, and every server action checks which business the signed-in user belongs to before it touches data.

A marketplace with real money in it

Businesses can list finished pieces on the Titunge marketplace, where buyers browse shops, pay through Lenco and track their orders. Paying sellers safely needed more than a checkout:

  • Payouts wait for a 24-hour dispute window after delivery before any money moves.
  • Lenco doesn't send a webhook when a payment fails, so a scheduled job reconciles orders whose payment never confirmed.
  • Payout transfers are checked against Lenco until they settle, and retried a limited number of times if they fail.
  • Webhooks are treated as hints: every payment is re-verified with Lenco directly before an order changes state.

Plans and billing

The free plan covers one user. The team plan allows unlimited users and is billed monthly for each seat after the first, charged automatically by a scheduled job.

Outcomes

The first tailoring business runs its daily operations in Titunge

Any garment business can sign up and get an isolated workspace on its own subdomain

Tenant data is separated at the database level, not just in application code

Sellers are paid automatically after a dispute window, with failed transfers retried

Missed or failed payment notifications are caught by scheduled reconciliation

Team plans are billed per seat without manual invoicing

Next case study

TAKUZA