TO
tomaspinho/pm
pm - Project Management for Teams
A modern, open-source kanban board for project management. Built with Go, htmx, and PostgreSQL, pm provides organizations with a simple yet powerful way to track work, collaborate on tasks, and manage projects.
Features
📋 Kanban Workflow
- Drag-and-drop task management between customizable columns
- Customizable columns with color coding (default: To Do, In Progress, Done)
- Task cards showing title, description, due date, and assignees
- Task counts per column for quick progress tracking
👥 Multi-Tenant Organizations
- Organization-based workspaces with member management
- Multiple projects per organization for different teams or initiatives
- Cross-project task dependencies for complex workflows
🔗 Task Dependencies
- Blocking relationships between tasks (Task B blocked by Task A)
- Dual view of blockers (what's blocking this task) and blocking (what this task blocks)
- Cycle detection prevents circular dependencies
- Visual indicators for dependency status
👤 Team Collaboration
- User accounts with email authentication and session management
- Task assignments to multiple team members
- Threaded comments with nested replies (up to 3 levels deep)
- Activity feed tracks all task changes with audit history
⚙️ Flexible Task Properties
- Arbitrary key-value metadata stored as JSONB for custom fields
- Due dates with visual indicators for overdue and due-soon tasks
- Rich descriptions and editing capabilities
- Author tracking for task ownership
🔍 Search & Discovery
- Task search across titles and descriptions
- User search for finding team members
- Project picker for quick navigation between projects
- URL-based navigation for bookmarking and sharing task views
🎨 Modern UX
- htmx-powered partial updates for instant feedback
- Keyboard shortcuts (ESC to close panels)
- Responsive design works on desktop and tablet
- Clean, accessible interface built with TailwindCSS
Tech Stack
| Component | Technology |
|---|---|
| Language | Go 1.26 |
| Web Framework | Fiber v3 |
| Database | PostgreSQL with sqlx |
| Migrations | goose |
| Templates | templ |
| CSS | TailwindCSS v4 |
| Frontend Interactivity | htmx 2.x |
Quick Start
# Install dependencies
mise install
mise run setup
# Start development server
mise run dev
# (Optional) In a separate terminal, run CSS watch mode
mise run dev:cssVisit http://localhost:3000 to get started.
Organization Use Cases
Software Development Teams
- Sprint planning: Create columns for Backlog, In Progress, In Review, Done
- Bug tracking: Use dependencies to link bugs to the features they block
- Code reviews: Assign tasks to multiple reviewers for sign-off
- Release milestones: Tag tasks with metadata like
milestone: v1.2
Marketing Teams
- Campaign tracking: Columns for Ideation, Content Creation, Review, Published
- Content pipeline: Chain dependencies (brief → draft → design → publish)
- Creator assignments: Assign writers, designers, and reviewers to campaigns
- Due date management: Track publication deadlines with visual urgency indicators
Customer Support
- Ticket management: Columns for New, In Progress, Awaiting Customer, Resolved
- Priority routing: Use metadata for
priority: high,SLA: 4h,escalated: true - Cross-team dependencies: Block engineering tasks on customer features
- Activity tracking: Full audit log of who did what and when
Operations & Infrastructure
- Maintenance schedules: Tasks for recurring operations with due dates
- Incident response: Track incident tasks blocking normal operations
- Change management: Dependency chains for multi-step deployments
- On-call assignments: Tag tasks with metadata like
team: DB,type: alert
Consultancies & Agencies
- Client projects: Separate projects per client within your organization
- Deliverable tracking: Custom metadata for
client: Acme,contract: $10k,hours: 8 - Resource assignments: Assign multiple consultants to high-touch client work
- Cross-client dependencies: Block internal tooling tasks on client projects
Non-Profit Organizations
- Volunteer coordination: Assign tasks to volunteer team members
- Event planning: Columns for Planning, Recruitment, Execution, Follow-up
- Grant management: Track deliverables with metadata for
grant: 2025-EF,deadline: Q2 - Program dependencies: Chain tasks across different program areas
HR & People Operations
- Onboarding flows: Dependency chain from offer accepted → account setup → orientation
- Employee lifecycle: Custom columns per stage (Hiring, Onboarding, Active, Offboarding)
- Policy updates: Assign tasks to document owners and reviewers
- Metadata tags: Track
department,urgent,quarter
Example Workflows
Starting a New Project
- Create an organization (or join an existing one)
- Create a new project with name and description
- Customize columns to match your workflow (or use defaults)
- Create tasks directly in columns via the "Add Task" button
Managing a Task with Dependencies
- Create or open a task to see the full detail pane
- In the "Dependencies" section, search for and add blocking tasks
- Visual indicators show which tasks are blocked and which are blocking
- The system prevents circular dependencies
Collaborating with Comments
- Open any task to see its history
- Add comments with rich text descriptions
- Reply to comments for threaded discussions
- Edit or delete your own comments
- View the activity feed to see all task changes
Using Custom Metadata
- Open a task and scroll to the "Metadata" section
- Click "Add Metadata" to create key-value pairs
- Examples:
priority: high,story_points: 5,estimate: 4h - Search, edit, or delete metadata entries as needed
Contributing
We welcome contributions! Please see the AGENTS.md file for developer guidelines, including our tech stack, build commands, and code style conventions.
Development
# Run tests
mise run test
# Run tests with coverage
mise run test:coverage
# Lint code
mise run lint
# Auto-fix linting issues
mise run lint:fix
# Database migrations
mise run db:up # Apply pending migrations
mise run db:down # Rollback last migration
mise run db:status # Show migration statusLicense
MIT