Inspiration
CUNY is one university system spread across 25+ campuses, but there's no shared space that actually connects those students day to day. Group chats are scattered by campus and major, tutoring and office hours are limited, and there's no reason to stay engaged beyond the classroom. CTP Hacks gave us a one-day window and Gemini as a sponsor technology, so we asked a simpler question: what's the smallest version of "one place for every CUNY student" that we could actually finish and demo by the end of the day?
What it does
CunyConnect is a CUNY-only platform built around three things:
- Campus Feed - post a question, find a study group, or sell a textbook, with photo and file attachments, visible to every CUNY student regardless of campus.
- CUNY AI - paste your notes into a Gemini-powered study assistant and get a summary, a quiz, etc.
- CUNY Points - earn points for posting and studying, then spend them in the Rewards shop on avatars, frames, and badges. Owned avatars can be applied instantly, updating your profile everywhere.
Signing up asks for your CUNY campus (all 25+ colleges are in the dropdown) and starts you off with a welcome bonus of points so the Rewards page isn't empty on day one.
How we built it
The frontend is plain HTML, CSS, and JavaScript, no framework, no build step, split across five pages (landing, auth, feed, CUNY AI, rewards, profile) and styled with a single shared design system for color, type, spacing, and icons so every page reads as one product. Supabase handles authentication, the Postgres database, and file storage for post attachments. Gemini is called directly from the browser with structured JSON output for the study assistant modes. We split the work three ways: frontend/UI, the Supabase schema and backend, and the Gemini prompt tuning, merging our pieces together as each part came online over the course of the day.
Challenges we ran into
The frontend and backend were built in parallel by different teammates, so once we connected them the two sides didn't agree on column names or table structure — author_id vs. user_id, a single display name vs. separate first/last name fields, redemptions vs. purchases. We also hit Supabase-specific gotchas that weren't obvious from the docs: Storage buckets need an explicit Row Level Security policy before uploads work even when the bucket is "public," cached auth sessions can outlive a user that no longer exists after a project reset, and Supabase's signup endpoint rate-limits repeated attempts from the same email. Working through each of these live, one console error at a time, ate more of the day than we expected.
Accomplishments that we're proud of
We got the full loop working end to end in a single day: sign up, post to the feed with attachments, earn points, use the AI study assistant, spend points in the Rewards shop, and apply a purchased avatar back to your profile. We also kept every page visually consistent under one design system instead of ending up with mismatched pages bolted together, and we adapted the frontend to match the real (and occasionally messy) schema our teammate had already built rather than asking them to redo their side under time pressure.
What we learned
Aligning on a shared schema before either side starts building would have saved us real time, a five-minute conversation about column names would have prevented most of our debugging. We also learned to read the actual error message before guessing: several "the button doesn't work" reports turned out to be one specific Supabase error (a 404, an RLS violation, a foreign key mismatch) that pointed straight at the fix once we looked at the browser console instead of the UI.
What's next for CUNYConnect
Turning the emoji-based avatars into real illustrated images, adding Row Level Security policies so users can only edit their own data, bringing back AI-assisted categorization for feed posts, and reintroducing the features we deliberately cut for time, mystery boxes, badges, and a cross-campus leaderboard. Longer term, we'd want a mobile-responsive pass and a real deployment so any CUNY student can actually sign up and use it, not just judges at the demo table.
Built With
- css
- gemini
- gemini-api
- html
- javascript
- postgresql
- supabase
Log in or sign up for Devpost to join the conversation.