esbeneickhardt/Planly

Self-hosted project management - Canvas, Kanban, Gantt, and per-task chat in one Docker command.

5

stars

146

commits

TypeScript

primary language

Sep 7, 2026

updated

docker
fastify
gantt-chart
kanban
prisma
project-management
react
self-hosted

README

Planly

Self-hosted project management - Canvas, Kanban, Gantt, and per-task chat in one Docker command.

Tests

Quick Start · Setup Guide · API Reference · Roadmap


Canvas

Kanban

Gantt

Chat

Quick Start

Requirements: Docker and Docker Compose v2.

git clone https://github.com/esbeneickhardt/Planly.git
cd Planly
cp .env.example .env
# Edit .env - set DB_PASSWORD, JWT_SECRET, ENCRYPTION_KEY, ADMIN_EMAIL, UPLOADS_DIR
# Generate secrets with: openssl rand -hex 32
docker compose up --build -d

Open http://localhost and register with your ADMIN_EMAIL to become the founding admin.

If you didn't set ADMIN_PASSWORD, a random password is printed to the backend logs on first start:

docker compose logs backend | grep "Password:"

For HTTPS + automatic TLS: see Getting Started.

Philosophy

Planly is built around a few strong opinions:

  • Plan visually: Tasks and their dependencies are created and mapped in the canvas. This provides an overview of which tasks need to be completed to reach milestones, and which tasks can be worked on in parallel. All tasks and milestones are directed towards a final goal.
  • No time tracking: Time spent is not a proxy for value delivered. Planly tracks what matters: what needs doing, who owns it, and when it's due.
  • Everything has an owner: If a task is everyone's responsibility, it is no one's responsibility. Therefore every task is assigned to an owner. Ownership removes ambiguity and makes accountability visible without surveillance.
  • Your data, your server: No cloud middleman, no vendor lock-in, no surprise pricing. One docker compose up and you're running it yourself.
  • Automation should be easy: With webhooks, app registrations, personal access tokens at your hand, you can integrate to other systems and automate time-wasting tasks.

Features

  • Views - Plan (canvas), Execute (kanban), Progress (gantt), Tasks (full task list), Analytics (throughput, status breakdown, cumulative completions, sprint velocity, per-person workload)
  • Collaboration - real-time WebSocket updates, per-task comment threads with @mentions, project chat with file attachments, plus 1:1 and group direct messages separate from project chat
  • Access control - role-based team permissions, tab-level overrides, invite links, access request workflow
  • Security - TOTP 2FA, SSO/OIDC (Google, Entra, Okta, Keycloak, any OIDC provider), IP allowlists, progressive account lockout, audit log
  • API - REST API, Personal Access Tokens, App Registrations, webhooks (HMAC-signed), iCal export
  • GitHub integration - inbound webhook receiver that imports opened issues/PRs as tasks and updates task status when a PR is merged or closed, with a rotatable HMAC secret (configure in Settings → Apps, admin-only)

Documentation

Setting up your server

Getting StartedInstall Planly, configure your environment, first login

Managing the server

AdministrationUsers, audit log, announcements
SecurityAuth model, MFA, CSRF, SSO, IP restrictions
OperationsMonitoring, scaling, incident response, backup/restore, key rotation

API & Integrations

Access TokensPersonal Access Tokens and App Registrations
API ReferenceInteractive API docs served at /api/docs in every Planly instance
WebhooksEvent catalog, payload format, HMAC signature verification

Developing Planly

DevelopmentLocal setup without Docker, architecture overview, migrations, contributing

Tech Stack

Fastify 5 + TypeScript · Prisma 5 · PostgreSQL 16 · React 18 + TailwindCSS · WebSocket · Docker Compose (dev) / Traefik + Let's Encrypt (prod)

License

Licensed under the Business Source License 1.1 - not OSI-approved open source today, but each release automatically converts to full Apache 2.0 four years after its publication date, no action required.

You are free to: use it, self-host it, modify it, and run it internally or commercially - with no time limit on any of that.

You may not (until the Change Date): sell it or offer it as a paid hosted service to others · use it as the basis for a competing product · use the code to train AI or ML models.

Contributors grant a royalty-free patent license covering their contributions. For commercial licensing or other permissions, open a GitHub Issue.

See CONTRIBUTING.md for the current status of external contributions.

Contributors

esbeneickhardt

146 commits

esbeneickhardt/Planly

