← Projects

FOUNDER · SOLO BUILDER● IN DEVELOPMENT2025

ImIn

Sport events, minus the WhatsApp chaos.

Next.js.NET 10FirebasePostgreSQL

Screenshots

ImIn screenshot 1
Dashboard — where you can check future events, check their status, and create new ones.
ImIn screenshot 2
Event page — here you can view event details and manage your participation or that of others.

The Problem

Organizing a pickup soccer game means a WhatsApp thread that spirals for hours, who's in, who's out, do we have enough players, someone bails at the last minute. The organizer chases people manually every single week, and invites get buried in chat with no reliable head count and no history.

The Solution

ImIn replaces the thread with a shareable link. The organizer creates an event in under a minute and shares the link; invited players accept or decline in 30 seconds to a minute, no account required. Everyone can then check the live status (time, location, who's in, cancellations) without pinging the organizer. Accepting has to be faster than sending a WhatsApp message, or the product loses.

Technical Decisions

01Next.js frontend + .NET Clean Architecture backend

Next.js (App Router, React 19, Tailwind) for a fast, SEO-friendly, i18n-ready frontend. A separate .NET 10 Web API built in Clean Architecture (Domain / Application / Infrastructure / API) with a hand-rolled CQRS dispatcher, familiar territory, strong domain modeling, and room to grow the feature set (teams, tournaments, payments) without the layers bleeding into each other.

02Firebase for identity, PostgreSQL for authorization

Auth is deliberately split: Firebase handles identity (email/password + social, JWT issuance) so I never roll my own auth, while PostgreSQL owns authorization, roles, subscriptions, and everything the user is allowed to do. A User row is created in Postgres on first verified login, keyed by the Firebase UID. One source of truth for permissions; the token just proves who you are.

03Anonymous accept via link token

The load-bearing decision: a guest can accept, decline, and check event status entirely by link token, with no signup. The token maps to an EventParticipant row whose UserId is intentionally nullable, and it has to survive reload, re-share, and device switch. Forcing an account before accepting would kill the WhatsApp-replacement value, so signup is gated behind exactly one thing, posting to the event chat, as the deliberate conversion lever.

Outcome

In active development toward MVP launch. The core loop, create, share, anonymous accept/decline, live status, is built; work now focuses on hardening it and multi-channel invites (WhatsApp / email) before opening public signups. Initial target: pickup organizers in Argentina and Denmark.

Early access

ImIn is still in development. If you want to be among the first users, leave your email and I'll reach out when it's ready.