// SKIP_TO_CONTENT.sys
TONNIECUTS

02_tonnie-cuts

TONNIECUTS

A better way to run your salon. We've replaced the chaos of manual booking with a system that just works.

// Problem: Manual ledger management creates systemic vulnerabilities in shop scaling.

// Architecture: Automated booking and instant digital reconciliation.

// Stack: Fastify · Prisma · PostgreSQL · M-Pesa SDK

// Status: Live at tonniecuts.com. Powering Nairobi's top stylists.

// THE_PROBLEM

The Accountability Barrier

Financial integrity shouldn't be an afterthought.

// THE_SOLUTION

Auditable Growth.

TonnieCuts replaces the uncertainty of paper-based tracking with a robust digital ledger. We've automated the reconciliation process to ensure every transaction is auditable and every staff payout is accurate.

// THE_TECH_FLEX

Engineered a double-entry reconciliation engine that protects shop owners from ledger drift, providing real-time financial visibility across multiple locations.

// ARCHITECTURE_SNIPPET

// reconciliation.service.ts
export class ReconciliationService {
  async reconcileLedger(shopId: string, period: DateRange) {
    const transactions = await this.db.ledger.findMany({
      where: { shopId, createdAt: { gte: period.start, lte: period.end } }
    });

    const balance = transactions.reduce((acc, tx) => {
      return tx.type === 'DEBIT' ? acc - tx.amount : acc + tx.amount;
    }, BigInt(0));

    if (balance !== 0n) {
      throw new LedgerDriftError(`Imbalance detected: ${balance}`);
    }
    
    return { status: 'BALANCED', totalVolume: this.sum(transactions) };
  }
}

// TECH_STACK

FastifyPrismaPostgreSQLM-PesaReactBullMQ