| 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, group membership, 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.
docker compose upOpen http://localhost:7243 and create an account.
# 1. Start PostgreSQL
docker compose -f docker-compose.dev.yml up -d
# 2. Install & configure
npm install
cp .env.example .env
# 3. Set up database
npm run db:push
# 4. Start dev server
npm run dev| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router, Turbopack) |
| Language | TypeScript 5.8 (strict) |
| Graph Engine | Cytoscape.js + fCOSE layout + edgehandles |
| Styling | Tailwind CSS v4 |
| State | Zustand (UI) + TanStack Query (server) |
| Database | PostgreSQL 17 + Drizzle ORM |
| Auth | Session-based (bcrypt + HTTP-only cookies) |
| Validation | Zod |
| Deploy | Docker Compose |
src/
app/
(auth)/ # Login & register pages
(dashboard)/ # Dashboard & project graph pages
api/ # REST API routes (auth, teams, projects, nodes, edges)
components/
auth/ # LoginForm, RegisterForm
graph/ # CytoscapeCanvas, GraphToolbar, AddNodeModal, EdgeColorPopover
layout/ # Header, Sidebar, Providers
panels/ # NodeDetailPanel
ui/ # ConfirmDialog and shared UI
lib/
auth/ # Session management, password hashing, route guards
cytoscape/ # Graph styles, layouts, impact mode logic
db/ # Drizzle schema & connection
stores/ # Zustand stores (auth, graph state)
types/ # TypeScript type definitions
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 | — |
NEXT_PUBLIC_APP_URL |
Public app URL | http://localhost:7243 |
NODE_ENV |
Environment | development |
See .env.example for a ready-to-copy template.
- Real-time collaboration (WebSocket)
- Export graph as image / PDF
- Node search & keyboard shortcuts
- API token auth for CI/CD integration
- Graph templates (preset flow patterns)
- Dark mode
We welcome contributions! See CONTRIBUTING.md for setup instructions and guidelines.
npm run lint # Lint check
npm run format # Format code
npm run type-check # TypeScript check