Sign inSign up

teamplanner21/team-planner-backend

By teamplanner21

•Updated about 1 month ago

FastAPI backend for Team Planner, self-hosted on-call/capacity planning app.

Image
0

291

teamplanner21/team-planner-backend repository overview

⁠Team Planner — Backend

FastAPI backend for Team Planner, a self-hosted team availability, capacity-planning, and on-call/alerting platform. Runs entirely inside your own infrastructure — no data leaves your cluster.

This image is one half of a two-container app. It needs a PostgreSQL database and, for the UI, the companion teamplanner21/team-planner-frontend⁠ image — it isn't meant to run standalone.

šŸ“– Full step-by-step installation guide⁠ — Docker Compose trial and production Kubernetes/Helm, plus the first-login setup wizard walkthrough. The quick start below is the short version.

⁠Quick start (Docker Compose)

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_DB: planner
      POSTGRES_USER: planner
      POSTGRES_PASSWORD: planner

  backend:
    image: teamplanner21/team-planner-backend:latest
    environment:
      DATABASE_URL: postgresql://planner:planner@db:5432/planner
      APP_SESSION_SECRET: change-me-to-a-long-random-string
      LOCAL_ADMIN_PASSWORD: change-me
      APP_BASE_URL: http://localhost:8080/team-planner/
    ports:
      - "8000:8000"
    depends_on:
      - db

  frontend:
    image: teamplanner21/team-planner-frontend:latest
    ports:
      - "8080:8080"
    depends_on:
      - backend

Then open http://localhost:8080/team-planner/⁠ — log in as admin with whatever you set LOCAL_ADMIN_PASSWORD to.

⁠Kubernetes (production)

Use the official Helm chart — installs this image, the frontend, and PostgreSQL together with sane defaults, ingress/Istio support, auto-generated secrets, and horizontal scaling:

https://github.com/alpyanar82/team-planner-helm⁠

git clone https://github.com/alpyanar82/team-planner-helm
cd team-planner-helm
cp values.example.yaml my-values.yaml   # edit: hostname, company name
helm install team-planner . -f my-values.yaml --namespace team-planner --create-namespace

⁠What's new in 1.2.0

  • Vendors — track the people in your delivery teams who aren't in your corporate directory. An HRIS only knows who's on the payroll and a directory sync only knows who was provisioned, so nothing could answer "is the supplier's engineer in tomorrow". Each person now has an employment type (Employee / Contractor / Vendor), vendors are managed under Admin > Vendors, and a Vendors page shows per-supplier availability: who's around today, who's away, what's coming in the next two weeks, and which teams they sit in. External people carry a badge on the calendar grid. Employment type is never written or cleared by a directory sync, so a vendor you add by hand survives the nightly run. Bulk onboarding works through the users CSV import (employmentType / vendorName).
  • Half-day leave, simplified — the entry pop-up asks for a start date, First half / Second half, and a total number of days (0.5 steps). The end date is derived and shown back, skipping weekends and your country's public holidays, along with how many days get deducted.
  • Search finds teams — the header search box now matches team names as well as people; picking a team opens its calendar.
  • Fix — people on Parental leave, Maternity leave or Outlook Out-of-Office were missing from the Teams daily digest even though capacity already counted them as unavailable.

⁠Upgrading to 1.2.0

This release adds database columns and a table. Migrations do not run automatically on container start.

  • Helm / Kubernetes — the chart's migration Job runs alembic upgrade head for you. Nothing to do.
  • Docker Compose — after pulling the new image, run it once:
docker compose exec backend alembic upgrade head

Skipping this leaves the backend logging column users.employment_type does not exist.

⁠Full source & docs

Application source, environment variable reference, and architecture docs: https://github.com/alpyanar82/team-planner⁠

⁠Tags

  • latest, 1.2.0 — current stable release.
  • 1.1.0, 1.0.0 — previous releases.

⁠License

FREE tier runs immediately after install (up to 20 users / 2 teams, no signup required). Upload a license from Admin > License to unlock TRIAL/PAID limits and additional integrations (SSO, Personio, Workday, Outlook, Microsoft Teams).

Tag summary

Content type

Image

Digest

sha256:0c88e3838…

Size

138.3 MB

Last updated

about 1 month ago

docker pull teamplanner21/team-planner-backend