Self-hosted project management - Canvas, Kanban, Gantt, and per-task chat in one Docker command.

5

stars

146

commits

TypeScript

primary language

Sep 7, 2026

updated

docker
fastify
gantt-chart
kanban
prisma
project-management
react
self-hosted

README

Planly

Self-hosted project management - Canvas, Kanban, Gantt, and per-task chat in one Docker command.

Tests

Quick Start · Setup Guide · API Reference · Roadmap


Canvas

Kanban

Gantt

Chat

Quick Start

Requirements: Docker and Docker Compose v2.

git clone https://github.com/esbeneickhardt/Planly.git
cd Planly
cp .env.example .env
# Edit .env - set DB_PASSWORD, JWT_SECRET, ENCRYPTION_KEY, ADMIN_EMAIL, UPLOADS_DIR
# Generate secrets with: openssl rand -hex 32
docker compose up --build -d

Open http://localhost and register with your ADMIN_EMAIL to become the founding admin.

If you didn't set ADMIN_PASSWORD, a random password is printed to the backend logs on first start:

docker compose logs backend | grep "Password:"

For HTTPS + automatic TLS: see Getting Started.

Philosophy

Planly is built around a few strong opinions:

  • Plan visually: Tasks and their dependencies are created and mapped in the canvas. This provides an overview of which tasks need to be completed to reach milestones, and which tasks can be worked on in parallel. All tasks and milestones are directed towards a final goal.
  • No time tracking: Time spent is not a proxy for value delivered. Planly tracks what matters: what needs doing, who owns it, and when it's due.
  • Everything has an owner: If a task is everyone's responsibility, it is no one's responsibility. Therefore every task is assigned to an owner. Ownership removes ambiguity and makes accountability visible without surveillance.
  • Your data, your server: No cloud middleman, no vendor lock-in, no surprise pricing. One docker compose up and you're running it yourself.
  • Automation should be easy: With webhooks, app registrations, personal access tokens at your hand, you can integrate to other systems and automate time-wasting tasks.

Features

  • Views - Plan (canvas), Execute (kanban), Progress (gantt), Tasks (full task list), Analytics (throughput, status breakdown, cumulative completions, sprint velocity, per-person workload)
  • Collaboration - real-time WebSocket updates, per-task comment threads with @mentions, project chat with file attachments, plus 1:1 and group direct messages separate from project chat
  • Access control - role-based team permissions, tab-level overrides, invite links, access request workflow
  • Security - TOTP 2FA, SSO/OIDC (Google, Entra, Okta, Keycloak, any OIDC provider), IP allowlists, progressive account lockout, audit log
  • API - REST API, Personal Access Tokens, App Registrations, webhooks (HMAC-signed), iCal export
  • GitHub integration - inbound webhook receiver that imports opened issues/PRs as tasks and updates task status when a PR is merged or closed, with a rotatable HMAC secret (configure in Settings → Apps, admin-only)

Documentation

Setting up your server

Getting StartedInstall Planly, configure your environment, first login

Managing the server

AdministrationUsers, audit log, announcements
SecurityAuth model, MFA, CSRF, SSO, IP restrictions
OperationsMonitoring, scaling, incident response, backup/restore, key rotation

API & Integrations

Access TokensPersonal Access Tokens and App Registrations
API ReferenceInteractive API docs served at /api/docs in every Planly instance
WebhooksEvent catalog, payload format, HMAC signature verification

Developing Planly

DevelopmentLocal setup without Docker, architecture overview, migrations, contributing

Tech Stack

Fastify 5 + TypeScript · Prisma 5 · PostgreSQL 16 · React 18 + TailwindCSS · WebSocket · Docker Compose (dev) / Traefik + Let's Encrypt (prod)

License

Licensed under the Business Source License 1.1 - not OSI-approved open source today, but each release automatically converts to full Apache 2.0 four years after its publication date, no action required.

You are free to: use it, self-host it, modify it, and run it internally or commercially - with no time limit on any of that.

You may not (until the Change Date): sell it or offer it as a paid hosted service to others · use it as the basis for a competing product · use the code to train AI or ML models.

Contributors grant a royalty-free patent license covering their contributions. For commercial licensing or other permissions, open a GitHub Issue.

See CONTRIBUTING.md for the current status of external contributions.

Contributors

esbeneickhardt

146 commits

Languages

TypeScript

98.5%