Features
Everything you need to run a Kanban workflow for a small team — self-hosted, no subscriptions.
The board
Here's what you'll see
A Sales Pipeline board with 8 stage columns, 11 regional swimlanes, and 117 active cards. Each cell is a droppable zone — drag cards between columns to advance stages, or between swimlanes to reassign regions. Column headers show WIP counts and the toolbar provides real-time presence, search, and filter controls.
Everything about a card in one side panel: priority badge, color-coded labels, assignee avatar, due date, weight, a rich-text description with @mention support, checklists with progress tracking, file attachments, and a threaded comment stream. Opens inline beside the board so you never lose context.
Every column and swimlane change recorded automatically — who moved the card, from where, to where, and how long it stayed. Dwell time per stage powers the analytics view. History is preserved even after columns or swimlanes are renamed or deleted.
Daily workflow
Here's what you'll do every day
Select multiple cards across columns and swimlanes, then move, assign, set priority, label, archive, or delete them in a single action from the floating toolbar. Selection persists across scroll so you can pick cards from different parts of the board before acting.
Click any swimlane header to enter focus mode — all other swimlanes collapse and the selected lane expands to fill the board. Ideal for standups, sprint reviews, or working through a single customer's pipeline without distraction.
Collapse any swimlane to a single row to reclaim vertical space. Collapsed lanes show a card count badge so you know at a glance how many items are hidden. Collapse state is remembered per session.
Insights
Here's what you'll learn
Median dwell time per stage computed from movement history, displayed as a heatmap with outlier cells highlighted in red. Switch between Age mode (current cards) and Throughput mode (completed cards). The stalled-card table below lists cards exceeding the configured threshold, sorted by time stuck.
Card counts and weight totals per stage across every swimlane, with 7-day and 30-day velocity indicators. Designed for weekly standups and pipeline reviews — see at a glance which swimlanes are moving and which are stalled without scrolling through individual cards.
Getting started
Here's how easy setup is
Choose from 11 built-in starting points when creating a board: Sales Pipeline, Customer Support, Customer Success, Simple Kanban, Product Roadmap, Project Delivery, Content Production, Hiring & Recruiting, Legal & Compliance, Infrastructure & DevOps, or Blank Board. Each template pre-configures columns with appropriate names and a default swimlane.
Sign in with email and password, or click through to Google, GitHub, or GitLab OAuth. Providers are optional and configurable per instance. Supports invite-only registration with shareable join links.
Configure date format (MM/DD/YYYY, DD/MM/YYYY, YYYY-MM-DD), time format (12h or 24h), number format (US, European, Indian), theme (system, dark, light), and per-trigger notification preferences. All preferences are enforced server-side.
Instance owners manage users, toggle registration mode (open, invite-only, or closed), deactivate accounts, force password resets, and promote site admins — all from a built-in admin interface. No shell access needed for day-to-day operations.
Board
Swimlane Kanban grid
Columns on the X-axis, customer/team swimlanes on the Y-axis. Each cell is a droppable zone. Up to 50 columns and 100 swimlanes per board.
Board templates
Choose from 11 built-in templates on creation — Sales Pipeline, Customer Support, Customer Success, Simple Kanban, Product Roadmap, Project Delivery, Content Production, Hiring & Recruiting, Legal & Compliance, Infrastructure & DevOps, or Blank Board — each pre-seeded with columns and a swimlane label.
Drag-and-drop
Move cards between cells with @dnd-kit. Optimistic updates with automatic rollback on failure.
Column WIP & weight limits
Set a WIP limit (card count) and a weight limit (numeric budget) per column. When enforcement is enabled, moving a card into a full column returns a structured error; board admins can override with a single click.
Collapsible swimlanes
Collapse a swimlane to hide its cards and reclaim vertical space.
Default board
Mark any board as your default — after login you land there directly instead of the board list.
Cards
Rich text descriptions
Click-to-edit descriptions with a Tiptap toolbar: bold, italic, code, lists, headings, blockquote, and text color. Stored as markdown; no migration required.
@mentions in descriptions
Type @username in a description to pick a board member from a dropdown. They receive an in-app notification immediately. Re-editing an existing mention does not re-notify.
Card detail fields
Title, priority (low / medium / high / urgent), assignee, labels, due date, weight, checklist, comments, and attachments — all in one side panel.
Movement audit trail
Every column or swimlane change is recorded with who moved it, from where, to where, and when. Dwell time and stalled-card detection are built on top of this data.
Card archiving
Archive cards instead of deleting them — they disappear from the board but can be restored at any time from the Archived panel. Analytics use the archive timestamp as the terminal event.
Bulk actions
Select multiple cards and move, assign, set priority, archive, or delete in a single action from the bulk toolbar.
Search & filters
Server-side full-text search (title and description) with 300ms debounce, combined with client-side filters for assignee, priority, label, and due date. Filter state persists across navigation.
Labels
Create color-coded labels per board and apply multiple labels to a card for grouping and filtering.
Stable UIDs
Every board, column, swimlane, label, and card carries a permanent 16-character hex UID — safe to reference in integrations, webhooks, and scripts even after renames.
Collaboration
Real-time sync
All board mutations broadcast instantly to connected members via Django Channels WebSockets. Broadcasts are deferred to transaction commit — no stale state.
Online presence
See who is currently viewing the board in the top-right corner of the toolbar.
Notifications
In-app notifications for card assignments, @mentions, due date warnings, card moves, and new comments. Per-trigger preferences let you enable or disable each type individually.
Card comments
Threaded comments on each card, visible to collaborators and above. Authors and board admins can delete comments with a two-stage confirmation.
Organization
Groups & sub-groups
Nest boards inside a group hierarchy. Role inheritance flows from parent groups to child groups and boards automatically.
RBAC
Four board-level roles with strict boundaries: Admin (full access), Member (create/edit/move cards), Collaborator (comment and upload — cannot create or move cards), Viewer (read-only — no comments or uploads). A separate site-admin flag grants instance-level access.
Group Admin cascade
Assigning someone Group Admin automatically grants them board-admin rights on every board in the group — the recommended role for team leads.
Invite links
Generate named shareable join links for groups, each with its own role and optional expiry (1, 7, or 30 days). Up to 5 active links per group.
Starred favorites
Star boards and groups to pin them in the sidebar under Favorite Boards and Favorite Groups.
Administration
Site admin panel
A built-in /admin interface for instance owners: manage users, toggle registration mode (open / invite-only / closed), deactivate accounts, and force password resets.
Registration modes
Open registration, invite-only (admin creates accounts), or fully closed — switchable from the site admin panel without a redeploy.
OAuth login
Login with Google, GitHub, or GitLab via django-allauth. Password auth also supported. OAuth providers are optional and configurable per instance.
API rate limiting
DRF throttling: 60 req/hour for anonymous, 1000 req/hour for authenticated. User search is separately limited to 30 req/min to prevent account enumeration.
Settings
Locale preferences
Set your preferred date format (MM/DD/YYYY, DD/MM/YYYY, YYYY-MM-DD), time format (12-hour or 24-hour), and number format (US, European, Indian). Applied to due dates, timestamps, and analytics.
Theme
System (follows OS preference), Dark, or Light — applied immediately and persisted in localStorage.
Notification preferences
Enable or disable individual notification triggers — assignments, @mentions, due dates, card moves, and new comments. Preferences are enforced server-side; disabled triggers are never sent.
Security
Change your password and manage linked OAuth providers from Settings → Security.
Data
Export to CSV or JSON
Download a full board export including cards, comments, checklists, and movement history.
Import from file
Import a Visiban JSON or CSV export to create a new board. The importer accepts lowercase and snake_case headers (e.g. title, due_date) so files from external tools import cleanly.
Analytics view
Median dwell time per stage computed from movement history. Outlier cells highlighted in red. Stalled-card list for cards stuck longer than the configured threshold.
Summary view
Card counts and 7-day / 30-day velocity per swimlane — useful for weekly standups.
Infrastructure
Docker Compose
Single-command dev and production setup. Postgres 17, Redis 7, daphne ASGI, Nginx. Production stack adds Let's Encrypt TLS via Certbot.
Kubernetes / Helm
Official Helm chart with configurable ingress, TLS, external Postgres and Redis support, OIDC SSO, and persistent media storage.
Health check endpoints
Liveness and readiness probes at /api/health/ for Kubernetes deployments.
OpenAPI spec
Machine-readable OpenAPI 3.0 schema at /api/schema/ with interactive Swagger UI and ReDoc. CI validates the schema on every backend change.
Security hardening
MIME-validated file uploads, formula-injection-safe CSV exports, admin restricted to loopback by default, CORS localhost guard in production.