All Projects

Billiards-themed full-stack portfolio with 95 automated tests across 5 frameworks in 4 languages.

league-api

A fully documented REST API for managing a billiards league — players, matches, standings, and win/loss records. Built to showcase C#/.NET backend engineering, REST API design, Entity Framework, PostgreSQL integration, and containerized deployment.

C# / ASP.NET CoreEntity Framework CorePostgreSQLDockerSwagger / OpenAPI
32 scenariosSpecFlow/Gherkin

break-and-verify

A SpecFlow/Gherkin BDD test suite that validates every endpoint and business rule in league-api. Written in plain English scenarios that non-technical stakeholders can read and verify.

C# / NUnitSpecFlowGherkin
32 scenariosSpecFlow BDD

rack-stats

A Python data pipeline that generates synthetic billiards tournament data, stores it in SQLite, computes meaningful stats via SQL aggregations, and presents everything in an interactive Streamlit dashboard.

PythonSQLAlchemyPandasStreamlitPlotlySQLite
14 scenariosPyTest

the-practice-log

A React/TypeScript app for logging billiards practice sessions with shot-level detail, trend visualization across sessions, and Claude API coaching feedback.

React 19TypeScriptViteTailwind CSSRechartsClaude API
16 unit + 21 E2EVitest + Playwright

cue-qa

A Playwright TypeScript test suite covering navigation, session management, and trend filtering for the-practice-log. 21 scenarios across 3 spec files with GitHub Actions CI integration.

PlaywrightTypeScriptGitHub Actions
21 scenariosPlaywright

chalk-it-up

A Flutter/Dart casual match scorekeeper for 9-Ball with innings tracking, break tracking, undo support, and an AI trash talk generator powered by the Claude API.

FlutterDartClaude APIflutter_dotenv
12 scenariosFlutter Widget Tests