The story behind
the wisp.
Wisp is the final project for an Android development course at university. It's an exercise in shipping a real product with real architectural taste — and a love letter to ephemeral messaging.
Build a complete Android app.
The course requires a Kotlin app with persistent storage, a real data source, MVVM architecture, authentication, push notifications, and tests. The base grade is a "3"; reaching a "1" means stacking four extensions on top.
A Snapchat-shaped messaging app.
Wisp uses the camera as the primary data source, Room for offline-first persistence, Firebase for the cloud, and Compose for the UI. Each piece earned its place — nothing is decorative.
From sketch to ship.
Concept & design system
Decided on the Snapchat-shaped scope. Wrote DESIGN.md — "The Luminescent Wisp" — to anchor the visual language before writing any code.
Architecture skeleton
Set up Hilt modules, Room database, repository abstractions, and Compose Navigation. Got Firebase Auth wiring through end-to-end before any UI.
Camera + Imgur pipeline
Built the CameraX capture flow and the Imgur upload path. The free-tier Storage workaround turned out to be a feature: anonymous URLs, no auth dance.
Stories & chat
Stories collection in Firestore, real-time listeners, story viewer. Then chat: conversations, messages, asymmetric bubbles, offline cache.
Friends, groups, map, memories
The social layer. Composite avatars for groups, opt-in map, and the private Memories archive of expired wisps.
FCM, polish, tests
Push notifications, animations, edge cases. Kover crossed 30%. Built the showcase website to wrap it all up.
How Wisp meets the rubric.
The course splits requirements into a "base" set (grade 3) and "extensions" (each one moves you up a grade). Wisp targets a grade of 1 by stacking four extensions.
All seven boxes ticked.
- Compose UI with 4 main screens + auth flow + navigation
- Data source: CameraX (the camera produces stories)
- Persistent storage: Room database
- Architecture: MVVM with Hilt + repositories
- Auth: Firebase Authentication (Google Sign-In)
- Notifications: FCM push on new messages
- Tests: 30%+ coverage tracked by Kover
Four bonus extensions stacked.
- Cloud sync — Firestore for messages and stories
- FCM push — real-time message alerts
- Offline-first — Room cache, graceful reconnect
- Custom UX/UI — bespoke design system + animations
"The Luminescent Wisp."
Wisp's design system rejects the standard dark-mode template — heavy borders, flat grey boxes, sterile dividers. Instead, the UI feels like a deep nocturnal atmosphere where information floats with weightless grace.
The "No-Line" Rule
Boundaries come from background shifts and tonal transitions, never from 1px solid borders.
The Wisp Gradient
#c890ff → #c0c1ff. The signature texture for CTAs and outgoing chat bubbles.
Editorial Type
Plus Jakarta Sans for display, Manrope for body. A dual-font approach for personality plus legibility.
Glassmorphism
Floating elements use 20% surface-variant opacity with a 28px backdrop blur.
The Wisp accents
Things people ask.
Is Wisp a real, shipping app?
Wisp is a university final project. It runs on real Android devices, syncs through real Firebase, and uploads to real Imgur — but it's not in the Play Store, and it's not designed for a public audience.
Why Imgur instead of Firebase Storage?
Firebase Storage requires the Blaze (paid) plan. The course constraints stipulated free-tier services only. Imgur's anonymous upload API is a perfect fit: no payment, no account, public CDN URLs.
Are the stories truly ephemeral?
The Firestore documents expire after 24 hours via a WorkManager cleanup worker. The underlying Imgur image stays on their CDN — but it's only discoverable via the Firestore document, which is what gets removed.
Can I use Wisp with my own friends?
Yes — clone the repo, add your Firebase config and Imgur Client-ID, build the APK, and share it with friends.
Why the name "Wisp"?
A wisp is a small, glowing shape — half-light, half-imagined. The app captures small, glowing moments and lets them fade. The name and the design system grew together.
What's the license?
Wisp is released under the MIT License for the source code. The "Luminescent Wisp" design system is documented in DESIGN.md and free to reference for educational use.
Built with care.
Wisp is school work, but it's school work made with the same attention to architecture and craft you'd give a real product. That's the only way to learn anything that matters.