GroupFund — Committee Finance Tool
Double-entry accounting and contribution management platform for APSU 16 committee.
// problem
Business Problem
Managing committee finances across dozens of members, multiple payment methods, and strict segregation of duties required a purpose-built system — spreadsheets and manual tracking were causing reconciliation errors and compliance gaps.
// constraints
Constraints
- Full double-entry general ledger with every transaction matched by journal entries
- Segregation of duties: recorder, verifier, and acknowledger must be three different users
- Paystack payment integration with webhook-driven automatic verification
// architecture
Architecture
frontend
Next.js App Router with tRPC for type-safe API calls, role-gated dashboards, and real-time GL views
backend
tRPC routers on Next.js with Prisma ORM, enforcing role-based access and SoD rules at the procedure level
database
Neon Postgres (serverless) with full Prisma schema — contributions, journal entries, drives, projects, audit log
deployment
Vercel with Neon Postgres, Paystack webhooks, and scheduled PDF report emails
Scalability Strategy
- Generalised GL posting rules — new drive types and payment methods add without touching existing logic
- Audit log on every mutation for full traceability
- Monthly PDF finance reports auto-generated by cron and emailed to treasurer and president
- Paystack webhook integration for automatic contribution verification on successful payment
Security Decisions
- Role hierarchy with five distinct permission levels
- Segregation of duties enforced at API level — same user cannot record and verify
- HMAC-SHA512 Paystack webhook verification
- Row-level access — members only see their own contribution history
Target Outcomes
- Full double-entry GL with trial balance, income statement, and balance sheet
- Paystack payment links with automatic webhook-driven verification
- Supplier payment flows with automatic liability account settlement
- Monthly automated finance reports delivered to committee leadership