Abstract
A cross-platform basketball social and stats platform built like Strava for pickup ball. NestJS + Expo power real-time tracking, ELO rankings, game organization, and AI coaching — sub-200ms PostgreSQL queries, JWT/RBAC APIs, and 500+ waitlist users across active communities.
Highlights
- —Cross-platform mobile + web with sub-200ms PostgreSQL queries via optimized indexing
- —JWT auth, RBAC, ELO rankings, AI coaching, and real-time game organization
- —500+ waitlist users and 10+ communities — NestJS API + Expo React Native
README
View on GitHubHooply
Strava for Pickup Basketball — The definitive digital identity for amateur basketball players.
Overview
Hooply combines stat tracking, social networking, analytics, AI coaching, game organization, ELO rankings, computer vision, and local basketball communities into one platform.
Architecture
hooply/
├── apps/
│ ├── api/ # NestJS REST API + WebSockets
│ ├── mobile/ # Expo React Native iOS/Android app
│ └── admin/ # Next.js admin dashboard
├── packages/
│ └── shared/ # Shared TypeScript types, utils, constants
├── infrastructure/
│ └── docker/ # Docker Compose + Dockerfiles
└── docs/ # Documentation
Tech Stack
| Layer | Technology |
|---|---|
| Mobile | React Native, Expo, Expo Router, NativeWind, Zustand, React Query |
| Backend | NestJS, Prisma, PostgreSQL, Redis, Socket.io, BullMQ |
| Admin | Next.js 15, Tailwind CSS |
| Auth | JWT + Clerk integration |
| AI | OpenAI GPT-4o-mini |
| CI/CD | GitHub Actions, Docker |
Design System
Orange (#FF6B00) and black (#0A0A0A) professional styling throughout the app, inspired by Apple and Linear design principles.
Quick Start
Prerequisites
- Node.js 20+
- pnpm 9+
- Docker (for PostgreSQL and Redis)
Setup
# Install dependencies
pnpm install
# Start infrastructure
pnpm docker:up
# Copy environment variables
cp .env.example .env
# Generate Prisma client and run migrations
pnpm db:generate
pnpm db:migrate
# Seed database
pnpm db:seed
# Start all apps in development
pnpm dev
Development URLs
| Service | URL |
|---|---|
| API | http://localhost:3001 |
| Swagger Docs | http://localhost:3001/api/docs |
| Admin Dashboard | http://localhost:3000 |
| Mobile (Expo) | http://localhost:8081 |
API Modules
- Auth — Registration, login, JWT refresh, Clerk sync
- Users — Profiles, search, stats
- Games — Create, join, live scoring, box scores
- Courts — Discovery, reviews, occupancy
- Social — Feed, posts, friends, follows
- ELO — Rankings with dynamic K-factor, placement games
- Analytics — PER, TS%, usage rate, heatmaps
- AI Coach — Game summaries, training plans, weekly reports
- Computer Vision — Video stat detection with confidence scoring
- Realtime — Live games, chat, presence via WebSockets
- NBA — Scores, standings, schedules
- Fantasy — Private leagues, standings
- Admin — Analytics, user management, feature flags
- Notifications — Push tokens, in-app notifications
Testing
pnpm test
Deployment
See docs/DEPLOYMENT.md for production deployment guide.
License
Proprietary — All rights reserved.
Connect with Dhruv Hegde
More of Dhruv Hegde's open-source work on GitHub and LinkedIn.