HACKFAM
Teammate matching for hackathons, CTFs and game jams, event by event.
Try the prototype (opens in a new tab)
- Role
- Sole developer: product, design, Flutter app, Next.js web app, Supabase backend and tests
- Dates
- Oct 2026 – present
- Status
- Prototype live · building
- Stack
- Flutter, Next.js, Supabase
Technical decisions
| Decision | What I chose | Instead of |
|---|---|---|
| Event-specific relevance matching over global discovery | Event-specific pools and complementary roles, with a separate Anyone scope for future teammates | A global feed of nearby builders or generic professional networking connections |
Results
- database tests at the last run
- 995
- edge-function tests
- 186
- mutations caught
- 117
From the 21 October 2026 handoff, not re-run. The product is not released.
Full engineering notes
Summary
HACKFAM is an event-first teammate-matching app for hackathon, CTF and game-jam builders. You choose an event, discover builders by complementary roles, and work toward a team. An Anyone scope supports finding future teammates outside one event. I am building the Flutter app, Next.js web app and Supabase backend. By 26 October, Flutter Events, onboarding, sign-in, You, Settings and Discover screens were implemented, alongside web Discover and contract-aligned data layers. Teams, chats, remaining web screens and end-to-end integration are still in progress. The public clickable prototype uses mock data; the product is not released.
The problem
Hackathon teams form in chat threads and on luck, and the people best placed to fill a team’s gap rarely find each other.
- A team that needs a designer or a backend developer has no way to search for that gap at one event.
- Teammate apps borrow dating-app patterns that suit nobody who just wants a working team.
- Showing who is in a small pool can expose people, so small pools must stay hidden.
- Matching should explain itself, so you can see why someone fits.
My role
What I owned
- The product: event-first pools, role slots, complementary ranking with explainable scores, an “Anyone” scope for future teammates and purpose-first onboarding with GitHub connect.
- The backend core on Supabase: Postgres 17 with row-level security, Realtime, pgvector, edge functions and a contract package that generates both TypeScript and Dart types.
- The design system in both apps: a phone tab bar, an iPad rail and a desktop sidebar, light and deep-dark themes, one typeface (Mona Sans).
- Flutter feature screens for Events, onboarding, sign-in, You, Settings and Discover, web Discover, and client data layers aligned to the shared backend contract.
- The interactive prototype and the showcase.
What I did not own
- Flutter, Next.js, Supabase and the other open-source tools it is built on.
- Teams, chats, remaining web screens and complete integration are still in progress. Screenshots distinguish development screens with sample data from the interactive design prototype.
- No public app deployment or store release is claimed. The public clickable prototype is a separate design demonstration.
Why I made each decision
Event-specific relevance matching over global discovery
- Because
A team at a hackathon or CTF needs complementary roles for that event. Event discovery therefore uses event context and role gaps to explain a match. Anyone provides a separate scope for future collaborators, while onboarding keeps the purpose centred on building together.
- Trade-off
The product must explain which scope a person is browsing and why a builder fits, without exposing membership in small pools.
Testing
The 21 October handoff records 995 database and 186 edge-function tests passing, plus 117 caught mutations. The 26 October handoff reports additional Flutter feature and web Discover checks, but full backend and app integration is still in progress. Counts below retain their original scope and date; they are not a fresh end-to-end pass claim.
- pgTAP database tests
- 995
- Edge-function tests
- 186
- Mutations the tests catch
- 117
Results in detail
A prototype anyone can click
The interactive prototype opens on an event, shows ranked builders, a match and a filled team, with mock data (a demo event and a demo match). It is a design prototype, not the shipped app.
Feature screens now implemented
Flutter Events, onboarding, sign-in, You, Settings and Discover now exist in the application, together with web Discover and client data layers. Teams, chats, remaining web screens and backend integration are still in progress. Development screenshots use sample data and do not represent a released service.
Stack and release record
Platforms
Mobile (Flutter: iPhone, iPad, Android): in development, Web (Next.js): in development, Interactive design prototype in the browser
Built with
Flutter, Riverpod, Next.js 16, React 19, TypeScript, Supabase (Postgres 17, PostGIS, pgvector, row-level security, Realtime, Storage), Deno edge functions, pgTAP, A shared contract package generating TypeScript and Dart types
Status in full
In development and unreleased. The public design prototype is available. Flutter Events, onboarding, sign-in, You, Settings and Discover screens, plus web Discover and client data layers, are built. Remaining screens, backend work and end-to-end integration are still being completed; there is no public app deployment or store release.