How lalaprog/unofficial-asinta works
BALE is a role-aware project billing and workforce ledger for Asinta Architects. Users sign in, then founders manage projects, clients, invoices, expenses, tools, advances and payroll; supervisors use assigned-site attendance. The shared data store reads and mutates Supabase records under RLS. Separate branches provide AI-assisted expense suggestions, receipt handling, and email/SMS communications with scheduled reminders. The README documents the database, role enforcement and major capabilities; sampled source confirms selected store, auth, reminder, and preview behavior. Many feature pages and integrations were not sampled, so their internal call paths are not inferred.
Main entry points: store.tsx Ledger store · page.tsx Expense tracking · AppShell.tsx Workspace shell · route.ts Reminder dispatch
Components 23
Workspace operations
- Workspace shell
components/layout/AppShell.tsx - Projects and clients
app/projects/page.tsx - Billing
app/invoices/page.tsx - Expense tracking
app/expenses/page.tsx - Field attendance
app/attendance/page.tsx - Payroll
app/payroll/page.tsx - Worker advances
app/advances/page.tsx - Tool tracking
app/tools/page.tsx
Identity and data
- Role-aware login
app/page.tsx - Session context
lib/auth/authContext.tsx - Route guard
middleware.ts - Ledger store
lib/data/store.tsx - Supabase data
Communications
- Reminder scheduler
lib/reminders/scheduler.ts - Reminder dispatch
app/api/cron/reminders/route.ts - Email service
lib/email/service.ts - SMS delivery
lib/sms/deliver.ts - Mail and SMS providers
AI assistance
- AI endpoints
app/api/ai - AI expense support
lib/ai - Groq service
- Receipt storage
lib/supabase/receipts.ts
Other components
- BALE users
Connections 23
- BALE users → Role-aware login: signs in
README.md - Role-aware login → Session context: establishes session
lib/auth/authContext.tsx - Route guard → Supabase data: validates role
README.md - BALE users → Workspace shell: opens workspace
- Workspace shell → Session context: checks session
components/layout/AppShell.tsx - Workspace shell → Ledger store: loads records
components/layout/AppShell.tsx - Projects and clients → Ledger store: manages records
- Billing → Ledger store: manages billing
app/invoices/page.tsx - Expense tracking → Ledger store: manages expenses
app/expenses/page.tsx - Field attendance → Ledger store: records attendance
app/attendance/page.tsx - Payroll → Ledger store: prepares payroll
app/payroll/page.tsx - Worker advances → Ledger store: manages advances
- Tool tracking → Ledger store: manages tools
- Ledger store → Supabase data: reads and writes
README.md - AI endpoints → AI expense support: uses assistance
- AI expense support → Groq service: optionally extracts
README.md - Expense tracking → AI endpoints: requests suggestions
- Expense tracking → Receipt storage: stores receipts
README.md - Reminder dispatch → Reminder scheduler: runs scheduling
app/api/cron/reminders/route.ts - Reminder dispatch → SMS delivery: dispatches reminders
app/api/cron/reminders/route.ts - Email service → Mail and SMS providers: sends email
- SMS delivery → Mail and SMS providers: sends SMS
- BALE users → Email service: configures messaging