Nothing Vault
A photo vault for Android that keeps your private pictures hidden. Each folder has its own PIN. Enter the correct PIN and the folder opens. Enter a wrong one and you get a blank screen that makes the app look like a useless placeholder. Photos are encrypted using the phone's hardware security, so even if someone copies the files, they can't read them.
KotlinJetpack ComposeAndroidAES Encryption
Challenges
- 1Getting encryption to actually work — Android's KeyStore is picky about how you set up your crypto keys
- 2Building a lock screen that either unlocks a folder or shows a decoy, depending on which PIN you type
- 3Pre-decrypting photos ahead of time so scrolling through the gallery doesn't lag
What I Learned
- ✓How Android KeyStore works and why you can't just grab the key as a byte array
- ✓How to navigate between screens in Jetpack Compose and pass data around
- ✓How to integrate fingerprint unlock with Android's BiometricPrompt API
- ✓How to hash PINs properly with PBKDF2 so they're never stored as plaintext
- ✓How to build custom UI components in Compose — a PIN pad, animated dots, frosted cards
What I learned
Scoped storage on Android is more restrictive than I expected. Biometric auth with androidx.biometric is straightforward once you understand the callback flow. The hardest part wasn't the code — it was deciding what the decoy screen should say.
Screenshots




