Inspiration

Every finals week the same thing happens: I move from floor to floor in the library. I check three different buildings just to find a room that is already taken. There is no way to know a space is available until I walk up to the door. By which time someone else has probably already taken it. That wasted time adds up quickly when I am already stressed about studying. I thought this was a problem every student on campus faces but no one had created a simple solution for.

What it does

Space Finder shows students which study rooms and spaces are likely open now based on reports from other students in real time. Of guessing I open the app see a list of rooms with a status. Free, occupied or unknown. And a timestamp showing how recent that report is. If I pass a room I can tap to update its status myself keeping the data helpful for the person.

How we built it

I started by outlining the process: a room needs a status, a timestamp and a way for anyone to update it with one tap. No login needed, since the main idea is to make it easy to contribute.

The frontend is built with React. It uses a component structure. There is a room list. There is a status badge for each room. There is a "report status" button. The backend uses Firebase, Firestore to store the current status of each room and the last‑updated timestamp. Firestore’s real‑time listeners push updates to every user instantly. So if someone marks a room as free everyone else sees the room change in time without refreshing. I seeded the database with a handful of rooms, from my school’s library matched to their actual floor and building names. The demo shows a space that students will recognize immediately.

Challenges we ran into

The biggest challenge was figuring out what to do with data. A report from two hours back isn't very helpful but I didn't want to just get rid of it and leave the screen empty. I worked around this by adding a " updated X minutes ago" message so people can see how recent the information is instead of relying on a simple free/occupied signal. A second problem was making the updates happen in time in a way that feels smooth, without making the code too complicated. My first try fetched the list of rooms every time something changed which made the whole page jump and reload when it didn't need to. I fixed that by using Firestores onSnapshot listener to only update the one room that changed so the user interface stays fast and steady even when many people are updating their status at the time.

Accomplishments that we're proud of

I'm proud that Space Finder went from an idea about a daily annoyance to a working app with live real-time updates in just a few weeks. All on my own. Getting Firestore’s real-time listeners to sync smoothly across users felt like a real breakthrough. Watching a room’s status change instantly on another device without needing to refresh. That was the moment the project stopped feeling like theory and started feeling real. I’m also proud of staying focused on the MVP. Of adding every feature I could think of. Like pulling in official room booking schedules. I stuck to the simplest version that actually solved the core problem. That discipline meant I had a working demoable product well before the deadline, not a half-built mess.. Seeding the app with real rooms, from my own campus not fake placeholder data made the demo feel like something students could start using tomorrow.

What we learned

Building this on my own taught me how much of a "feature can come from smart design rather than complex logic. The crowdsourced check-in idea works because it is very easy to use not because of clever backend predictions. I also learned to limit my scope: I originally wanted to get room booking schedules from the library system but I realized that a simple version would show the idea better and prove the concept faster.

What's next for Space finder

The next plan is to add room-booking schedule data where it is available so the app can show "free until 3pm" instead of just a snapshot. I also want to add push notifications, for a saved room and expand beyond the library to classrooms and common areas across campus.

Built With

Share this project:

Updates

Submission history