ASP.NET Core 8 Web API built and tested solo in 3 days. Full NUnit suite covering unit and integration layers — 28 tests, all green.
ASP.NET Core 8 · C# 12 · NUnit 3 · WebApplicationFactory · Swagger · Railway
Full solution: ASP.NET Core API project, NUnit test project, GitHub Actions CI/CD, all documentation in /docs.
Public · C# 12 · .NET 8 View Repository →GitHub Actions: dotnet restore → build → test → TRX report → HTML report published to GitHub Pages.
ubuntu-latest · .NET 8 · NUnit3 View Pipeline →Fully deployed on Railway. Interactive Swagger UI lets you explore and call all 5 endpoints without any setup.
Railway · ASP.NET Core 8 · Swashbuckle Open Swagger UI → Free tier — first request after inactivity may take ~5sA QA Engineering Assessment requiring candidates to design and implement a production-ready REST API for player management from scratch — then write comprehensive test coverage for it.
The constraint: 3-day sprint, solo delivery, acting simultaneously as API developer, QA engineer, and delivery manager.
This project demonstrates that an experienced QA Engineer can own both the implementation and the verification — not just test what others build.
AI-First Engineering: Claude Code was used as the primary accelerator — not a replacement for engineering judgment. Every decision is documented in architectural records and a specification file that served as the project's source of truth.
Two-layer test strategy:
Delivered on time with full documentation and live CI pipeline.
Engineering artefacts authored during the sprint — architectural decisions, test plan, and security assessment.
Latest GitHub Actions run · May 2, 2026 · ubuntu-latest · View all runs →
Every tool selected for a documented reason — see the ADR collection for full justification.
Separate standalone repo targeting the live Player API on Railway. JMeter 5.6.3 with full JWT authentication flow per virtual user. Stepped stress ramp demonstrates real degradation on Railway’s 512MB RAM free tier. Part of the Cross-Stack Performance Series.
Built-in JMeter HTML Dashboard Generator: interactive charts, percentile graphs, transaction summary, error analysis. Generated via CLI: -n -t plan.jmx -l results.jtl -e -o report/. JTL results file retained alongside HTML dashboard as GitHub Actions artifacts.
Smoke on every push. Baseline on main. Stress test (5→15→30 VU stepped ramp) weekly Monday 11:00 UTC only — respects Railway free tier infrastructure. Uses QAInsights/setup-jmeter@v3.0. Warm-up curl step before all tests isolates Railway cold start (~5s).
JMX test plan with JWT auth: Login Thread Group → JSON Extractor ($.token) → HTTP Header Manager (Bearer injection) → CRUD operations → DELETE cleanup. Unique email per VU via __threadNum. FINDINGS.md documents degradation curve.
ConcurrentDictionary write contention is visible in the p99 long tail at 15+ concurrent users. At 25–30 VU, Railway 502/503 errors emerge — the 512MB RAM allocation ceiling on the free tier. Cold start of ~5 seconds after inactivity is isolated by a dedicated warm-up Thread Group before load begins. Real degradation on real infrastructure with real documented constraints. The p99/p95 ratio reaches 2.6× at the breaking point — a classic contention signature.