Inspiration
At UT Dallas, meal plan swipes are constantly wasted while other students on campus are looking for cheap, convenient food. We'd seen classmates trying to arrange informal swipe-for-cash trades over GroupMe and Discord, with no way to verify the trade actually happened safely. We wanted to build a trusted, campus-only way to connect the two sides.
What it does
UTDDash is a peer-to-peer marketplace built exclusively for verified @utdallas.edu accounts. Swipe Providers list extra meal swipes; Buyers request food using those swipes at a discount. Every order moves through a clear lifecycle — Requested → Accepted → In Progress → Delivered → Completed, with real-time chat and notifications
so both sides always know what's happening.
The core trust mechanism is our QR code handshake: when a provider marks an order "Arrived," the app generates a one-time QR code. The buyer scans it in-app to confirm the delivery actually happened, which unlocks order completion and mutual ratings. This prevents false delivery claims and keeps both sides honest.
How we built it
- Backend: FastAPI (Python), PostgreSQL with SQLAlchemy ORM, JWT-based auth
- Real-time: WebSockets for live order status updates and in-app chat
- Frontend: Next.js + TypeScript, styled with Tailwind CSS
- Security: bcrypt password hashing, one-time-use QR tokens with expiration
Challenges we ran into
- Designing an order state machine that felt natural to both sides of a trade, without overcomplicating the UI
- Making the QR handshake genuinely tamper-resistant (single-use, time-limited tokens) while still fast enough to use in person
- Keeping WebSocket connections in sync with database state across order status changes
Accomplishments that we're proud of
- A fully working end-to-end order flow: registration, listing, requesting, real-time chat, QR-verified delivery, and ratings
- A trust and safety layer (QR handshake) that's genuinely novel compared to informal swipe-trading methods students were using before
What we learned
- How to design and secure a real-time system with WebSockets alongside a REST API
- The importance of building trust mechanisms (not just features) into a peer-to-peer marketplace from day one
What's next for UTDDash
- In-app payments with escrow (Stripe Connect), so funds release only after QR confirmation
- Live UTD dining hall menu integration
- A map view of open requests near you
- Expanded reputation system with verified badges and weighted ratings
- Containerized deployment on AWS for scale
Built With
- bcrypt
- fastapi
- jwt
- nextjs
- postgresql
- pydantic
- python
- qrcode
- react
- rest-api
- sqlalchemy
- tailwindcss
- typescript
- uvicorn
- websockets
Log in or sign up for Devpost to join the conversation.