The Problem
I'm a biomedical scientist and IT systems lead at an NHS hospital. My work involves two very different toolsets — lab calculations (serial dilutions, molarity, sensitivity/specificity) and IT tools (UUID generation, hashing, JSON formatting).
I was switching between 5-6 different apps and websites every day. Most converter apps only handle the basics (length, weight, temperature), most dev tool apps are just bookmarks to websites, and most calculator apps are stuffed with ads.
So I built one app that does all of it.
What's In It
14 Developer Tools (all offline, no data sent anywhere):
- UUID v4 generator
- SHA-1/256/512 hash
- Base64 encode/decode
- JSON formatter and validator
- Regex tester with live matching
- URL parser, Unix timestamp, IP subnet calculator
- Number base converter, password generator
- NATO alphabet, case converter, colour picker, Lorem ipsum
60+ Professional Calculators:
- Finance: compound interest, mortgage, ROI, loan, tip, VAT
- Health: BMI (colour-coded), calories, heart rate zones, blood pressure
- Laboratory: serial dilution, molarity, pH, sensitivity/specificity
- Photography: exposure, depth of field, ND filter, crop factor
- Trade: voltage drop, wire gauge, pipe flow, concrete volume
- Plus math, physics, cooking, music, and astronomy
150+ Unit Conversions across 17 categories, a searchable Periodic Table, and live currency conversion with 22 currencies.
The Stack
- React Native / Expo (SDK 52)
- Single-file architecture — yes, one App.js at ~7,400 lines. I know. It works.
- RevenueCat for in-app purchases
- AsyncStorage for persistence
- No backend — everything runs on-device except currency rate fetching
Lessons From the Build
1. React hooks ordering is brutal in a monolithic file.
I hit "rendered fewer hooks than expected" errors repeatedly. Every early return in a component that has hooks downstream will crash. I ended up moving every useRef and useMemo above all conditional returns.
2. Google Play's new developer requirements add weeks.
New developer accounts need 12 testers opted into a closed test for 14 days before you can even apply for production access. Finding 12 Android users when your friends all have iPhones is its own project.
3. Local Android builds on Windows are painful.
Java version mismatches, Gradle auto-updating and breaking your signing config, keystore management across EAS and local builds. If you're on the free EAS tier and run out of builds, local building is possible but expect 2-3 hours of toolchain debugging.
4. The native Android Picker ignores React Native styling.
The dropdown popup uses system theme colours regardless of what you pass as style or color props. I ended up replacing every native Picker with a custom Modal-based component to get consistent theming across dark/light/AMOLED modes.
5. RevenueCat handles "already owned" gracefully — if you code for it.
When a user already owns a non-consumable product and tries to purchase again, Google throws an error. RevenueCat surfaces this as PRODUCT_ALREADY_OWNED. You need to catch this specifically and call restorePurchases() instead of showing an error.
Try It
Free on Android, no ads, no tracking, works offline.
If you find it useful, a Play Store review would really help a solo dev out. And if you have suggestions for tools or calculators to add, I'm all ears.
Built by a biomedical scientist who just wanted to stop switching between apps.