Project Info
Inspiration
As students at UCSC that live off of campus, we always end up end up spending our time at one of the two main libraries; Science and Engineering, or Mchenry. While these are great locations to study, relax, and meet up with study groups/friends, we realized that there are times when we end up having to travel an absurd amount when these libraries are out of the way of our classes. We also realized that we have ended up limiting ourselves to taking advantage of all of the resources available on campus by going to only two study locations on campus that are booked up most of the time. Our goal is to find nearby available classrooms, food spots, and study locations on the UCSC campus to make the most of your time between classes, so we built BananaBreak!
What it does
BananaBreak scrapes live UCSC class and discussions section data to figure out which classrooms are occupied and which ones are free at specific times within the day. Then it maps that data to easy to use frontend and a screen with a view of Google Maps that helps you find classrooms currently empty locate nearby study spots locate food options on campus find best placed on campus based on current location find study spots between your classes
How we built it
Web scraping Selenium, BeautifulSoup to scrape live data from UCSC class search portal. Python (pandas) to preprocess the data Data Storage MongoDB Altas for easy access and history tracking Frontend Node.js and Express with EJS templates for easy navigation of classes Google Maps API for visualizing locations Backend render.com and .tech domain
Challenges we ran into
Scraping Inconsisties: Scraping dynamic Javascript within the class search was difficult Data cleaning: took a long time to make sure the correct information was being parsed out, took a lot of trial and error Integrating both Google Maps API and the class search and free classroom finder was a struggle, but we were able to do it! We had lots of inconsistencies with the way we interpreted the scraped data and how we wanted to use it, so once we started connecting the backend with the frontend, we had to redo some parts so that all classes/spots were accounted for. Tried to use a different map visualization api, but found that there were a lot of inconsistencies with addresses and had locations that we could not find addresses for, so we had to improvise. Faced a similar problem again with Google Maps API, but we tinkered around with the commas within the dataset.
Accomplishments we're proud of
Successfully scraped entire classroom availability from UCSC, and automated to MongoDB Built interactive map-based UI that shows live data (never used Google Maps API before) Deployed a fully working product(calendar, add/remove class, room schedule) Took a problem we face every day as students and turned it into a creative, deployable solution Encouraging students to discover more of campus rather than what they feel comfortable with
What we learned
Applied what we learned about end-to-end systems with Python, Pandas, and MongoDB MODULARIZATION is so important and saved us when trying to integrate our individual parts and when trying to improve on features Learned more on node.js and express (we had never made such hefty applications with these tools before) DNS concepts such as A records, CNAME, and TTL values
What's next
Focus on secondary lab locations for a small number of classes Add a social feature so students can see which spots are trending or where friends/study groups are meeting up between classes Improve upon our algorithm for finding close by classes/classes in between WRITE TESTS to verify the work we did, specifically with weird address locations Incorporate outdoor spaces and try to find either addresses for these places, or direct coordinates (effective for bench areas) Switch to MapBox from Google Maps API
BananaBreak: UCSC Classroom Finder
BananaBreak is a full-stack system built to help UCSC students find empty classrooms to relax, study, or hang out between classes.

How to Run
1. Clone the repo & setup environment
git clone https://github.com/varunpalanisamy/BananaBreak.git
cd BananaBreak
python -m venv newenv
source newenv/bin/activate
pip install -r requirements.txt
npm install
2. Add Google Maps API Key
Create a file:
public/config.js
With the contents:
"GOOGLE_MAPS_API_KEY": "YOUR_GOOGLE_MAPS_API_KEY"
Replace with your own API key. Make sure you enable:
- Maps JavaScript API
- Geocoding API
- Distance Matrix API
3. Run Website
node index.js
Visit http://localhost:3000 in your browser.
Dependencies
All dependencies are listed in requirements.txt:
seleniumwebdriver-managerpandasbs4pymongostreamliturllib3
Install all at once:
pip install -r requirements.txt
Made by Varun Palanisamy and Shivani Belambe
Project for UCSC – helping students find quiet classrooms and reduce stress during breaks between classes.
Analysis
View
Metric
- 33
- 15
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- ExpressIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- StreamlitIn code
6 of 6 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
55 KB
Source files
14
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
varunpalanisamy/BananaBreak
35 files · 4.2 MB · @ a4aa619
Structure
Interface
4 files · 11%Screens, components and styles rendered to the user.
Application logic
8 files · 23%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- JavaScript47%
- Python39%
- CSS8%
- HTML5%
- Markdown2%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 7- bs4
- pandas
- pymongo
- selenium
- streamlit
- urllib3
- webdriver-manager
package.json
npm · 4- csv-parser
- dayjs
- ejs
- express
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.