Kan is a free, open source project & work management project written in TypeScript and released under AGPL-3.0. It has 5,656 GitHub stars, 477 forks and 135 open issues, and was last pushed 3 days ago. On this registry it ranks #17 of 62 tracked projects in Project & Work Management, with 5 head-to-head comparisons available. It gained 30 stars over the last 6 tracked days.

What is Kan?

What it is

Kan is an open-source project management application that provides kanban boards, positioned by its maintainers as the open-source alternative to Trello. It is written in TypeScript under the AGPL-3.0 license, and it lives in the JavaScript and TypeScript ecosystem: the stack is built on Next.js, tRPC, Better Auth, Tailwind CSS, Drizzle ORM, React Email, Zod, and Turborepo. The repository has gathered 5,634 stars and 472 forks, with 135 open issues, and its homepage is hosted at kan.bn. It is actively maintained, with the most recent push recorded on 14 September 2026.

The concrete problem Kan solves is that teams wanting Trello-style boards without a proprietary subscription have had no self-hostable, source-available option they control end to end. Kan addresses that by offering board and workspace features that can be run on the operator's own infrastructure, and by including Trello imports so that existing boards can be moved across rather than rebuilt by hand. Because the Docker Compose path provisions PostgreSQL alongside the application and runs migrations automatically, the gap between "clone the repository" and "a working board" is deliberately short.

Key capabilities

  • Board visibility controls that determine who can view and who can edit each board.
  • Workspace members, allowing teams to be invited and to collaborate inside a shared workspace.
  • Trello imports, for bringing existing Trello boards into Kan.
  • Labels and filters, used to organise cards and find them quickly.
  • Comments on cards for discussion and collaboration.
  • An activity log that tracks all card changes with detailed history.
  • Reusable custom board templates, saved to reduce setup time on new boards.

Who uses it and how

  • Teams and organisations that want to run their own project tracking rather than depend on a hosted SaaS vendor.
  • Groups migrating off Trello, using the built-in import to move boards across instead of recreating them.
  • Workspaces with mixed access needs, where board visibility settings separate viewers from editors.
  • Teams that standardise recurring work through saved custom board templates.
  • Anyone who wants card-level discussion and a full change history, using comments and the activity log during reviews.

Getting started

The README offers a one-click deployment through Railway, maintained as an official template, and a Docker Compose route that starts the ghcr.io/kanbn/kan:latest

project readme (upstream, from github) — read inline

github-background

Kan

The open-source project management alternative to Trello.

Roadmap · Website · Docs · Discord

License

Features 💫

  • 👁️ Board Visibility: Control who can view and edit your boards
  • 🤝 Workspace Members: Invite members and collaborate with your team
  • 🚀 Trello Imports: Easily import your Trello boards
  • 🔍 Labels & Filters: Organise and find cards quickly
  • 💬 Comments: Discuss and collaborate with your team
  • 📝 Activity Log: Track all card changes with detailed activity history
  • 🎨 Templates : Save time with reusable custom board templates
  • ⚡️ Integrations (coming soon) : Connect your favourite tools

See our roadmap for upcoming features.

Screenshot 👁️

hero-dark

Made With 🛠️

Self Hosting 🐳

One-click Deployments

The easiest way to deploy Kan is through Railway. We've partnered with Railway to maintain an official template that supports the development of the project.

Deploy on Railway

Docker Compose

Alternatively, you can self-host Kan with Docker Compose. This will set up everything for you including your postgres database and automatically run migrations.

  1. Create a .env file with your environment variables (see Environment Variables section below)

  2. Use the provided docker-compose.yml file or create your own with the following configuration:

services:
  migrate:
    image: ghcr.io/kanbn/kan-migrate:latest
    container_name: kan-migrate
    networks:
      - kan-network
    environment:
      - POSTGRES_URL=${POSTGRES_URL}
    depends_on:
      postgres:
        condition: service_healthy
    restart: "no"

  web:
    image: ghcr.io/kanbn/kan:latest
    container_name: kan-web
    ports:
      - "${WEB_PORT:-3000}:3000"
    networks:
      - kan-network
    env_file:
      - .env
    environment:
      - NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL}
      - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}
      - POSTGRES_URL=${POSTGRES_URL}
      - NEXT_PUBLIC_ALLOW_CREDENTIALS=true
    depends_on:
      migrate:
        condition: service_completed_successfully
    restart: unless-stopped

  postgres:
    image: postgres:15
    container_name: kan-db
    environment:
      - POSTGRES_DB=kan_db
      - POSTGRES_USER=kan
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    ports:
      - 5432:5432
    volumes:
      - kan_postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U kan -d kan_db"]
      interval: 5s
      timeout: 5s
      retries: 10
    restart: unless-stopped
    networks:
      - kan-network

networks:
  kan-network:

volumes:
  kan_postgres_data:
  1. Start the containers in detached mode:
docker compose up -d

The migrate service will automatically run database migrations before the web service starts. The application will be available at http://localhost:3000 (or the port specified in WEB_PORT).

Managing containers:

  • To stop the containers: docker compose down
  • To view logs: docker compose logs -f
  • To view logs for a specific service: docker compose logs -f web or docker compose logs -f migrate
  • To restart the containers: docker compose restart
  • To rebuild after code changes: docker compose up -d --build

For the complete Docker Compose configuration with all optional features, see docker-compose.yml in the repository.

Local Development 🧑‍💻

  1. Clone the repository (or fork)
git clone https://github.com/kanbn/kan.git
  1. Install dependencies
pnpm install
  1. Copy .env.example to .env and configure your environment variables
  2. Migrate database
pnpm db:migrate
  1. Start the development server
pnpm dev

Environment Variables 🔐

Variable Description Required Example
POSTGRES_URL PostgreSQL connection URL To use external database postgres://user:pass@localhost:5432/db
REDIS_URL Redis connection URL For rate limiting (optional) redis://localhost:6379 or redis://redis:6379 (Docker)
EMAIL_FROM Sender email address For Email "Kan "
SMTP_HOST SMTP server hostname For Email smtp.resend.com
SMTP_PORT SMTP server port For Email 465
SMTP_USER SMTP username/email No resend
SMTP_PASSWORD SMTP password/token No re_xxxx
SMTP_SECURE Use secure SMTP connection (defaults to true if not set) For Email true
SMTP_REJECT_UNAUTHORIZED Reject invalid certificates (defaults to true if not set) For Email false
NEXT_PUBLIC_DISABLE_EMAIL To disable all email features For Email true
NEXT_PUBLIC_BASE_URL Base URL of your installation Yes http://localhost:3000
NEXT_API_BODY_SIZE_LIMIT Maximum API request body size (defaults to 1mb) No 50mb
BETTER_AUTH_ALLOWED_DOMAINS Comma-separated list of allowed domains for OIDC logins For OIDC/Social login example.com,subsidiary.com
BETTER_AUTH_SECRET Auth encryption secret Yes Random 32+ char string
BETTER_AUTH_TRUSTED_ORIGINS Allowed callback origins No http://localhost:3000,http://localhost:3001
GOOGLE_CLIENT_ID Google OAuth client ID For Google login xxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET Google OAuth client secret For Google login xxx

readme truncated — read the full docs on github

Frequently asked questions

Is Kan free to use?

Kan is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Kan do?

Open source kanban boards with unlimited everything

What is Kan written in?

Kan is primarily written in TypeScript. Its source is publicly available at https://github.com/kanbn/kan, and it has 5,656 GitHub stars.