
Finlux App
Expo / React Native client in a monorepo with Next.js + Supabase: owner and accountant UIs, Postgres RLS, Realtime lists, Storage for PDFs, and Next API for email, push, OAuth, and cron.
Technologies
?Challenge
Replace mail/SMS/PDF chaos with one shared status workflow - permissions enforced in the database, not only in the UI.
✓Solution
Supabase as system of record (Auth, RLS, Realtime, Storage); Next.js for secrets and side-effects; Expo Router screens split by role with Bearer JWT from mobile.
Key decisions
RLS-backed roles
Owner vs accountant access enforced in Postgres - not fake roles in the client.
Supabase + Next split
CRUD/realtime in Supabase; service role, Resend, Expo Push, Google OAuth, and recurring-invoice cron on Next.
Production mobile edges
OAuth deep links, AsyncStorage session (SecureStore token limits), FCM/EAS builds and OTA.
Results
Dual-role product in one codebase
Live status updates via Realtime + push
Vertical slice: NIP → KSeF/PDF → notification


