A comprehensive platform for managing test cases, test plans, test suites, and execution workflows. Designed by a QA for development and QA teams.
TestTool helps teams:
- Organize test cases into logical test suites and plans
- Track test execution progress and results
- Manage bugs linked to test failures
- Maintain audit logs of all activities
- Integrate with CI/CD pipelines and external tools
- OAuth2 (GitHub, Google, Microsoft)
- Local authentication with JWT
- Role-based access control (RBAC)
- Password policy enforcement
- Test Plans with customizable statuses
- Hierarchical Test Suites
- Test Cases with priorities and types
- Execution tracking and history
- Bug tracking with severity levels
- Jira, GitHub, GitLab
- Jenkins, GitHub Actions
- Confluence
- Webhooks
| Component | Technology |
|---|---|
| Backend | Node.js, Fastify, TypeScript |
| Frontend | Next.js, React, TypeScript |
| Database | PostgreSQL 16 |
| Cache | Redis 7 |
| ORM | Prisma |
Each project (root, backend, frontend) has its own environment files:
| File | Use Case |
|---|---|
.env.example |
Template with all options |
.env.local |
Local development with npm |
.env.podman |
Docker/Podman containers |
Setup for each project:
# Root (for Docker Compose)
cp .env.local .env
# or
cp .env.podman .env
# Backend
cp backend/.env.local backend/.env
# or
cp backend/.env.podman backend/.env
# Frontend
cp frontend/.env.local frontend/.env
# or
cp frontend/.env.podman frontend/.envOption A: Local (requires PostgreSQL + Redis installed)
brew install postgresql@16 redis
brew services start postgresql@16
brew services start redis
createdb testtoolOption B: Containers
docker compose --profile local-db up -d
# or
podman compose --profile local-db up -dcd backend
npm install
npx prisma generate
npx prisma migrate dev --name init
npx prisma db seed
npm run devcd frontend
npm install
npm run dev- Frontend: http://localhost:3000
- API: http://localhost:3001
- API Docs: http://localhost:3001/docs
Email: admin@testtools.com
Password: Changeme123!
Each project has its own environment files:
| Location | Files |
|---|---|
| Root | .env.local, .env.podman (for Docker Compose) |
| Backend | .env.local, .env.podman (for backend service) |
| Frontend | .env.local, .env.podman (for Next.js) |
Key differences between local and podman:
- Local: Uses
localhostfor services - Podman: Uses Docker service names (
testtool-postgres,testtool-redis)
| Document | Description |
|---|---|
| Main README | This file - overview and quick start |
| Backend README | API setup, development, endpoints |
| Frontend README | UI setup and features |
| Architecture | System architecture (Mermaid) |
| ER Diagram | Database schema |
| Class Diagram | Service classes |
Full API documentation available via Swagger UI at http://localhost:3001/docs when the backend is running.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/auth/login |
Login |
| POST | /api/v1/auth/refresh |
Refresh token |
| GET | /api/v1/profile |
User profile |
| GET | /api/v1/admin/users |
List users (admin) |
Uses Docker/Podman with local PostgreSQL and Redis.
docker compose --profile local-db up -dUse external PostgreSQL (Supabase, Neon, RDS):
docker compose up -d- Local: File system storage (default)
- Supabase Storage: Set
STORAGE_PROVIDER=supabase - S3: Set
STORAGE_PROVIDER=s3
Essential variables for .env:
# Database (use service names in containers)
DATABASE_URL=postgresql://user:pass@host:5432/testtool
REDIS_URL=redis://host:6379
# Auth
JWT_SECRET=your-secret-key-at-least-32-characters
ENCRYPTION_KEY=64-char-hex-key
# Admin (first boot)
ADMIN_EMAIL=admin@testtools.com
ADMIN_PASSWORD=Changeme123!See .env.example for all options.
- Local: Use
localhost - Container: Use service name (
postgres, notlocalhost)
podman machine stop
podman machine startdocker compose down -v # Removes volumes
docker compose --profile local-db up -d- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE for details.
Created by: dotch3@gmail.com
