| Thask it, done. | ![]() |
Visualize product flows, tasks, and bugs as a linked node graph.
Built for QA risk management and change impact analysis.
Spreadsheets lose context. Linear issue trackers hide relationships. Thask maps your product as a living graph — so you can see what breaks before it breaks.
|
Every flow, task, and bug is a node. Every dependency is a visible edge. No more hidden connections. |
One click shows which nodes are affected by recent changes. Catch regressions before they ship. |
|
Multi-team projects with role-based access. Everyone sees the same graph. |
Drag-and-drop nodes with 7 types — Flow, Branch, Task, Bug, API, UI, and Group. Connect them by hovering and dragging the edge handle. Auto-layout with the fCOSE force-directed algorithm.
Toggle Impact Mode to instantly highlight changed nodes and their downstream dependencies. Dimmed nodes are safe; glowing nodes need attention.
Organize related nodes into collapsible groups. Drag nodes in and out. Resize groups freely. Double-click to collapse with a child count badge.
Track every node as PASS / FAIL / IN_PROGRESS / BLOCKED with color-coded visuals. Filter the graph by node type or status to focus on what matters.
Slide-out panel with full editing — title, description, type, status, tags, connected nodes, and a complete change history audit log.
Five edge types with distinct colors: depends_on, blocks, related, parent_child, triggers. Click any edge to change its type or delete it.
make up # auto-generates .env with SESSION_SECRET on first runOr manually:
cp .env.example .env
# Edit .env and set SESSION_SECRET (or let make generate it)
docker compose up --buildOpen http://localhost:7243 and create an account.
# 1. Start PostgreSQL
make dev-db
# 2. Set up backend
cd backend
cp .env.example .env
go run ./cmd/server
# 3. Set up frontend (in another terminal)
cd frontend
cp .env.example .env
npm install
npm run dev -- --port 7243Or simply:
make dev # starts DB, backend, and frontend togetherPrerequisites: Go 1.26+, Node.js 22+, Docker Desktop
# Terminal 1 — Start PostgreSQL
docker compose -f docker-compose.dev.yml up -d
# Terminal 2 — Start backend
cd backend
copy .env.example .env
go run ./cmd/server
# Terminal 3 — Start frontend
cd frontend
copy .env.example .env
npm install
npm run dev -- --port 7243Tip: To use
makeon Windows, install viascoop install makeorchoco install make.
| Layer | Technology |
|---|---|
| Backend | Go 1.26 (Echo v4) |
| Frontend | SvelteKit + Svelte 5 (runes) |
| Graph Engine | Cytoscape.js + fCOSE layout + edgehandles |
| Styling | Tailwind CSS v4 |
| State | Svelte 5 runes ($state, $derived, $effect) |
| Database | PostgreSQL 17 + pgx/v5 (raw SQL) |
| Auth | Session-based (bcrypt + HTTP-only cookies) |
| Testing | Go test (unit) + Playwright (E2E) |
| Deploy | Docker Compose (3 services) |
backend/
cmd/server/ # Go entrypoint
internal/
config/ # Environment configuration
dto/ # Request/response structs
handler/ # HTTP handlers (auth, team, node, edge, impact)
middleware/ # Auth & project access middleware
model/ # Domain models & enums
repository/ # Database access layer (pgx)
service/ # Business logic (waterfall, impact, auth)
migrations/ # SQL migration files
frontend/
src/
routes/
login/ # Login page
register/ # Register page
dashboard/ # Dashboard & team pages
[teamSlug]/
[projectId]/ # Graph editor page
lib/
api.ts # Typed API client
types.ts # TypeScript type definitions
stores/ # Svelte 5 rune stores (auth, graph)
components/ # CytoscapeCanvas, GraphToolbar, AddNodeModal,
# EdgeColorPopover, NodeDetailPanel
cytoscape/ # Styles, layouts, impact mode, group helpers
e2e/ # Playwright E2E tests
Users ──< TeamMembers >── Teams ──< Projects ──< Nodes ──< NodeHistory
│
└──< Edges
Node types: FLOW BRANCH TASK BUG API UI GROUP
Node statuses: PASS FAIL IN_PROGRESS BLOCKED
Edge types: depends_on blocks related parent_child triggers
| Variable | Description | Default |
|---|---|---|
DATABASE_URL |
PostgreSQL connection string | postgresql://thask:thask_dev_password@localhost:7242/thask |
SESSION_SECRET |
Random string for session signing | — |
PORT |
Backend server port | 7244 |
FRONTEND_URL |
Frontend URL for CORS | http://localhost:7243 |
| Variable | Description | Default |
|---|---|---|
BACKEND_URL |
Backend API URL (server-side proxy) | http://localhost:7244 |
| Variable | Description | Default |
|---|---|---|
SESSION_SECRET |
Required. Random 64+ char string for session signing | — |
APP_URL |
Public URL of the application | http://localhost:7243 |
BACKEND_URL |
Backend URL for frontend proxy | http://backend:7244 |
POSTGRES_PASSWORD |
PostgreSQL password | thask_password |
Set APP_URL in .env to your public URL:
# .env
APP_URL=https://thask.example.com
SESSION_SECRET=your-random-64-char-stringThis configures CORS and CSRF protection automatically. BACKEND_URL does not need to change — the frontend server proxies API requests to the backend over the internal Docker network.
Browser ──https──▶ Reverse Proxy (nginx/Cloudflare)
│
▼ :7243
Frontend (SvelteKit)
│
▼ http://backend:7244 (Docker internal)
Backend (Go)
│
▼ postgres:5432 (Docker internal)
PostgreSQL
Place a reverse proxy (e.g. nginx, Caddy, Cloudflare Tunnel) in front to handle SSL termination.
- Architecture — Layers, data flow, directory structure
- Database — ER diagram, tables, indexes, relations
- API Reference — 22+ endpoints with request/response examples
- Graph Engine — Node types, edge types, GROUP, impact mode
- Keyboard Shortcuts — All shortcuts and interactions
| Command | Description |
|---|---|
make dev |
Start DB + backend + frontend |
make dev-db |
Start PostgreSQL only |
make dev-backend |
Start Go backend |
make dev-frontend |
Start SvelteKit frontend |
make build |
Build backend + frontend |
make test |
Run Go unit tests + frontend checks |
make test-backend |
Run Go unit tests (verbose) |
make test-e2e |
Run Playwright E2E tests |
make up |
Docker Compose full stack (auto-generates .env) |
make down |
Stop Docker Compose |
make clean |
Remove build artifacts |
- Graph CRUD (nodes, edges, groups)
- 7 node types & 4 statuses with visual styling
- fCOSE auto-layout & manual positioning
- Drag-and-drop grouping & compound nodes
- Node search & keyboard shortcuts
- QA impact analysis (BFS-based)
- Status waterfall propagation
- Session-based auth & team management
- Docker Compose one-command deploy
- Go backend with 18 unit tests
- Playwright E2E tests (13 tests)
- Real-time collaboration (WebSocket / SSE)
- Graph snapshot — export as PNG / SVG
- PDF report generation (impact summary)
- Activity feed (recent changes across team)
- Comment threads on nodes
- API token auth for CI/CD pipelines
- Webhook triggers on status change
- GitHub / GitLab issue sync
- Slack / Discord notifications
- Bulk import / export (JSON, CSV)
- Graph templates (preset flow patterns)
- Light / dark mode toggle
- Custom node colors & icons
- Minimap
- Mobile responsive layout
- Version history & graph diffing
- Role-based permissions (view-only, edit, admin)
- Plugin system for custom node types
- AI-assisted impact prediction
- Self-hosted SSO (SAML / OIDC)
We welcome contributions! See CONTRIBUTING.md for setup instructions and guidelines.
