Back to work

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.

Completed2026Public repository
Responsive CBU Find report feed populated with meaningful lost and found items and matched report states
Verified project evidence from the current implementation.
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.

Email/password and Google authentication with password recovery
Android and responsive web clients sharing live data
Lost/found reports with signed images, search and filters
Deterministic found-it and ownership claims
Owner acceptance before private messaging
Real-time inbox, unread state and media attachments
Sender-controlled message editing and deletion
Blocking, abuse reporting and privacy-limited moderation
Push-notification preferences and private message previews
Matched, resolved and reopened report lifecycle
Queued account deletion and history anonymisation
Light, dark and system appearance modes

Product evidence

See the work
in context.

Current, privacy-reviewed captures from the implemented product.

CBU Find web report feed showing four meaningful campus reports and matched states
The responsive web feed exposes the same searchable lost-and-found records as Android, including clear lost, found, active and matched states.
CBU Find Android create-report form for a lost or found item
The Android report flow captures type, category, campus location, compressed photos, a useful description and private handover details.
CBU Find claims page showing accepted found-it and ownership claims
A deterministic claim must be accepted by the report owner before the matching report changes state and a private conversation becomes available.
CBU Find private handover conversation with meaningful messages and report resolution control
Accepted participants can arrange a safe campus handover, edit or delete their own messages, report abuse and close the report when the item is returned.

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

Cross-platform contract designCompose and responsive React architectureFirebase real-time securityTrusted edge API designRace-safe claim workflowsQueued FCM deliveryPrivacy-limited moderationLegacy schema migration

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.

Open to opportunities

Let’s discuss your role,
product or technical challenge.

Open to graduate software roles, internships, freelance projects, remote work, local business systems, startup partnerships and technical collaborations.

Start a conversation

Navigate the system

Where should we go?