SkillAgentSearch skills...

Kan

The open source Trello alternative.

Install / Use

/learn @kanbn/Kan
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

github-background

<div align="center"> <h3 align="center">Kan</h3> <p>The open-source project management alternative to Trello.</p> </div> <p align="center"> <a href="https://kan.bn/kan/roadmap">Roadmap</a> · <a href="https://kan.bn">Website</a> · <a href="https://docs.kan.bn">Docs</a> · <a href="https://discord.gg/e6ejRb6CmT">Discord</a> </p> <div align="center"> <a href="https://github.com/kanbn/kan/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/badge/license-AGPLv3-purple"></a> </div>

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 👁️

<img width="1507" alt="hero-dark" src="https://github.com/user-attachments/assets/8490104a-cd5d-49de-afc2-152fd8a93119" />

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.

<a href="https://railway.com/deploy/kan?referralCode=bZPsr2&utm_medium=integration&utm_source=template&utm_campaign=generic"> <img src="https://railway.app/button.svg" alt="Deploy on Railway" height="40" /> </a>

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 <hello@mail.kan.bn>" | | 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 | | DISCORD_CLIENT_ID | Discord OAuth client ID | For Discord login | xxx | | DISCORD_CLIENT_SECRET | Discord OAuth client secret | For Discord login | xxx | | GITHUB_CLIENT_ID | GitHub OAuth client ID | For GitHub login | xxx | | GITHUB_CLIENT_SECRET | GitHub OAuth client secret | For GitHub login | xxx | | OIDC_CLIENT_ID | Generic OIDC client ID | For OIDC login | xxx | | OIDC_CLIENT_SECRET | Generic OIDC client sec

Related Skills

View on GitHub
GitHub Stars4.6k
CategoryDevelopment
Updated3h ago
Forks296

Languages

TypeScript

Security Score

100/100

Audited on Mar 24, 2026

No findings