Tracklane
Modern AI-first Rails 8 project management for teams who want their own.
The problem
Most open project management tools show their age in UI, real-time collaboration, and deploy story. Closed SaaS alternatives solve the UX problem but lock teams into vendor silos, usage limits, and weak self-host paths. Teams that need privacy, data sovereignty, or on-prem deploy end up choosing between a modern experience and owning their data. AI features in PM tools usually sit as bolt-ons that do not change how the team actually works.
Goals
- Every surface a 2026 PM user expects: kanban, timeline, calendar, wiki, workload
- Self-hostable on a single VPS with one Kamal deploy command
- AI in the core workflow via triage and ask-your-project chat, off by default and bring-your-own-key
- Strict multi-tenancy enforced at the database, not just in the app layer
The solution
- Organizations and projects with role-gated access (admin, manager, member, viewer)
- Issues with status, priority, assignee, start date, due date, comments, and @mentions
- Kanban board with Stimulus drag-and-drop and Turbo Stream live updates across every connected user
- Timeline (Gantt) and calendar views per project, plus a workload view grouping issues by assignee across the organization
- Markdown wiki per project and time tracking per issue with per-user and per-week totals
- Invitation flow with signed tokens and email notifications for assignments, mentions, and pending invites
- Claude-powered issue triage on create: suggested priority, labels, and assignee with confirm or override
- Ask-your-project chat: pgvector retrieval over issues and comments with cited sources inline
My role
- → Solo developer on architecture, data model, UX, and every phase
- → Rails 8 with Hotwire, Turbo Streams, and Solid Cable for real-time collaboration without a React front-end
- → Claude integration for triage; pgvector + embeddings pipeline for ask-your-project chat
- → Postgres 16 with Row-Level Security on every tenant-scoped table, enforced through a NOSUPERUSER app role
- → 79 integration tests (200 assertions) that prove cross-tenant SELECT / INSERT / UPDATE / DELETE are rejected
UI direction
Monday-style three-column shell: persistent left sidebar with projects, top bar with async theme toggle, main area with right rail widgets where they fit. Dark mode as a first-class target, not an afterthought. AI suggestions render inline on the issue page with confirm or dismiss buttons, never a separate modal.
User flows
Issue triage flow
- 1 Member creates a new issue with title and description
- 2 Background job asks Claude for a priority, assignee, labels, and rationale
- 3 Turbo Stream drops the suggestion card onto the issue page without a refresh
- 4 Member reviews and confirms or dismisses; the PM state persists either way
Ask your project
- 1 Member opens the project's ask page
- 2 Types a natural language question
- 3 Server embeds it, runs a cosine search over this project's indexed issues and comments, asks Claude with those chunks
- 4 Response renders with inline citations linking back to the source issue, plus a source list below
Cross-tenant safety
- 1 Every request opens a transaction and SETs app.current_user_id and app.current_organization_id
- 2 Every tenant-scoped table has a USING + WITH CHECK RLS policy on organization_id
- 3 Rails connects as a NOSUPERUSER role so the policies actually apply even to the owner path
- 4 Integration suite simulates the app role with SET LOCAL ROLE and asserts the guarantees
Screenshots
Click any image to open at full size.
Key learnings
- Postgres RLS done right is the cleanest way to get bulletproof multi-tenancy in Rails, and the test suite is what makes it real
- after_commit callbacks fire after the outer transaction closes, so any RLS-dependent work needs to re-establish its own GUC scope
- Hotwire with Turbo Streams and Solid Cable covers real-time PM features without pulling in a JavaScript framework
- Bring-your-own-key for AI keeps the app fully usable and demoable even when no provider is configured
- Monday-style shell with a persistent sidebar and quiet right rail scales from tiny demo data up to a real org without redesign
Want something like Tracklane?
I'm open to senior contract work. Let's talk about what you're building.
Get in touch