Skip to content

Repository files navigation

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 🐳

The easiest way to self-host Kan is with Docker Compose. This will set up everything for you including your postgres database.

  1. Create a new file called docker-compose.yml and paste the following configuration:
services:
web:
image: ghcr.io/kanbn/kan:latestcontainer_name: kan-webports:
- "3000:3000"networks:
- kan-networkenvironment:
NEXT_PUBLIC_BASE_URL: http://localhost:3000BETTER_AUTH_SECRET: your_auth_secretPOSTGRES_URL: postgresql://kan:your_postgres_password@postgres:5432/kan_dbNEXT_PUBLIC_ALLOW_CREDENTIALS: truedepends_on:
- postgresrestart: unless-stoppedpostgres:
image: postgres:15container_name: kan-dbenvironment:
POSTGRES_DB: kan_dbPOSTGRES_USER: kanPOSTGRES_PASSWORD: your_postgres_passwordports:
- 5432:5432volumes:
- kan_postgres_data:/var/lib/postgresql/datarestart: unless-stoppednetworks:
- kan-networknetworks:
kan-network:
volumes:
kan_postgres_data:
  1. Start the containers in detached mode:
docker compose up -d
  1. Access Kan at http://localhost:3000

The application will be running in the background. You can manage the containers using these commands:

  • To stop the containers: docker compose down
  • To view logs: docker compose logs -f
  • To restart the containers: docker compose restart

For the complete Docker Compose configuration, see docker-compose.yml in the repository.

Note: The Docker Compose configuration shown above is a minimal example. For a complete setup with all features (email, OAuth, file uploads, etc.), you'll need to create a .env file with the required environment variables. See the Environment Variables section below for the full list of available options.

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 🔐

VariableDescriptionRequiredExample
POSTGRES_URLPostgreSQL connection URLTo use external databasepostgres://user:pass@localhost:5432/db
EMAIL_FROMSender email addressFor Email"Kan <hello@mail.kan.bn>"
SMTP_HOSTSMTP server hostnameFor Emailsmtp.resend.com
SMTP_PORTSMTP server portFor Email465
SMTP_USERSMTP username/emailNoresend
SMTP_PASSWORDSMTP password/tokenNore_xxxx
SMTP_SECUREUse secure SMTP connection (defaults to true if not set)For Emailtrue
SMTP_REJECT_UNAUTHORIZEDReject invalid certificates (defaults to true if not set)For Emailfalse
NEXT_PUBLIC_DISABLE_EMAILTo disable all email featuresFor Emailtrue
NEXT_PUBLIC_BASE_URLBase URL of your installationYeshttp://localhost:3000
BETTER_AUTH_ALLOWED_DOMAINSComma-separated list of allowed domains for OIDC loginsFor OIDC/Social loginexample.com,subsidiary.com
BETTER_AUTH_SECRETAuth encryption secretYesRandom 32+ char string
BETTER_AUTH_TRUSTED_ORIGINSAllowed callback originsNohttp://localhost:3000,http://localhost:3001
GOOGLE_CLIENT_IDGoogle OAuth client IDFor Google loginxxx.apps.googleusercontent.com
GOOGLE_CLIENT_SECRETGoogle OAuth client secretFor Google loginxxx
DISCORD_CLIENT_IDDiscord OAuth client IDFor Discord loginxxx
DISCORD_CLIENT_SECRETDiscord OAuth client secretFor Discord loginxxx
GITHUB_CLIENT_IDGitHub OAuth client IDFor GitHub loginxxx
GITHUB_CLIENT_SECRETGitHub OAuth client secretFor GitHub loginxxx
OIDC_CLIENT_IDGeneric OIDC client IDFor OIDC loginxxx
OIDC_CLIENT_SECRETGeneric OIDC client secretFor OIDC loginxxx
OIDC_DISCOVERY_URLOIDC discovery URLFor OIDC loginhttps://auth.example.com/.well-known/openid-configuration
TRELLO_APP_API_KEYTrello app API keyFor Trello importxxx
TRELLO_APP_API_SECRETTrello app API secretFor Trello importxxx
S3_REGIONS3 storage regionFor file uploadsWEUR
S3_ENDPOINTS3 endpoint URLFor file uploadshttps://xxx.r2.cloudflarestorage.com
S3_ACCESS_KEY_IDS3 access keyFor file uploads (optional with IRSA)xxx
S3_SECRET_ACCESS_KEYS3 secret keyFor file uploads (optional with IRSA)xxx
S3_FORCE_PATH_STYLEUse path-style URLs for S3For file uploadstrue
NEXT_PUBLIC_STORAGE_URLStorage service URLFor file uploadshttps://storage.kanbn.com
NEXT_PUBLIC_STORAGE_DOMAINStorage domain nameFor file uploadskanbn.com
NEXT_PUBLIC_AVATAR_BUCKET_NAMES3 bucket name for avatarsFor file uploadsavatars
NEXT_PUBLIC_ATTACHMENTS_BUCKET_NAMES3 bucket name for attachmentsFor file uploadsattachments
NEXT_PUBLIC_ALLOW_CREDENTIALSAllow email & password loginFor authenticationtrue
NEXT_PUBLIC_DISABLE_SIGN_UPDisable sign upFor authenticationfalse
NEXT_PUBLIC_WHITE_LABEL_HIDE_POWERED_BYHide “Powered by kan.bn” on public boards (self-host)For white labellingtrue
KAN_ADMIN_API_KEYAdmin API key for stats and admin endpointsFor admin/monitoringyour-secret-admin-key

See .env.example for a complete list of supported environment variables.

Contributing 🤝

We welcome contributions! Please read our contribution guidelines before submitting a pull request.

Contributors 👥

License 📝

Kan is licensed under the AGPLv3 license.

Contact 📧

For support or to get in touch, please email henry@kan.bn or join our Discord server.

About

The open source Trello alternative.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages