Snooks.app screenshot

Snooks.app

A social snooker scoreboard app for snooker enthusiasts.

View Project

Tech Stack

Frontend

Next.js (App Router)TypeScriptTailwind CSSRadix UIFormikMotionPWA assets

Backend

Drizzle ORMVercel PostgresEdge Runtime APIsSvix webhooksClerk (auth)

Key Libraries

PostHogSentry

Build Tools

Key Features

  • Scorekeeping with rules: Full snooker flow (reds/colors, order mode, free ball, fouls, undo, winner detection).

  • Social graph: Mutual-friends model; authenticated players persist, non-friends saved as guests.

  • Match history syncing: Local play with resilient client state; server sync on match end via transactional APIs.

  • Mobile-first UI: Fast, animated scoreboard controls, sounds, and PWA assets for install-like UX.

  • Observability: PostHog event tracking and Sentry error capture across client and server.

Notable Challenge

Ensuring accurate snooker rules and data integrity while syncing from a stateful client to the server with privacy constraints. Solved by a dedicated useSnookerGame hook with immutable state and history for undo, localStorage persistence, and an Edge API that enforces mutual-friend checks and writes frames/scores transactionally via Drizzle.

Result / Status

MVP in active use with authenticated score persistence, guest support, and production-grade analytics/monitoring; core APIs run at the edge with a Postgres-backed schema and webhook-driven user/org provisioning.