Skip to main content
강홍재/ James
← Work
Live2026 · Solo Builder· Started(First Commit date)

QA Learning 101

A QA learning platform for picking up testing methodology and automation hands-on - you write tests against practice apps that look like the real thing.

  • QA
  • Education
  • React
  • FastAPI

Setup

Problem

QA-engineering beginners don't have a map of "what to learn in what order." Books are heavy, and lectures are one-way - hands stay still.

Context

An attempt to consolidate, in one place, the hours I spent over 14 years explaining the same starter concepts to QA engineers.

Build

What I did
  • Full-stack learning app - FastAPI + PostgreSQL backend, React + TypeScript frontend (auth, posts, comments, todos, kanban, calendar, real-time chat, files)
  • QA Hub - realistic practice apps (a banking dashboard, a booking system, e-commerce, a social feed) built as targets to write automated tests against
  • Stable data-testid selectors across the UI, independent of CSS and component structure, so E2E doesn't break on refactors
  • E2E and API tests with Playwright (Python) and pytest, load tests with Locust, CI on GitHub Actions
  • KO/EN localization (i18next), GA4 analytics, and Sentry error monitoring
Product decisions
  • Dark mode, responsive layout, and accessibility from day one - a learning tool that ignores accessibility breaks its own message
  • Practice apps as realistic screens (banking, booking, e-commerce), not toy examples - so beginners write tests against targets that look like real work
  • data-testid as the selector standard - building the habit, at the learning stage, of E2E that survives CSS and component changes
  • Started on managed Render + Neon, then moved everything but the frontend to a self-hosted Mac Mini behind Cloudflare Tunnel for cost - cutting the recurring monthly bill of a side project
QA considerations
  • data-testid selectors survive CSS and component-structure changes so E2E holds up on refactors (proving out the learning standard)
  • The QA Hub practice apps (banking, booking, e-commerce, social feed) actually carry realistic states and edge cases to test against
  • The accuracy of the learning content itself - a wrong methodology explanation or example teaches a beginner a bad habit that lasts five years, so it's the regression most worth avoiding
  • The test-automation playground is isolated inside the practice apps, so tests a learner writes never touch real accounts or real data
  • Playwright/pytest E2E and Locust load tests run as regression gates on GitHub Actions CI
  • State-dependent paths - real-time chat (WebSocket), auth, file upload - stay robust across reconnects and token expiry
  • Behavior stays identical after the migration from managed to self-hosted (Mac Mini behind Cloudflare Tunnel)

Outcome

Metrics

Live at qalearningweb.com. The frontend stays on Cloudflare Pages; everything else - the FastAPI backend and Postgres - started on managed Render + Neon, then moved to a self-hosted Mac Mini behind Cloudflare Tunnel to cut cost. User numbers not disclosed.

Tech stack
  • React
  • TypeScript
  • Vite
  • Tailwind
  • Zustand
  • React Query
  • i18next
  • FastAPI
  • Python
  • PostgreSQL
  • SQLAlchemy
  • Redis
  • WebSocket
  • Playwright
  • pytest
  • Locust
  • Sentry
  • Cloudflare Pages
  • Cloudflare Tunnel
  • Mac Mini