We're building the Mental Bank Ledger app so members can make their nightly deposit on a computer, an iPhone or an Android phone, all under one account. The app is working and in testing. Members record personal entries every night, so keeping their ledgers private is our top priority, and we want to get the security plan right before launch.
The app is a web app (HTML, CSS and JavaScript). Accounts and data are currently stored in Supabase (PostgreSQL with row-level security).
Our plan before launch:
• Encrypt each member's ledger on their own device before it syncs, so the server only ever stores scrambled data, with a recovery key for members who forget their password
• Move accounts and data from the free test service to a self-hosted secure server
• Wrap the app with Capacitor for the Apple App Store and Google Play
What we'd like help with in this session:
1. Is our overall plan sound, and what are the biggest risks we might be missing?
2. Does our approach to on-device encryption and recovery keys make sense for non-technical members?
3. What matters most when self-hosting the server safely?
4. What should a full security review cover, and how should we scope it so a later volunteer project is focused and useful?
What a successful session looks like: We come away with a short list of top priorities, any changes to make before we build the encryption, and a clear scope for a follow-up code review.
Ideal volunteer: Someone with application security or penetration testing experience, ideally with web or mobile apps. Experience with Supabase, PostgreSQL or client-side encryption is a plus.