Medical documents with on-device encryption
Patients need one safe place for their medical documents. I built a React Native app from scratch to scan, store and share them: documents are encrypted on the phone by native modules I wrote for iOS and Android, sign-in works by scanning a QR code, and sharing works like in a messenger. The backend structures documents with AI. The app is live on the App Store and Google Play.
The problem
Patients need one place to securely store, scan and manage their medical documents, and a safe way to share them.
Health data is highly sensitive, so the app had to protect documents on the device itself and meet healthcare standards, while staying simple to use.
What I did
- Created the app from scratch, including the technology and architecture choices, with scalability and performance in mind.
- Wrote two native modules that encrypt and decrypt PDFs on the device with AES-256: Kotlin with iText on Android, Objective-C++ with PDFKit on iOS.
- Hardened the rest of the app: encrypted storage for keys and session data, SSL pinning, RSA and an obfuscated JavaScript bundle.
- Sign-up by scanning a QR code with the camera, no long forms.
- A quick, simple upload flow: pick a file or take photos of a paper document, which become a PDF on the phone.
- In-app sharing similar to Telegram, so users share documents securely without leaving the app.
- Connected the backend, which parses documents with AI to structure the data in line with healthcare standards, plus push notifications.
Result
- On-device encryption works end to end, including the native PDF modules.
- Published on the App Store and Google Play, and collecting real user feedback.
Tech stack
- Mobile
- React Native 0.74
- TypeScript
- Redux Toolkit
- React Navigation 6
- Reanimated
- Bottom Sheet
- Native
- Kotlin + iText (Android)
- Objective-C++ + PDFKit (iOS)
- Custom PDF encrypt / decrypt modules
- Security
- AES-256 PDF encryption
- RSA (react-native-rsa-native)
- Encrypted storage
- SSL pinning (TrustKit)
- Secure random
- JS obfuscation (obfuscator-io)
- Documents
- react-native-pdf
- pdf-lib
- Images to PDF
- Document picker
- Image picker
- Share sheet
- Camera & sign-in
- VisionCamera
- QR code sign-in
- QR generation
- Backend & push
- Axios REST API
- AI document parsing (backend)
- Firebase Cloud Messaging
- Quality
- Jest
Have a similar problem? Tell me about it.
A few sentences about the business problem are enough to start.