Cross-platform campus platform
CBU-FIND
A completed cross-platform lost-and-found system that moves campus recovery from scattered group updates into a searchable, verified workflow.

- Role
- Product Designer & Full-Stack Developer
- Status
- Completed
- Year
- 2026
- Stack
- Kotlin · Jetpack Compose · Vinext / React · TypeScript · Firebase · Cloudflare Workers · Cloudinary
01 · Context
The problem
Lost-property information shared through chats, noticeboards and word of mouth is fragmented, difficult to search and easy to miss.
The response
CBU-FIND gives Android and web users one Firebase-backed campus record for publishing reports, verifying ownership claims, opening private handover chats only after acceptance, and closing the recovery loop when an item is returned.
02 · Contribution
What I built
- 01
Designed and built the native Android experience with Kotlin, Jetpack Compose, Material 3 and adaptive light/dark themes.
- 02
Built the responsive Vinext/React web client against the same authentication, report, claim, conversation and moderation contracts.
- 03
Implemented a trusted Hono, Zod and JOSE Cloudflare Worker API for validation, rate limiting, notification queues, audit-safe errors and sensitive mutations.
- 04
Integrated Firebase Authentication, Firestore real-time listeners, Cloud Messaging, App Check and Crashlytics across the system.
- 05
Implemented short-lived signed Cloudinary uploads for report media and chat attachments while retaining compatibility with legacy URL-only records.
- 06
Created security rules, additive migration tools and automated Worker, web, Android and Firestore-rule tests.
03 · Implemented evidence
Current
capabilities.
Product evidence
See the work
in context.
Current, privacy-reviewed captures from the implemented product.




04 · Engineering
Hard parts,
clear decisions.
Real-time reads with trusted writes
Firestore listeners preserve immediate cross-client updates, while business mutations pass through the Worker so claim races, suspensions, blocks, notifications and audit errors follow one policy.
Compatibility without destructive migration
Additive schemas and fallback reads preserve existing users, URL-only images, reports and conversations while new records gain structured assets, claims and moderation metadata.
Production behavior on free infrastructure
The backend combines Firebase Spark, Cloudflare Workers and Queues, and Cloudinary signed media while surfacing quota or connectivity failures as actionable states instead of false empty screens.
05 · Reflection
What I learned
The unified public repository was verified on 11 September 2026. A two-account acceptance run created four meaningful reports, matched reciprocal claims and exchanged three-message private handover conversations through the live web client backed by the same Firebase project used by Android.
Project access