selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

taskview-community logo

Self-host taskview-community

v1.56.0

Source-available PM suite with Kanban, graphs and MCP

ReleaseSource AvailableOther
Docker ComposeCompose file & guide
docker compose up -d
Updated9 hours ago
LanguageTypescript
Setup difficultyModerate
MobileNative app
ThemeDark mode
Stars
1 380
CPU
1 CPU core
RAM
1 GB
Storage
10 GB disk space
Ports
80 (Web app container serves the frontend (published as host port 8888 by default)), 1401 (API server listens on APP_PORT (published as host port 1725 in the sample compose))
Requires
PostgreSQL
Docker
gimanhead/taskview-ce-api-server
Kanban board with dark themeMain dashboard with dark themeTask list view with dark themeSprint planning screenTime tracking screenAnalytics dashboardOrganization members managementIntegrations pageSingle Sign-On configurationWebhooks configuration

What is taskview-community?

Should you self-host taskview-community?

taskview-community scores 52/100 on selfhost.directory (how scoring works) and ranks #28 of 45 in Project Management. It has 1 380 GitHub stars.

It shipped 20 stable releases in the past year. The latest, v1.56.0, came out on 22 September 2026. New versions land roughly every 7 days.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is Other-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Plane (86/100, 61 588 stars). It scores higher overall, so compare the two before you pick. See taskview-community vs Plane side by side.

taskview-community README

How to install taskview-community

Install taskview-community with Docker Compose

Docker and Docker Compose
Environment variables
DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, DB_PORT, JWT_SIGN, APP_URL, ENCRYPTION_KEY
mkdir taskview && cd taskview

Create .env.postgresql and .env.taskview, then a docker-compose.yml with db, migration, taskview-api-server and taskview-webapp services, then:

docker compose up -d

Web app on port 8888, API on 1725; a default user is created by the migration container and should be claimed immediately.

How to configure taskview-community

  • ACCESS_LIFE_TIME1d
  • ALLOW_PUBLIC_REGISTRATIONtrueSet to false to close the instance so accounts are created by invitation only.

    Set to false to close the instance so accounts are created by invitation only.

    values: true, false

  • ANALYTICS_SECTIONSAnalytics (optional) Comma-separated list of section IDs to enable in the analytics page. When unset, all sections are available. When set, only the listed IDs are available — in the order they appear here. Example:

    Analytics (optional) Comma-separated list of section IDs to enable in the analytics page. When unset, all sections are available. When set, only the listed IDs are available — in the order they appear here. Example:

  • API_PUBLIC_URLPublic URL of the API server as external systems see it; used for SSO callback/ACS URL and the SCIM endpoint.

    Public URL of the API server as external systems see it; used for SSO callback/ACS URL and the SCIM endpoint.

  • API_URLhttp://localhost:1401
  • APP_PORT1401Application

    Application

  • APP_URLhttp://localhost:3000
  • AUTH_LOGIN_METHODSComma-separated list of login methods to offer on the login page (unset = all enabled).

    Comma-separated list of login methods to offer on the login page (unset = all enabled).

    values: magic-link, password, sso, social

  • CENTRIFUGO_API_KEYCentrifugo API key for server-to-server communication.

    Centrifugo API key for server-to-server communication.

  • CENTRIFUGO_API_URLInternal Centrifugo API URL for real-time notifications.

    Internal Centrifugo API URL for real-time notifications.

  • CENTRIFUGO_PUBLIC_PORTPublic port that clients use to connect to Centrifugo (exposed port, not internal docker port)

    Public port that clients use to connect to Centrifugo (exposed port, not internal docker port)

  • CENTRIFUGO_PUBLIC_URLFull WebSocket URL for browser clients to reach Centrifugo.

    Full WebSocket URL for browser clients to reach Centrifugo.

  • CENTRIFUGO_TOKEN_SECRETSecret for generating Centrifugo client connection tokens (HMAC).

    Secret for generating Centrifugo client connection tokens (HMAC).

  • DB_HOSTlocalhostDatabase Configuration

    Database Configuration

  • DB_NAMEtv_3_dev_db
  • DB_PASSWORD
  • DB_POOL_MAX20Maximum Postgres connections per API worker (each worker opens its own pool).

    Maximum Postgres connections per API worker (each worker opens its own pool).

  • DB_PORT5432
  • DB_USERpostgres
  • ENCRYPTION_KEY32-byte hex string (64 characters). Required for SSO and integrations.

    32-byte hex string (64 characters). Required for SSO and integrations.

  • FILE_MAX_SIZE_MB10Maximum size of one uploaded file in megabytes.

    Maximum size of one uploaded file in megabytes.

  • FILE_QUOTA_MODEenforceQuota mode for organization file storage: enforce rejects uploads over the quota with 507; off disables quotas.

    Quota mode for organization file storage: enforce rejects uploads over the quota with 507; off disables quotas.

    values: enforce, off

  • FILE_QUOTA_ORGANIZATION_MB100Default file-storage quota of every organization, in megabytes.

    Default file-storage quota of every organization, in megabytes.

  • FILE_STORAGE_LOCAL_DIRDirectory for the local provider; in Docker mount it as a volume.

    Directory for the local provider; in Docker mount it as a volume.

  • FILE_STORAGE_PROVIDERTask attachments provider that receives new uploads; its settings must be present or attachments stay disabled.

    Task attachments provider that receives new uploads; its settings must be present or attachments stay disabled.

    values: local, s3

  • FILE_STORAGE_S3_ACCESS_KEYAccess key id for the s3 file-storage provider.

    Access key id for the s3 file-storage provider.

  • FILE_STORAGE_S3_BUCKETBucket name for the s3 file-storage provider.

    Bucket name for the s3 file-storage provider.

  • FILE_STORAGE_S3_ENDPOINTCustom endpoint for S3-compatible storage (MinIO, Cloudflare R2, Backblaze B2). Leave empty for AWS.

    Custom endpoint for S3-compatible storage (MinIO, Cloudflare R2, Backblaze B2). Leave empty for AWS.

  • FILE_STORAGE_S3_FORCE_PATH_STYLEfalseSet to true for MinIO and most self-hosted S3-compatible servers.

    Set to true for MinIO and most self-hosted S3-compatible servers.

    values: true, false

  • FILE_STORAGE_S3_REGIONRegion for the s3 file-storage provider. Any value works for MinIO.

    Region for the s3 file-storage provider. Any value works for MinIO.

  • FILE_STORAGE_S3_SECRET_KEYSecret access key for the s3 file-storage provider.

    Secret access key for the s3 file-storage provider.

  • FIREBASE_CREDENTIALS_PATHPath to Firebase service account JSON file for native mobile push notifications.

    Path to Firebase service account JSON file for native mobile push notifications.

  • GITEA_API_URL
  • GITEA_BASE_URLhttps://gitea.comOverride for self-hosted Gitea.

    Override for self-hosted Gitea.

  • GITEA_INTEGRATION_CALLBACK_URLhttp://localhost:1401/module/integrations/oauth/gitea/callback
  • GITEA_INTEGRATION_CLIENT_IDGitea Integration OAuth

    Gitea Integration OAuth

  • GITEA_INTEGRATION_CLIENT_SECRET
  • GITHUB_API_URLhttps://api.github.comOverride for GitHub Enterprise API.

    Override for GitHub Enterprise API.

  • GITHUB_BASE_URLhttps://github.comOverride for GitHub Enterprise.

    Override for GitHub Enterprise.

  • GITHUB_INTEGRATION_CALLBACK_URLhttp://localhost:1401/module/integrations/oauth/github/callback
  • GITHUB_INTEGRATION_CLIENT_IDGitHub Integration OAuth (separate from login OAuth)

    GitHub Integration OAuth (separate from login OAuth)

  • GITHUB_INTEGRATION_CLIENT_SECRET
  • GITLAB_API_URLhttps://gitlab.com/api/v4Override for self-hosted GitLab API.

    Override for self-hosted GitLab API.

  • GITLAB_BASE_URLhttps://gitlab.comOverride for self-hosted GitLab.

    Override for self-hosted GitLab.

  • GITLAB_INTEGRATION_CALLBACK_URLhttp://localhost:1401/module/integrations/oauth/gitlab/callback
  • GITLAB_INTEGRATION_CLIENT_IDGitLab Integration OAuth

    GitLab Integration OAuth

  • GITLAB_INTEGRATION_CLIENT_SECRET
  • INVITE_EMAIL_ENABLEDfalseEmail a person when they are invited to a project. Requires SMTP.

    Email a person when they are invited to a project. Requires SMTP.

    values: true, false

  • INVITE_EMAIL_HOURLY_LIMIT30Maximum invite emails one user may trigger per hour.

    Maximum invite emails one user may trigger per hour.

  • JWT_ALGHS256
  • JWT_SIGNJWT Configuration

    JWT Configuration

  • LOG_LEVELinfo in production, debug otherwiseMinimum level written to the log files in logs/.

    Minimum level written to the log files in logs/.

    values: fatal, error, warn, info, debug, trace, silent

  • NODE_ENVdevelopmentNode Environment

    Node Environment

  • OAUTH_DYNAMIC_REGISTRATIONfalseWhether AI clients may register themselves as OAuth clients (RFC 7591) when connecting to the MCP server.

    Whether AI clients may register themselves as OAuth clients (RFC 7591) when connecting to the MCP server.

    values: true, false

  • PASSWORD_CHANGE_CONFIRMATIONemailHow account password changes are confirmed: email (code, needs SMTP) or password (current password).

    How account password changes are confirmed: email (code, needs SMTP) or password (current password).

    values: email, password

  • PM2_INSTANCES2Number of API worker processes (PM2 cluster mode). Accepts a number or max (one worker per CPU core).

    Number of API worker processes (PM2 cluster mode). Accepts a number or max (one worker per CPU core).

  • REFRESH_LIFE_TIME2d
  • SLACK_API_BASE_URLhttps://slack.com/apiOverride the Slack Web API base.

    Override the Slack Web API base.

  • SLACK_AUTHORIZE_URLhttps://slack.com/oauth/v2/authorizeOverride the Slack OAuth authorize URL.

    Override the Slack OAuth authorize URL.

  • SLACK_CALLBACK_URLOAuth callback URL (must match the Slack app redirect URL).

    OAuth callback URL (must match the Slack app redirect URL).

  • SLACK_CLIENT_IDSlack app client ID.

    Slack app client ID.

  • SLACK_CLIENT_SECRETSlack app client secret.

    Slack app client secret.

  • SLACK_SIGNING_SECRETSlack request signing secret - verifies inbound slash commands / interactivity.

    Slack request signing secret - verifies inbound slash commands / interactivity.

  • SLACK_WEBHOOK_PREFIXhttps://hooks.slack.com/Override the incoming-webhook URL prefix (used to detect legacy webhook connections).

    Override the incoming-webhook URL prefix (used to detect legacy webhook connections).

  • SMTP_ENCRYPTIONssl
  • SMTP_FROM_EMAIL
  • SMTP_FROM_NAMETaskViewSender name in emails.

    Sender name in emails.

  • SMTP_HOSTsmtp.domain.comSMTP Configuration

    SMTP Configuration

  • SMTP_PASSWORD
  • SMTP_PORT465
  • SMTP_USERNAME
  • SSO_TRUSTED_DOMAINSComma-separated email domains that skip DNS/HTTP ownership checks for SSO (air-gapped installs).

    Comma-separated email domains that skip DNS/HTTP ownership checks for SSO (air-gapped installs).

  • TASKVIEW_API_URLPins the API server URL for the web app container; when set the server selector disappears from the login page.

    Pins the API server URL for the web app container; when set the server selector disappears from the login page.

  • TASKVIEW_TOKENTaskView API token with the tvk_ prefix for the MCP client.

    TaskView API token with the tvk_ prefix for the MCP client.

  • TASKVIEW_URLTaskView API server URL for the taskview-mcp client (self-hosted instance or cloud).

    TaskView API server URL for the taskview-mcp client (self-hosted instance or cloud).

  • TELEGRAM_BOT_TOKENBot token from @BotFather for the Telegram notification integration.

    Bot token from @BotFather for the Telegram notification integration.

  • TELEGRAM_BOT_USERNAMEBot username without @ (used to build deep-links) for the Telegram integration.

    Bot username without @ (used to build deep-links) for the Telegram integration.

  • TELEGRAM_WEBHOOK_SECRETSecret verified against Telegram's X-Telegram-Bot-Api-Secret-Token header on inbound updates.

    Secret verified against Telegram's X-Telegram-Bot-Api-Secret-Token header on inbound updates.

  • TRUST_PROXYfalseSet when running behind a reverse proxy so X-Forwarded-Proto/X-Forwarded-For are honoured.

    Set when running behind a reverse proxy so X-Forwarded-Proto/X-Forwarded-For are honoured.

  • WEBHOOKS_ALLOW_PRIVATE_URLSfalseLet webhooks target receivers on the private network (self-hosted only).

    Let webhooks target receivers on the private network (self-hosted only).

    values: true, false

