Malvora
Start a Project
MahU project screenshot
Mobile App · Consumer

MahU

A cross-platform iOS and Android app giving couples a private, offline-capable space to journal dreams, store shared memories, and schedule reminders — built with Expo, SQLite, and Firebase sync.

Platform
iOS & Android (+ Web)
Role
Full-stack mobile engineering
Category
Consumer · Lifestyle
Architecture
Offline-first + Cloud sync
error_outline

The Problem

Couples lack a private, focused space for capturing personal moments. Existing journaling and photo apps are either general-purpose, tied to social networks, or offer no meaningful privacy protections — meaning sensitive memories can be exposed by screenshot, cloud breach, or simply poor UX defaults.

The client needed an app that felt personal and intimate, worked reliably without internet access, and treated privacy as a first-class feature rather than an afterthought. It also had to be built for both iOS and Android from a single codebase, without compromising native performance.

lightbulb

The Solution

We built Mahu as an offline-first Expo app using SQLite and Drizzle ORM for all local data — meaning every journal entry, photo, and reminder is stored on-device first, with optional Firebase sync for cross-device access. This architecture guarantees zero data loss even in poor network conditions.

Privacy was engineered in at every layer: a passcode-gated app lock context wraps the entire navigation tree, screen capture is blocked system-level via expo-screen-capture, and media is handled with careful lifecycle management. The UI renders nothing sensitive until auth is confirmed, preventing any cold-launch exposure.

bolt

Execution

We structured the app around four focused surfaces — Dreams, Gallery, Reminders, and Profile — each with its own data model and navigation flow. Expo Router handled deep linking and tab structure cleanly, while FlashList replaced FlatList throughout for 60fps scrolling on large media libraries.

Database migrations were managed with Drizzle Kit, giving the client a robust toolchain for iterating on schema without data loss. Firebase was integrated as an optional sync layer rather than a dependency, so the app ships fully functional with no backend configuration required.

trending_up

Results

2 platforms

Single codebase, iOS and Android production builds

Offline-first

App works fully without internet — data never lost

Zero-exposure

Screen lock, capture prevention, and staged auth bootstrap from day one

stacks

Tech Stack

Mobile
ExpoReact NativeTypeScriptexpo-router
Styling
NativeWindTailwind CSS
Data
SQLiteDrizzle ORMAsyncStorage
Cloud Sync
Firebase FirestoreFirebase Storage
Media & UX
expo-imageexpo-image-picker@shopify/flash-listexpo-screen-capture

Ready to build?

Your product could be live in 4 weeks.

Book a free 30-minute strategy call. We'll scope your MVP, define the architecture, and tell you exactly what it takes to launch.

Book a free strategy callarrow_forward