Overview
Lost & Found solves a real, frustrating problem — campus lost-and-found systems are manual, slow, and location-unaware. We built a full-stack cross-platform app in 48 hours that lets anyone report, search, and claim items with location context. Shipped as a functional MVP with a 3-person team.
Thought Process
The idea started from a genuine pain point: campus lost-and-found offices rely on phone calls and bulletin boards. There's no way to search by location, time, or description — you just hope someone turned it in. We wanted to fix that.
We decided early on to go cross-platform (iOS + Android) because lost items don't care about your phone OS. React Native with Expo let us move fast without maintaining two codebases. Firebase gave us real-time sync out of the box, which meant multiple people could update item status and see changes immediately.
The Flask middleware layer was a deliberate architectural choice. It gave us a clean REST API surface we controlled, let us add Python-powered search/matching logic without coupling it to the client, and kept Firebase credentials server-side only. We scoped ruthlessly — auth, item creation, location tagging, and search were the four pillars. Everything else was cut.
System Architecture
A three-layer architecture: React Native client → Flask REST API → Firebase backend. The Flask layer handles business logic and keeps Firebase credentials off the client; Firestore provides real-time document sync; Firebase Storage holds item photos.
React Native (Expo)
Cross-platform mobile UI. Handles item listing, search UI, camera capture, and real-time updates via Firestore listeners.
Flask REST API
Python middleware that exposes clean endpoints for item CRUD and location-based search. Validates inputs and manages Firebase Admin SDK calls server-side.
Firebase Firestore
NoSQL real-time database storing item documents (name, description, location, status, timestamps). Real-time listeners push updates to all clients instantly.
Firebase Storage
Stores item photos uploaded from the mobile app. URLs are saved in Firestore documents and served via CDN.
Firebase Auth
Handles user authentication. Anonymous auth for quick item reporting; full auth for claiming and managing your reported items.
Key Learnings
- 01
Real-time sync with React Native requires disciplined state management — Firestore listeners can fire frequently and you need to debounce UI updates or you get jarring re-renders.
- 02
The Flask middleware added ~50ms latency per request but the tradeoff was worth it: server-side validation, clean API contract, and the ability to add Python ML logic without touching the mobile client.
- 03
Scoping ruthlessly is a hackathon superpower. We cut a map view, chat between users, and push notifications. Shipping a tight, working core beats a sprawling half-built product every time.
- 04
Expo's OTA updates meant we could push fixes during the demo period without going through the App Store — a genuine competitive advantage at a hackathon.