---
name: project-overview
description: SafariBucks project structure, stack, and key patterns
metadata:
  type: project
---

SafariBucks is a mobile money wallet platform for Tanzania/Kenya (Silktech Agency).

**Stack:**
- Backend: Laravel (PHP), MySQL, Blade templates for admin, Sanctum for user auth
- Frontend: Vue 3 + Vite + TailwindCSS + Capacitor (mobile)
- Admin: Blade server-rendered at `/admin/*` routes (session auth, is_admin flag)
- API: RESTful JSON at `/api/*`, protected by Sanctum or X-API-Key header

**Key patterns:**
- Admin pages follow: controller method renders view, separate `/list` endpoint returns JSON for DataTable.js
- Models use UUID as primary key (string), `$incrementing = false`
- Middleware aliases registered in `app/Http/Kernel.php` `$middlewareAliases`
- Payment providers = `MerchantAccount` model (`merchant_accounts` table)
- All transactions unified in `transactions` table with `operator`, `type`, `subtype` fields

**Why:** Mobile money payments (Vodacom M-Pesa, Tigo, Airtel, Halotel) via USSD automation on dedicated SIM-farm Android phones.
