Skip to content

lebuckman/broncopath

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

126 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐴 BroncoPath 🐴

Crowd-aware campus navigation for Cal Poly Pomona

Know your campus. Beat the crowd. Find your space.


Expo React Native TypeScript Node.js PostgreSQL

What is BroncoPath?

CPP's existing campus map tells you where buildings are. BroncoPath tells you how busy they are right now and the best route to them.

BroncoPath is a mobile application that scrapes Cal Poly Pomona's publicly available class schedule data to predict building and classroom occupancy in real time — no sensors, no hardware, no institutional IT contracts required. Students can find a quiet study room, avoid crowded areas between classes, and navigate campus smarter.

This project was created following Agile Methodologies (Scrum) with an AI-augmented workflow under CS4800 Software Engineering at Cal Poly Pomona (Spring 2026). View project deliverables in docs/deliverables/.

Feature Description
📊 Live Dashboard Building-by-building occupancy overview at the current time
🗺️ Campus Map Interactive map with color-coded crowd density markers
🚪 Room Finder Browse available classrooms and study rooms by building
🧭 Route Planner Crowd-avoiding route suggestions between campus buildings

Tech Stack

Mobile

Backend

Data Pipeline

  • Python + Playwright + BeautifulSoup — schedule scraper
  • Data source: schedule.cpp.edu (public, updated nightly)

Getting Started

Prerequisites

  • Node.js 18+
  • npm
  • Xcode 15+ with the iOS Simulator

Installation

git clone https://github.com/lebuckman/broncopath.git
cd broncopath
npm install

Starting the backend

The app fetches live data from the Express backend — it must be running before you launch the app.

cd backend
npm install   # first time only
npm run dev

The server starts on http://localhost:3000. Copy .env.example to .env.local in the project root if you haven't already — EXPO_PUBLIC_API_BASE_URL defaults to http://localhost:3000.

Note

The backend connects to a Neon (serverless PostgreSQL) database. Ensure DATABASE_URL is set in backend/.env before running.

Running on iOS

BroncoPath uses Expo SDK 55, which requires a full native build — the prebuilt Expo Go app only supports up to SDK 54. Use expo run:ios instead of expo start.

npx expo run:ios

Note

Xcode compiles the native binary and installs it on the Simulator (first build takes a few minutes). Once it finishes, the Metro bundler starts and the app loads. If the Simulator doesn't jump straight to the app, find BroncoPath on its home screen and open it — Metro will connect automatically.

From that point on, JavaScript changes hot-reload without a rebuild. You only need to re-run expo run:ios when you install a new native package.

Metro cache stale? Run npx expo start --clear to flush it.

Project Structure

broncopath/
├── app/                        # Expo Router screens
│   ├── _layout.tsx             # Root layout + branded loading screen
│   └── (tabs)/
│       ├── _layout.tsx         # Tab navigator
│       ├── index.tsx           # Home / Dashboard
│       ├── map.tsx             # Campus Map
│       ├── rooms.tsx           # Find a Room
│       └── route.tsx           # Route Planner (in development)
│
├── components/
│   ├── LoadingScreen.tsx       # Branded launch screen with data prefetch
│   ├── ui/                     # Primitive components (badges, buttons, filters)
│   ├── building/               # Building cards, accordions, detail sheet
│   ├── map/                    # Map markers, legend
│   └── route/                  # Route cards (in development)
│
├── constants/                  # Colors, fonts, types, campus config
├── hooks/                      # useBuildings, useRooms, useFavorites, useRoutes
├── lib/                        # API client, data cache, room filter logic
├── docs/
│   ├── deliverables/           # Agile/Scrum deliverables
│   └── contexts/               # AI context references
│       ├── DESIGN.md           # Visual design system
│       └── REQUIREMENTS.md     # Engineering requirements & API contracts
│
└── backend/                    # Express API + Drizzle schema
    ├── src/
    │   ├── buildings.ts        # Buildings + rooms endpoints
    │   ├── serviceFunctions.ts # Room status derived from schedule data
    │   ├── db/                 # Drizzle schema + seed
    │   └── index.ts            # Express entry point
    └── scraper/                # Python CPP schedule scraper

About

Crowd-aware campus navigation for Cal Poly Pomona

Topics

Resources

Stars

Watchers

Forks

Contributors