← 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
- Links