# QA Studio
Modern Test Management Without the BS
[](LICENSE)
[](https://discord.gg/rw3UfdB9pN)
[Website](https://qastudio.dev) β’ [Documentation](https://qastudio.dev/docs) β’ [Discord](https://discord.gg/rw3UfdB9pN) β’ [Blog](https://qastudio.dev/blog)
---
## Overview
QA Studio is a modern, open-source test management platform built by QA engineers, for QA engineers. No bloat, no slowness, no BSβjust powerful testing tools that actually work the way you need them to.
### Key Features
- π **Lightning Fast** - Built with SvelteKit 5, Tailwind 4, and optimized for speed
- π **API First** - Every feature available via comprehensive REST API
- π **Rich Reporting** - Track test results, trends, and metrics with beautiful dashboards
- π§ͺ **Test Organization** - Hierarchical test suites and cases with full traceability
- π― **Test Execution** - Plan and execute test runs across multiple environments
- πΈ **Rich Media** - Attach screenshots, videos, logs, and stack traces
- π **Self-Hosted Auth** - Secure authentication with bcrypt and session management
- π **Self-Hostable** - Deploy on your own infrastructure with full control
## Quick Start
### Prerequisites
- Node.js 18+ and npm
- PostgreSQL database
### Installation
1. **Clone the repository**
```bash
git clone https://github.com/QAStudio-Dev/studio.git
cd studio
```
2. **Install dependencies**
```bash
npm install
```
3. **Set up environment variables**
```bash
cp .env.example .env.local
```
Edit `.env.local` with your configuration:
```env
# Database
DATABASE_URL="postgresql://user:password@localhost:5432/qa_studio"
# Vercel Blob Storage (REQUIRED for attachments)
# Get from: Vercel Dashboard -> Storage -> Blob -> Connect -> Read/Write Token
# All attachments (screenshots, videos, traces) are stored in Vercel Blob
BLOB_READ_WRITE_TOKEN=vercel_blob_rw_...
# Cron Secret (for scheduled jobs like attachment cleanup)
# Generate with: openssl rand -hex 32
CRON_SECRET=your_64_character_hex_string_here
# Decap CMS (optional, for blog)
DECAP_GITHUB_CLIENT_ID=...
DECAP_GITHUB_CLIENT_SECRET=...
```
> **Note**: `BLOB_READ_WRITE_TOKEN` is required even in development. QA Studio uses Vercel Blob storage for all attachments. See [Vercel Blob Setup](#vercel-blob-setup) below for details.
4. **Set up the database**
```bash
npx prisma generate
npx prisma db push
```
5. **Start the development server**
```bash
npm run dev
```
Open [http://localhost:5173](http://localhost:5173) in your browser.
### Vercel Blob Setup
QA Studio requires Vercel Blob storage for test attachments (screenshots, videos, traces). This is required in both development and production.
**Setup Steps:**
1. **Create a Vercel Blob Store**
- Go to [Vercel Dashboard](https://vercel.com/dashboard)
- Navigate to Storage β Blob
- Click "Create Database"
- Name it (e.g., "qa-studio-attachments")
2. **Get Your Token**
- In the Blob store settings, go to "Connect"
- Copy the "Read/Write Token"
- Add it to `.env.local`:
```env
BLOB_READ_WRITE_TOKEN=vercel_blob_rw_xxxxxxxxxxxxx
```
3. **Attachment Retention**
- Free users: 7-day retention (attachments deleted automatically)
- Pro users: 30-day retention
- Cleanup runs daily via cron job at 2 AM UTC
**Why Vercel Blob?**
- Fast global CDN delivery
- No file size limits
- Automatic optimization
- Free tier: 500MB storage, 5GB bandwidth/month
- Paid: $0.15/GB storage, $0.15/GB bandwidth
**Alternative for Self-Hosting:**
If you're self-hosting and don't want to use Vercel Blob, you can:
- Implement your own blob storage adapter (S3, MinIO, local filesystem)
- Modify `src/lib/server/blob-storage.ts` to use your storage solution
- Keep the same interface for compatibility
## Tech Stack
- **Frontend**: SvelteKit 2, Svelte 5, Skeleton UI, Tailwind 4
- **Backend**: SvelteKit API routes
- **Database**: PostgreSQL with Prisma ORM
- **Authentication**: Self-hosted with bcrypt and secure sessions
- **Deployment**: Vercel (or any Node.js host)
- **CMS**: Decap CMS for blog management
## Documentation
- π **[API Documentation](https://qastudio.dev/docs)** - Complete REST API reference
- π§ **[Setup Guides](docs/)** - Detailed setup instructions
- [Deployment](docs/DEPLOYMENT.md) - Vercel, Docker, and self-hosting
- [Team Invitations](docs/TEAM_INVITATIONS.md) - Invite members with role-based access
- [Stripe Integration](docs/STRIPE_SETUP.md) - Team billing and subscriptions
- [Decap CMS Setup](docs/DECAP_CMS_SETUP.md) - Blog management
- [Slack Notifications](docs/INTEGRATIONS.md) - Team notifications
- π¨ **[Project Structure](CLAUDE.md)** - Codebase organization and conventions
## Deployment
### Vercel (Recommended)
[](https://vercel.com/new/clone?repository-url=https://github.com/QAStudio-Dev/studio)
1. Connect your GitHub repository to Vercel
2. Add environment variables in Vercel dashboard
3. Deploy!
### Self-Hosting
QA Studio can be deployed to any platform that supports Node.js:
- **Docker**: Build and run with Docker (Dockerfile included)
- **AWS/GCP/Azure**: Deploy to any cloud provider
- **VPS**: Run on your own server with PM2 or similar
See our [deployment guide](docs/DEPLOYMENT.md) for detailed instructions.
## Pricing & Licensing
QA Studio uses the **GNU Affero General Public License v3.0 (AGPL-3.0)** - you're free to:
- β
Use QA Studio for free
- β
Self-host on your own infrastructure
- β
Modify and fork the code
- β
Use it commercially
- β
Distribute modified versions
You **must**:
- β
Share source code of any modifications when you run it as a service
- β
Keep the same AGPL-3.0 license for derivative works
- β
Provide access to source code to network users
### Pricing Plans
- **Free Tier**: 1 project, unlimited test cases
- **Self-Hosted**: Unlimited everything on your infrastructure
- **Pro Plan**: Unlimited projects, teams, AI diagnostics - [Learn more](https://qastudio.dev)
## Contributing
We welcome contributions from everyone! Whether you're fixing bugs, adding features, improving documentation, or helping others in the community - every contribution matters.
**Quick start:**
1. Read our [Contributing Guide](CONTRIBUTING.md)
2. Check out [good first issues](https://github.com/QAStudio-Dev/studio/labels/good%20first%20issue)
3. Join our [Discord community](https://discord.gg/rw3UfdB9pN)
See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines on:
- Setting up your development environment
- Coding standards and best practices
- Testing requirements
- Pull request process
- How to get help
## Privacy & Compliance
QA Studio is designed with privacy best practices and we are actively working toward full GDPR/CCPA compliance.
### π Security Features
- **Password Security**: Bcrypt hashing (OWASP 2025 recommended)
- **Session Security**: HTTP-only secure cookies
- **Data Encryption**: AES-256 encryption at rest
- **Audit Logging**: Comprehensive audit trail for all actions
- **Self-Hosted**: Complete data sovereignty
### π Compliance Documentation
For detailed compliance information, see:
- [Database Backup System](src/routes/api/cron/BACKUPS.md) - Backup retention and GDPR/CCPA compliance procedures
- [Audit Logging](src/lib/server/audit.ts) - Complete audit trail system
- [Authentication Security](CLAUDE.md#authentication) - Password and session security
## Community
- π¬ [Discord Server](https://discord.gg/rw3UfdB9pN) - Chat with the community
- π [Blog](https://qastudio.dev/blog) - Latest updates and tutorials
- π [Issue Tracker](https://github.com/QAStudio-Dev/studio/issues) - Report bugs or request features
- π£οΈ [Discussions](https://github.com/QAStudio-Dev/studio/discussions) - Ask questions and share ideas
## License
QA Studio is licensed under the [GNU Affero General Public License v3.0](LICENSE).
Copyright Β© 2025 QA Studio
---
Built with β€οΈ by QA Engineers, for QA Engineers
[Website](https://qastudio.dev) β’ [Documentation](https://qastudio.dev/docs) β’ [Discord](https://discord.gg/rw3UfdB9pN)