Project Info
This project did not submit a demo video on Devpost.
Inspiration
As students at UCSC, we often need quick access to a variety of information, such as dining hall menus and next quarter’s class offerings. Unfortunately, this information is spread out and buried across multiple websites, most of which are poorly designed for mobile use. To solve this, we set out to build an all-in-one website that’s cross-platform, user-friendly, and easily accessible on both desktop and mobile devices.
What it does
Our site features a unified newsfeed that aggregates news from various departments into a single, consistent stream for easy browsing with the ability to filter news by department. The dining hall menu page compiles meal information from all UCSC dining locations, presenting it in a clear and convenient layout. Students can also search for courses across different quarters and view detailed class information. Additionally, we’ve included a personalized briefing tab on the dashboard, powered by Google Gemini, to provide users with summaries of on the latest happenings at UCSC. The entire site is fully responsive, ensuring a smooth experience on both desktop and mobile devices. We've also added a site-wide dark/light mode toggle for customizable viewing.
How we built it
We did not use any UI libraries and rolled all our CSS ourselves. Our backend, written in Python, scrapes and processes the data off UCSC's websites and serves it as an API to our frontend, which was written in React. We did not use any UI libraries for this project and rolled all our UI ourselves.
Challenges we ran into
One of the biggest challenges we ran into for this project is the responsive design. From the start, we wanted to ensure cross-platform accessibility on the site and we had to spent a significant amount of time attempting to reduce create a good, scalable UI that is clean and fast.
Accomplishments we're proud of
We are incredibly proud of our responsive design on our webpage and its cross-platform usability. We are also incredibly proud that we didn't use any UI frameworks and managed to create a good looking UI from scratch all on our own. We are also incredibly proud that we managed to build these tools in under 48 hours.
What we learned
We learned a lot about good website design and how to design responsive and user-friendly interfaces. We learned how to create layouts that adapt seamlessly across different screen sizes and devices, ensuring a consistent and accessible user experience on both desktop and mobile. We also learned how to create a robust backend API that is both fast and reliable.
UCSC.app
Born out of a Cruzhacks 2025 project, UCSC.app is a responsive, full-stack application for students that aggregates campus dining menus, news feeds, course information, events, and location data to help UCSC students navigate campus life efficiently.
Features
- Class search
- Add classes to your calendar with one click
- Dining Hall Menus
- News Feed
- Schedule Map
- Interactive campus map that shows what classes take place in a building
Getting Started
Prerequisites
- Node.js and pnpm
- Python 3.8+ and uv
Frontend Setup
- Navigate to the project root and install dependencies:
pnpm install
- Start the development server:
pnpm run dev
- Build for production:
pnpm build
Backend Setup
- Navigate to the backend directory:
cd backend
- Create a Python virtual environment:
uv sync
- Run the development server:
uv run uvicorn server:api --reload --host 0.0.0.0
Project Structure
ucsc.app/
├── src/ # Frontend React application
│ ├── common/ # Reusable UI components for all pages
│ ├── courses/ # Course search and display
│ ├── dashboard/ # Dashboard page
│ ├── menu/ # Dining menu pages
│ ├── news/ # News feed pages
│ ├── schedules/ # Schedule and map pages
└─ backend/ # FastAPI backend
├── endpoints/ # API route handlers
├── locations/ # Location and building data
└── cache/ # Cached data
Analysis
View
Metric
- 41
- 35
- 21
- 14
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
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- SQLIn code
- TypeScriptIn code
7 of 7 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
289 KB
Source files
100
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
ucsc-app/ucsc.app
138 files · 1.9 MB · @ c85217c
Structure
Interface
20 files · 14%Screens, components and styles rendered to the user.
API & routing
4 files · 3%Request entry points: routes, handlers and controllers.
Application logic
73 files · 53%Domain rules, services and shared utilities.
+5 moreData & schema
1 file · 1%Schema definitions, migrations and data access.
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
- TypeScript37%
- YAML34%
- Python13%
- CSS9%
- JavaScript3%
- Markdown2%
- Other (3)2%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 27- @mantine/core
- @mantine/hooks
- @types/leaflet
- leaflet
- react
- react-dom
- react-helmet-async
- react-leaflet
- react-router
- react-router-dom
- swiper
- +16 more
backend/pyproject.toml
pypi · 13- beautifulsoup4
- fastapi[standard]
- feedparser
- httpx
- idna
- lxml
- pygments
- python-dotenv
- python-multipart
- requests
- tqdm
- urllib3
- uvicorn
backend/requirements.txt
pypi · 7- beautifulsoup4
- fastapi[standard]
- feedparser
- httpx
- lxml
- requests
- uvicorn
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.