Context
Amateur football groups pick teams every week «by feel»: someone splits the sides and unbalanced games are the norm. Equilibra started from a simple idea: the group already knows each player’s level, it just needs to be collected properly and used with care.
How it works
Every player anonymously rates their teammates (1 to 10 in half-point steps) and lists their preferred positions. The group admin selects who plays, designates exactly two goalkeepers and picks the format; 8-a-side is the usual one. A deterministic engine generates up to three balanced proposals with strength-difference and position-fit metrics, and explains the result with rules, not generated text.
Privacy by design
Individual votes are private, including from admins. Only aggregate averages are shown, marked «Provisional» until three votes are reached. Authorization is enforced in the database and on the server, never by merely hiding buttons.
Demo and standings
The portfolio links a public read-only demo with fictional data (the «Los del Jueves» group) to browse the squad, proposals and standings without signing up. The real app uses Google as the only sign-in method and works by invitation from the group admin.
Stack
Next.js 16, React 19, TypeScript, Supabase (PostgreSQL + Auth), Tailwind CSS 4, Vitest and Playwright, deployed on a self-managed VPS.




