I. Inspiration
Every semester at Purdue, students struggle to swap into the right class sections. Current tools are clunky, unsafe, or non-existent. We wanted a simple, secure, student-first platform to solve this.
II. What it does
Class Swap – Boiler Bridge lets Purdue students browse and request section swaps.
- Public users can search and view swaps.
- Logged-in Purdue students can create requests, make offers, chat via in-app DMs, and confirm matches through a double-handshake "Agree" flow.
III. How we built it
- Frontend: Next.js App Router + TypeScript, TailwindCSS, shadcn/ui.
- Backend: Supabase (DB + Auth, with RLS).
- Data: Purdue.io API (with seed fallback).
- State & Forms: TanStack Query + react-hook-form + zod.
- Built milestone by milestone: schema + RLS → auth gate → course search → swap creation → listings → detail + offers + DM → dashboard.
IV. Challenges we ran into
- Wrestling with dependency mismatches (React 18 vs lucide-react).
- Setting up Supabase RLS while keeping the demo functional.
- Email verification bounces and rate limits during hackathon testing.
- Time pressure: fitting an end-to-end build into <15 hours.
V. Accomplishments that we're proud of
- End-to-end working demo with both public and authenticated flows.
- Seamless double-handshake "Agree" system.
- DM dialog tied to each offer — no external inbox needed.
- Seeded data so the demo runs live even without Purdue.io API.
VI. What we learned
- How to design a lean but real database schema for a production-like demo.
- The importance of environment configs and RLS early in the build.
- Supabase Auth + email flows in hackathon conditions.
- Scoping: deciding what’s truly MVP vs. "nice-to-have".
VII. What's next for Class Swap – Boiler Bridge
- Production readiness: custom SMTP + polished auth flows.
- Mobile UX: tighter layouts, swipe gestures.
- Better course data: deeper Purdue.io integration.
- Social features: notifications, reporting, admin dashboard.
- Scale: extend to other universities beyond Purdue.
Built With
- database
- lucide-react
- next.js-(app-router)
- node.js-(migrations-&-seeding)
- purdue.io-api-(seed-fallback)
- react-hook-form-+-zod
- rls)
- shadcn/ui
- supabase-(auth
- tailwindcss
- tanstack-query
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.