←︎ Back to selected work

Fightbook

A multi-role combat sports platform for fighters, managers, promoters, service providers, fans and admins, taken from the first commit to production.

ArchitectureBackendReal-timeRecommendationsIdentity
Fightbook product screenshot
Fightbook
26K+real fighter profiles imported
6-7 mofrom first commit to launch
6core platform roles
01 / Context

What I walked into

Fightbook centralizes fighter profiles, fight opportunities, events, managers, promoters, service providers and fans. The backend had to support multiple combat sports, flexible rules, multi-role users and a large imported fighter dataset without turning routine queries into bottlenecks.

02 / Engineering problem

What had to be solved

Start with a schema that could grow with the product, support different sports, weight classes and fight formats, let one user operate across multiple roles, and still keep list/search workflows predictable as real data arrived.

THE WORK I OWNED

01

Designed the backend schema from the first commit, including flexible sports, weight classes, fight formats and many-to-many fighter/manager relationships.

02

Imported roughly 26,000 purchased real fighter profiles and built a one-click profile-claim flow backed by Veriff identity verification.

03

Implemented role-based authorization and in-session role switching for fans, fighters, managers, promoters, service providers and admins.

04

Built fight posting, challenge workflows and recommendation logic using sport, weight class, gender, record, location and availability.

05

Built one-to-one and group chat with Pusher presence, used Knock for product/chat notifications, Firebase for authentication and Loops for email.

06

Used BullMQ with Redis for asynchronous email and notification work so request paths stayed focused on user-facing work.

07

Reviewed PRs, helped shape technical tasks and API contracts, and coordinated backend decisions with the frontend team.

HOW THE PIECES CONNECT

01Next.js
02NestJS API
03PostgreSQL / TypeORM
04Redis + BullMQ
05Pusher
06Knock
07Firebase
08Veriff
09Loops
Outcome

The product reached its first production launch in roughly six to seven months, supported launch activity and continued to handle recurring fight postings and live product usage after launch.

TypeScriptNode.jsNestJSNext.jsPostgreSQLTypeORMRedisBullMQFirebasePusherKnockVeriffLoops
Next case studyMubadala Takafo↗︎