Every feature,
tuned to disappear nicely.
Wisp packs the messaging essentials — stories, chats, camera, friends, location, and a personal archive — into one polished, dark-mode-first Android experience.
The story is the whole point.
Every wisp you post lives for exactly 24 hours, then quietly fades. There is no archive, no algorithm, no infinite feed. Just the people you trust, glowing for a day.
What makes it different
- Auto-expire after 24h. WorkManager runs a periodic cleanup worker that tombstones old documents.
- Tap-to-advance viewer. Fullscreen, timed progression, ambient blur on the edges.
- Friend-scoped queries. Stories collection is filtered server-side by your friend list.
- View tracking. Each story knows who's seen it without exposing read receipts to others.


Real-time, offline-first, beautiful.
Text-only chats sync instantly via Firestore listeners and cache locally with Room — your conversations stay alive even when your signal doesn't.
What's inside
- Realtime listeners. Firestore snapshot listeners deliver each message the moment it's written.
- Offline cache. Room mirrors every conversation; the repository falls back gracefully when you're disconnected.
- Read state. Per-message isRead flag drives unread badges and notifications.
- Signature bubbles. Asymmetric corners, gradient outgoing fills, soft outer glow.

From shutter to URL in under a second.
CameraX captures, smart compression shrinks, and Imgur stores. The camera screen is the gravitational center of the app — every other surface flows out from it.
Pipeline
- Native CameraX. Front, back, and flash control with hardware-accelerated preview.
- Quality-aware compression. Targets ~200KB while preserving the dark-room glow that makes wisps look right.
- Anonymous Imgur upload. No account required, public CDN URL, indexed only via Firestore.
- Preview screen. Retake, send to chat, or post as story — three actions, no clutter.


People, groups, places, memories.
Beyond stories and chat, Wisp adds the social glue: friends, groups, location, and your own private archive.
Friends
Add by username search, or scan a QR code in person. Friend lists are stored as a simple friendIds[] array on each user document, keeping queries cheap and rules tight.
Groups
Create a group, invite friends, share stories scoped just to that circle. The custom CompositeAvatar component renders up to four member faces in a single tile.
Map
See where your friends' wisps were posted from. Opt-in only — no silent tracking, no background pings. Drop your own pin when you want a place to be remembered.
Memories
A private, personal archive of your own past wisps. Stories that fade for everyone else stay in your Memories — visible only to you, organized by month.
FCM push, with taste.
Wisp uses Firebase Cloud Messaging to alert you the moment a friend sends a message or posts a story — never a second sooner, never a second later.
- Per-chat mute toggles, with quiet-hours respected at the system level
- NotificationListener service to deduplicate and surface in-app banners
- Tap-to-deep-link straight into the conversation

Sign in once. Vanish on logout.
Firebase Authentication with Google Sign-In handles identity. No custom password storage, no leaks, no fuss. Logout wipes the local Room cache instantly.
- Google Sign-In via Firebase Auth — single tap onboarding
- All Firestore documents are scoped to the authenticated UID
- Logout flushes Room and clears Imgur upload tokens

And a thousand small details.
The polish you don't notice — until you'd notice it missing.
Dark-mode-first
Every screen designed for night. The "Luminescent Wisp" design system is documented in DESIGN.md.
30%+ test coverage
Kover-tracked unit and Compose UI tests across viewmodels, repositories, and key flows.
Composable everywhere
Pure Jetpack Compose. No fragments, no XML layouts, no view-system hangovers.
Animated transitions
Crossfades between tabs, shared-element story-to-viewer transitions, motion-aware easings.
Privacy by design
No analytics SDKs. No third-party trackers. Imgur URLs are technically public but only discoverable via Firestore.
Free-tier only
Spark plan Firebase + free Imgur API. The whole stack costs $0/month to run.
See it in motion.
Every feature on this page is captured in the showcase gallery — real screenshots from the running app.