Project Case Study
Draftastic
A realtime team drafting app born from watching a tournament spend an hour picking teams over a conference call and a spreadsheet.
Date
2023
Type
Personal Project
Stack
Next.js (App Router), TypeScript, PostgreSQL, Tailwind, Prisma, tRPC, Shad (Radix) UI, WebSockets, Vercel
01 / Context
Context and Objective
I was in a tournament where we needed to pick teams in a 'captains style draft'. Someone was managing it over a conference call, tracking everything in a spreadsheet. It took over an hour to draft 100 participants into 20 teams. I knew this could be so much better.
I also wanted to build something properly full-stack for once. My personal projects had been pretty front-end heavy, with backends mostly just serving static data. Draftastic was my chance to build real CRUD functionality end-to-end.
Figure
A captains-style draft in progress: teams fill up in real-time as captains make their picks.
02 / Architecture
Architecture and Delivery
- Next.js (App Router)
- TypeScript
- PostgreSQL
- Tailwind
- Prisma
- tRPC
- Shad (Radix) UI
- WebSockets
- Vercel
I used Next.js with the app router (which was brand new at the time). One of the best parts of this project was implementing tRPC for end-to-end type safety - it's genuinely delightful when your frontend and backend stay in sync automatically.
For styling I went with Tailwind CSS and Shad UI for accessible components that play nicely together. WebSockets handle realtime updates so everyone sees picks as they happen - the collaborative feel was important to get right.
Figure
Quick adjustments: swap players between teams or reassign on the fly.
03 / Trade-offs
Challenges and Trade-offs
The hardest part wasn't engineering - it was design. Building and designing a project this size solo really exposed my limitations. Creating a delightful experience on both mobile and desktop is genuinely difficult, and I have a new appreciation for how hard good UX really is.
Feature creep has been a constant battle. I have way more ideas for Draftastic than I have time to build (full-time job and all). Learning to ruthlessly prioritise what actually matters to users has been key to not burning out.
Figure
Auto Pick: balance teams algorithmically or let AI distribute by custom criteria.