TaskTracker
A full-stack task management app designed as a realistic QA/SDET practice project, with layered automated tests across domain logic, API behavior, UI workflows, and Dockerized environments.
Overview
TaskTracker was built to turn a simple task management idea into a deeper software quality project. The app gave me a controlled environment where I could design the feature, define expected behavior, write tests at multiple layers, and verify that changes worked from the domain model all the way through the browser.
The focus of this project is the testing strategy behind the application. I used the small product scope to practice clear validation rules, repeatable test data setup, API contract coverage, end-to-end browser workflows, and CI checks that support safer changes over time.
Tech Stack
- C#
- .NET
- EF Core
- PostgreSQL
- React
- Playwright
- xUnit
- Docker
- GitHub Actions
What I Built
- Built a full-stack task management app with a .NET API, React frontend, and PostgreSQL persistence.
- Modeled task lifecycle behavior including creation, completion, reopening, editing, validation, and idempotent operations.
- Added domain tests with xUnit and FluentAssertions for business rules and edge cases.
- Added API integration tests with WebApplicationFactory to verify endpoint contracts and persistence behavior.
- Added Playwright end-to-end tests for user-facing task workflows.
- Used Docker Compose to run repeatable local, production-style, and E2E test environments.
- Configured GitHub Actions CI to run automated tests and validate changes before merging.
Quality Strategy
- Domain tests cover validation rules, trimming, length limits, lifecycle transitions, and repeat-safe behavior.
- API tests cover status codes, response shapes, persistence, and important endpoint contracts.
- E2E tests cover browser workflows from the user’s perspective using Playwright.
- Test reset behavior keeps Playwright runs repeatable and avoids cross-test contamination.
- The project demonstrates a layered automation strategy instead of relying only on browser tests.
Next Steps
- Continue hardening production configuration, deployment safety, and environment-specific settings.
- Expand frontend behavior with filtering, editing improvements, and clearer user feedback.
- Add more CI checks such as linting, formatting, build validation, and test reporting.
- Use the project as a long-term sandbox for practicing SDET, automation, and DevOps skills.