Can Linear be vibe coded?
Keyboard-first issue tracker and project planner for product teams
The object model is small: issues, states, labels, cycles, projects. A keyboard-first single-player tracker with a board, cycles, and one-way GitHub sync is a contained build. What does not survive the copy is the sync engine, real-time multiplayer, and the integration surface (GitHub two-way, Slack, Figma, Sentry) that make Linear the place a team actually agrees on what is being built.
Jump to the build brief ↓Checked Jul 2026
What you pay today, before any DIY hosting
medium editorial confidence
Buildability by layer
Screens, forms, and focused interactions
The repeatable job the product performs
Availability and legality of required data
Uptime, queues, support, and maintenance
Security, compliance, and user confidence
The achievable core
- Local SQLite issue tracker with prefixed IDs, statuses, priorities, labels, a drag board, rolling two-week cycles, a command palette, and a script that pulls GitHub issues in.
- Build the focused developer workflow you use repeatedly, with local configuration.
- A responsive interface with real empty, loading, success, and error states.
The parts a prompt cannot buy
- real-time multiplayer and the sub-100ms sync engine
- native mobile and desktop apps
- two-way integrations with GitHub, Slack, Figma, and Sentry
- Triage, Insights, and Linear Asks
- Permissions, presence, and shared workflows are difficult to simplify.
- The last 20 percent is sync, migration fidelity, speed, and edge cases.
Why people still pay
An issue tracker is only worth anything when everyone uses it, and people only use one that never makes them wait. Linear sells speed and shared context, not features: the whole team sees the same board update instantly, GitHub PRs close issues on merge, and the roadmap stays honest because filing is faster than complaining. A solo copy tracks your own work fine and settles no arguments.
Permissions, presence, and shared workflows are difficult to simplify.
The last 20 percent is sync, migration fidelity, speed, and edge cases.
Connectors, OAuth flows, and vendor API changes require constant upkeep.
The brief
Context, requirements, acceptance criteria, non-goals, and the full production standard — as Markdown, ready for any coding agent.
Build brief — a focused alternative to Linear
Context
**Linear** — Keyboard-first issue tracker and project planner for product teams. It currently costs $10/mo.
The object model is small: issues, states, labels, cycles, projects. A keyboard-first single-player tracker with a board, cycles, and one-way GitHub sync is a contained build. What does not survive the copy is the sync engine, real-time multiplayer, and the integration surface (GitHub two-way, Slack, Figma, Sentry) that make Linear the place a team actually agrees on what is being built.
This brief describes a focused, single-operator replacement for the part of Linear that is genuinely reproducible. It is deliberately narrower than the product it replaces, and it says so in writing. Build the useful core; do not pretend to have rebuilt the rest.
What you are building
Local SQLite issue tracker with prefixed IDs, statuses, priorities, labels, a drag board, rolling two-week cycles, a command palette, and a script that pulls GitHub issues in.
Build the focused developer workflow you use repeatedly, with local configuration.
A responsive interface with real empty, loading, success, and error states.
Requirements
Functional
Local or hosted database.
A box the team can reach if more than one person uses it.
Data and integrations
GitHub personal access token for issue sync.
Each of these needs a real account, credential, or quota. Set them up before writing feature code.
Non-functional
Accessibility: semantic markup, labelled controls, visible focus, and reduced-motion support.
Security: server-side secrets, validated input, and no credentials in the client bundle.
Reliability: retries with backoff on external calls, and a clear failure state when a provider is down.
Portability: the operator can export their data and leave without losing it.
Implementation brief
Build me a personal issue tracker to replace Linear. Requirements:
A local web app: Node + Express + better-sqlite3, server-rendered, dark, bound
to localhost. One SQLite file I back up.
Issues have an auto ID with a team prefix (ENG-142), a Markdown body, a status
(backlog, todo, in progress, in review, done, canceled), a priority (urgent to
none), labels, and a point estimate.
Keyboard-first: c creates, s status, p priority, l labels, / searches titles,
bodies, and comments with SQLite FTS5, cmd+k opens a command palette for all
of it.
Three views: My Issues, a board with drag between columns, and the current
cycle, a two-week window with a remaining-estimate burndown. On its last
day, unfinished issues roll forward, done ones archive.
node scripts/sync-github.js (octokit, token and repo list in .env) pulls open
GitHub issues in, keyed on issue number so re-runs update instead of duplicate.
Pressing b copies a branch name (me/eng-142-short-title) to the clipboard.
Comments and a per-issue activity log. No accounts, no telemetry, nothing
leaves the machine except the GitHub calls.
Out of scope: multiplayer, mobile apps, and writing back to GitHub. Skip auth
and deploy config, this runs on my machine.
README: how to run it, where the SQLite file lives, and the GitHub token scope.
Delivery standard
Inspect the repository first, then write a short implementation plan before writing code.
Deliver the smallest complete end-to-end workflow first; every primary control must work against persisted data.
Use real validation and storage; never substitute fake dashboards, decorative controls, hard-coded success states, or mock integrations.
Include responsive layouts plus genuine empty, loading, success, validation, and failure states.
Keep secrets server-side in environment variables, provide .env.example, and never commit credentials or user data.
Add structured logs around every external call and return actionable errors without leaking sensitive details.
Write unit tests for the core logic and one automated test of the main user journey.
Finish with a README covering setup, architecture, data location, backups, tests, deployment, and known limitations.
Acceptance criteria
A clean install starts the app using only the README and .env.example.
The primary journey works from first visit through saved result, reload, edit, export, and deletion where applicable.
Invalid input, missing configuration, provider failure, and an empty database each have a usable state.
The interface works at 390px and 1440px, is keyboard navigable, and shows visible focus on every control.
Tests, type checking, linting, and a production build all pass with no ignored failures.
No part of the interface implies a live integration, security guarantee, or scale capability that was not actually built and verified.
Non-goals
Do not build these, and do not claim to have replaced them:
Real-time multiplayer and the sub-100ms sync engine.
Native mobile and desktop apps.
Two-way integrations with GitHub, Slack, Figma, and Sentry.
Triage, Insights, and Linear Asks.
Permissions, presence, and shared workflows are difficult to simplify.
The last 20 percent is sync, migration fidelity, speed, and edge cases.
What you still own after launch
Secure credentials, rotate secrets, and handle provider rate limits.
Run migrations, backups, restores, and dependency updates.
Test the critical journey after every model, API, or hosting change.
Monitor failures and fix the edge cases a first prompt will miss.
Maintain every third-party integration as APIs and OAuth rules change.
Risk
**Operational risk.** The code is achievable; dependable data, integrations, and ongoing operations are the real cost.
Editorial confidence in this assessment: medium. No independent one-shot implementation is linked yet.
Prior art
Working open-source software you can read, fork, or borrow from before starting:
[Plane](https://github.com/makeplane/plane) — Open-source project and issue tracker with cycles, modules, and boards; the closest self-hosted Linear analogue
[Huly](https://github.com/hcengineering/platform) — Open-source all-in-one platform whose tracker module is an explicit Linear alternative
Generated by [Can It Be Vibe Coded?](https://www.canitbevibecoded.com) · Full report: https://www.canitbevibecoded.com/linear
You still own the product
- Secure credentials, rotate secrets, and handle provider rate limits.
- Run migrations, backups, restores, and dependency updates.
- Test the critical journey after every model, API, or hosting change.
- Monitor failures and fix the edge cases a first prompt will miss.
- Maintain every third-party integration as APIs and OAuth rules change.
Open-source prior art
Before you start
Can Linear be vibe coded?
Partly, if you narrow it. The object model is small: issues, states, labels, cycles, projects. A keyboard-first single-player tracker with a board, cycles, and one-way GitHub sync is a contained build. What does not survive the copy is the sync engine, real-time multiplayer, and the integration surface (GitHub two-way, Slack, Figma, Sentry) that make Linear the place a team actually agrees on what is being built.
What can an AI coding agent reproduce from Linear?
Local SQLite issue tracker with prefixed IDs, statuses, priorities, labels, a drag board, rolling two-week cycles, a command palette, and a script that pulls GitHub issues in. Build the focused developer workflow you use repeatedly, with local configuration. A responsive interface with real empty, loading, success, and error states.
What will a DIY Linear replacement still be missing?
real-time multiplayer and the sub-100ms sync engine; native mobile and desktop apps; two-way integrations with GitHub, Slack, Figma, and Sentry; Triage, Insights, and Linear Asks; Permissions, presence, and shared workflows are difficult to simplify.; The last 20 percent is sync, migration fidelity, speed, and edge cases.
What do I still own after building a Linear alternative?
Secure credentials, rotate secrets, and handle provider rate limits. Run migrations, backups, restores, and dependency updates. Test the critical journey after every model, API, or hosting change. Monitor failures and fix the edge cases a first prompt will miss. Maintain every third-party integration as APIs and OAuth rules change.