SpecVital Architecture
🇰🇷 한국어 버전
Overview
SpecVital is a platform for analyzing and visualizing test files in GitHub repositories.
┌─────────────────────────────────────────────────────────────────────────────────┐
│ SpecVital Platform │
├─────────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────────────────┐ │
│ │ Web Service │ │
│ │ │ │
│ │ ┌─────────┐ ┌─────────────────────┐ │ │
│ │ │ web │ │ collector │ │ │
│ │ │ │ │ │ │ │
│ │ │ API + │ │ ┌───────┐ ┌──────┐ │ │ │
│ │ │Dashboard│ │ │Worker │ │Sched │ │ │ │
│ │ └────┬────┘ │ └───┬───┘ └──────┘ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │ ▼ │ │ │
│ │ │ │ ┌───────┐ │ │ │
│ │ │ │ │ core │ (Library)│ │ │
│ │ │ │ └───────┘ │ │ │
│ │ │ └──────┬───────────────┘ │ │
│ │ │ │ │ │
│ │ └──────────────────┬──────────────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌──────────────────────┐ │ │
│ │ │ PostgreSQL │ │ │
│ │ │ (Data + River Queue) │ │ │
│ │ └──────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────┘Repositories
core
Role: Tree-sitter based test parser engine
| Item | Description |
|---|---|
| Language | Go |
| Type | Library |
| Consumer | collector |
collector
Role: Analysis worker
| Item | Description |
|---|---|
| Language | Go |
| Dependencies | core, infra (PostgreSQL) |
Data Flow
┌─────────┐ ┌─────────┐
│ User │ │ User │
└────┬────┘ └────▲────┘
│ 1. Request │ 6. View
▼ │
┌─────────────────────────────────────────────────────────────────────────────┐
│ Web Service │
│ │
│ ┌─────────┐ 2. Enqueue 3. Consume ┌───────────┐ │
│ │ web │──────────────────────────────────────────────────▶│ collector │ │
│ │ (API) │ │ (Worker) │ │
│ └────┬────┘ └─────┬─────┘ │
│ │ │ │
│ │ 5. Read Results 4. Parse (core) │ │
│ │ │ │
│ │ ┌────────────────────────────┐ │ │
│ └───────────▶│ PostgreSQL │◀────────────────────┘ │
│ │ (Data + River Queue) │ │
│ └────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘Flow:
- User requests analysis with GitHub URL
- web enqueues job to River queue (PostgreSQL)
- collector worker consumes job from River
- collector parses tests via core and stores results
- web reads results from DB
- User views visualized results
Deployment
Platforms
| Service | Platform |
|---|---|
| PostgreSQL | Neon |
| web-backend | Railway |
| web-frontend | Vercel |
| collector-worker | Railway |
| collector-scheduler | Railway |
Scalability
| Service | Scalability | Note |
|---|---|---|
| web | Horizontal | Stateless |
| collector (Worker) | Horizontal | Stateless, parallel processing |
| collector (Scheduler) | Single instance | Cron jobs |
