How butterkookies/finlite works
FinLITE is a role-gated finance and document-generation app for student officers. Its primary workflow is to record financial activity, reconcile the cashbox and advances, then prepare and export institutional proposals or liquidation reports. Authentication and administrator approval control access; a grounded assistant answers questions about ledger context. The tree and excerpts establish the report, chat, and approval handlers, but do not expose transaction APIs or all page wiring, so those internal connections are intentionally limited.
Main entry points: server.js Supabase access · app/page.jsx Finance dashboard · admin/page.jsx Admin console · login/page.jsx Login and registration
Components 25
Access and governance
- Login and registration
app/login/page.jsx - Authentication handlers
app/api/auth/login/route.js - Google OAuth callback
app/api/auth/callback/route.js - Google profile registration
app/api/auth/google-register/route.js - Email registration
app/api/auth/register/route.js - Pending approval
app/pending-approval/page.jsx - Admin console
app/admin/page.jsx - Request review
app/api/admin/requests/route.js - Approve or reject
app/api/admin/approve/route.js - User roles
app/api/admin/users/route.js
Financial operations
- Finance dashboard
app/page.jsx - Transaction ledger
components/ledger/TransactionTable.jsx - Transaction entry
components/ledger/NewTransactionModal.jsx - Cash reconciliation
components/reconciliation/DenominationCounter.jsx
Documents and assistance
- Business proposals
components/proposals/NewProposalModal.jsx - Document preview
components/reports/DocumentPreviewModal.jsx - DOCX generation
app/api/reports/docx/route.js - AI chat interface
components/ai/AIChatDrawer.jsx - Grounded assistant
app/api/chat/route.js
Data and integrations
- Supabase access
lib/supabase/server.js - Supabase Auth
- Supabase database
- Gemini API
Other components
- Officer
- Administrator
Connections 31
- Officer → Login and registration: signs in
- Login and registration → Authentication handlers: submits credentials
- Login and registration → Email registration: registers
- Authentication handlers → Supabase access: creates client
- Email registration → Supabase access: creates clients
- Authentication handlers → Supabase Auth: authenticates
- Email registration → Supabase Auth: provisions user
- Google OAuth callback → Supabase access: creates client
- Google OAuth callback → Supabase Auth: exchanges code
- Officer → Pending approval: checks status
- Administrator → Admin console: reviews access
- Admin console → Request review: loads requests
- Admin console → Approve or reject: submits decision
- Admin console → User roles: manages roles
- Request review → Supabase access: verifies admin
- Approve or reject → Supabase access: verifies and writes
- User roles → Supabase access: verifies and queries
- Supabase access → Supabase database: queries and updates
- Supabase access → Supabase Auth: accesses auth
- Officer → Finance dashboard: uses finances
- Finance dashboard → Transaction ledger: views activity
- Finance dashboard → Transaction entry: records activity
- Finance dashboard → Cash reconciliation: reconciles cash
- Finance dashboard → Business proposals: prepares proposal
- Business proposals → Document preview: previews document
- Officer → Document preview: edits preview
- Document preview → DOCX generation: requests export
- DOCX generation → Supabase database: reads ledger data
- Finance dashboard → AI chat interface: opens assistant
- AI chat interface → Grounded assistant: sends query context
- Grounded assistant → Gemini API: sends grounded prompt