taskview-community releases & version history

FAQ

Does TaskView have mobile apps?

Yes, Capacitor-based Android and iOS apps connect to your self-hosted server and sync tasks, projects and notifications.

Can I connect GitHub and GitLab repositories?

Yes, GitHub and GitLab repositories connect via OAuth and issues are imported and kept in sync through webhooks; self-hosted GitLab is supported too.

Does TaskView have role-based access control?

Yes, an RBAC system with 28 permissions; you create roles, assign permissions and give roles to users per project.

Does TaskView have time tracking?

Yes, via timers or manual entries, each with a billable flag, with reports by day, person, task and contributor and the same data through the API and MCP server.

Can I attach files to tasks?

Yes, task files can be stored on the server's local disk or in S3-compatible storage.

Does TaskView support subtasks?

Yes, any task can have lightweight subtasks with a title and a completion state.

Does TaskView have Kanban boards?

Yes, each project has a Kanban board with customizable status columns and drag-and-drop cards.

Does TaskView support HTTPS?

The application itself serves HTTP; for HTTPS put a reverse proxy such as Nginx or Caddy in front to terminate SSL.

How do I update TaskView?

Run docker compose pull then docker compose up -d; the migration container applies database changes automatically.

Can I run TaskView on a VPS?

Yes, on any VPS provider, deployed with Docker Compose behind a reverse proxy such as Nginx, Caddy or Traefik for SSL.

What are the system requirements?

Docker and Docker Compose on Linux, macOS or Windows; the minimum recommendation is 1 CPU core, 1 GB RAM and 10 GB disk space.

How do I install TaskView?

Install Docker and Docker Compose, create two environment files and a docker-compose.yml; the setup takes about 5 minutes.

What is the difference between TaskView and SaaS tools like Trello or Asana?

TaskView is self-hosted on your own server, so project data never leaves your infrastructure, with no subscriptions, vendor lock-in or third-party access.

More in Issue Tracking

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…