Learn from OSS
Plane

Introduction to Plane

Understand Plane, a modern open-source project management platform built for software teams

Introduction to Plane

TL;DR for Product Managers

Plane is an open-source alternative to Jira and Linear. It lets software teams track issues, run sprints, and collaborate in real-time — and it can be self-hosted. Think of it as a modern project management tool that companies can own and customize entirely.

What is Plane?

Plane is a full-stack, open-source project management platform designed for software teams. It's a monorepo containing 6 applications and 16 shared packages that together deliver a product comparable to Jira, but with a modern UX, real-time collaboration, and full self-hosting support.

The Product at a Glance

DimensionDetails
What it doesProject management — issues, sprints, wikis, roadmaps
Who uses itSoftware engineering teams of all sizes
How it's differentOpen-source, self-hostable, real-time CRDT editing, modern UX
Core techReact 18 + Django 4.2 + PostgreSQL 15.7 + Valkey (Redis)
Repo structurepnpm monorepo with Turborepo (6 apps + 16 packages)
LicenseAGPL-3.0
DeploymentDocker Compose (13 services), Kubernetes, All-in-One

Core Concepts

Understanding Plane starts with its entity hierarchy. Everything lives inside a Workspace, which is the multi-tenancy boundary:

Workspace (your organization)
  ├── Projects (separate boards / products)
  │     ├── Issues (units of work — the central entity)
  │     ├── Cycles (sprints / time-boxed iterations)
  │     ├── Modules (epics / feature groups)
  │     ├── Pages (wiki / documentation)
  │     ├── Views (saved filters: List, Kanban, Calendar, Gantt, Spreadsheet)
  │     ├── States (custom workflow statuses)
  │     └── Intake (triage inbox for external requests)
  ├── Labels (shared tags across projects)
  └── Members (team access at workspace or project level)

Key Insight

Issues are the central entity in Plane. Almost everything — cycles, modules, views, comments, activities — connects back to an issue. The issue.py model file alone defines 17 related models (Issue, IssueBlocker, IssueRelation, IssueMention, IssueAssignee, IssueLink, IssueAttachment, IssueActivity, IssueComment, IssueLabel, IssueSequence, IssueSubscriber, IssueReaction, CommentReaction, IssueVote, IssueVersion, IssueDescriptionVersion).

The Tech Stack — Why Each Piece Exists

LayerTechnologyWhy It's Used
FrontendReact 18.3.1 + React Router 7.12.0Component-based UI with modern routing and SSR support
BuildVite 7.3.1 + Turborepo 2.8.12Fast dev server, optimized builds, monorepo orchestration
StateMobX 6.12.0 + SWR 2.2.4Fine-grained reactivity for stores; SWR for data fetching/caching
StylingTailwind CSS 4.1.17Utility-first, consistent design system
BackendDjango 4.2.29 LTS + DRF 3.15.2Mature Python framework with REST API toolkit
DatabasePostgreSQL 15.7Relational integrity for complex entity relationships
CacheValkey 7.2.11 (Redis-compatible)Session cache and pub/sub
Message BrokerRabbitMQ 3.13.6Celery message broker for background job queuing
Task QueueCelery 5.4.0Async jobs (email notifications, cleanup, imports/exports)
Real-timeHocuspocus 2.15.2 + YjsConflict-free real-time collaborative editing (CRDT)
EditorTiptap + ProseMirror + YjsRich text editor with collaboration bindings
StorageMinIO / AWS S3File attachments and user uploads
ProxyCaddy 2.10Automatic HTTPS and reverse proxy
LintingOxLint + oxfmtFast Rust-based linting and formatting

For PMs: What's a CRDT?

CRDT stands for Conflict-free Replicated Data Type. It's the same technology Google Docs uses for real-time editing. When two people edit the same page simultaneously, CRDTs automatically merge their changes without conflicts — no "save conflict" dialogs needed. Plane uses the Yjs library (via Hocuspocus server) to power this.

Key Statistics

MetricValue
Frontend apps3 (web, admin, space) + live server + API + proxy
Shared packages16
TSX components (web app)1,482
UI component library84 components in @plane/ui
MobX store files180+
Database model files30+ (with 17 issue-related models alone)
Database migrations126
API view files110
Docker services13
Auth methods7+ (Session, API key, Google/GitHub/GitLab/Gitea OAuth, Magic link)
Supported languages20 (via @plane/i18n)

Core Features

Shipping Today

  • Issues / Work Items — Rich text editor (CRDT-powered), sub-issues, relationships, attachments, comments, activity log, reactions
  • Projects — Multi-project workspaces with custom states, labels, and point estimates
  • Cycles — Sprint planning with progress tracking
  • Modules — Epic/feature management with configurable lifecycle states
  • Pages / Wiki — Collaborative documentation with real-time editing
  • Views — 5 layout types (List, Kanban, Calendar, Spreadsheet, Gantt) with filters, sorts, group-by
  • Intake — External feedback/proposal triage workflow
  • Analytics — Custom analytics with filterable dimensions and metrics
  • Integrations — GitHub sync, Slack notifications, Webhooks, REST API
  • Notifications — In-app + email with granular per-project preferences
  • Stickies — Quick-capture sticky notes
  • i18n — 20 languages including EN, FR, DE, ES, JA, KO, ZH, RU, PT-BR

Security

  • Authentication: Session-based, Google/GitHub/GitLab/Gitea OAuth, Magic links, API keys
  • Authorization: Role-based access at workspace and project level
  • Input Validation: nh3 HTML sanitization (backend), sanitize-html (frontend)
  • Rate Limiting: 30/min anon, 60/min API key, plus per-endpoint throttles
  • CORS: Configurable allowed origins with credential support

What Makes Plane Different

  1. Real-time CRDT collaboration — Strongest technical moat; Hocuspocus + Yjs gives Google Docs-level editing
  2. Fully open-source + self-hosted — Unlike Jira or Linear, you own your data and infrastructure
  3. Modern UX — Clean interface closer to Linear than Jira
  4. Community + Enterprise editionsce/ and ee/ directories support feature gating
  5. Flexible deployment — Docker Compose, Kubernetes, or single-container All-in-One

What's Next

Resources