A self-hostable Linear clone: a fast, keyboard-first issue tracker and project management app, available both as a web app and as a cross-platform desktop app (Electron via NativePHP).
Keywords: linear clone · issue tracker · project management · laravel · inertia · react · typescript · tailwind · electron · nativephp · self-hosted · open source · kanban · agile · sprint planning
- 🗂️ Issue tracking — create, assign, prioritize and track tickets through customizable statuses.
- 🏷️ Labels, priorities & assignees — organize work the way your team thinks.
- 📋 Views & projects — group issues into projects and saved views.
- ⌨️ Keyboard-first UX — a fast, focused workflow inspired by Linear.
- 🖥️ Desktop app — ships as a cross-platform Electron app powered by NativePHP.
- 🌍 Internationalization — built-in English & French locales (i18next + react-i18next).
- 🔐 Social login — OAuth via Laravel Socialite, plus a one-click demo account.
- 🎨 Modern UI — shadcn/ui + Radix primitives on Tailwind CSS v4.
| Layer | Technology |
|---|---|
| Backend | PHP 8.2+, Laravel 12 |
| Bridge | Inertia.js 2, Ziggy |
| Frontend | React 19, TypeScript 5, Tailwind CSS 4, shadcn/ui + Radix |
| Desktop | Electron via NativePHP |
| Auth | Laravel Socialite |
| i18n | i18next, react-i18next (en / fr) |
| Tooling | Vite 6, ESLint, Prettier, Pest/PHPUnit |
# 1. Clone
git clone https://github.com/MakFly/linear-electron.git
cd linear-electron
# 2. Install dependencies
composer install
bun install
# 3. Environment
cp .env.example .env
php artisan key:generate
# 4. Database
php artisan migrate --seed
# 5. Build assets (the app serves the production build)
bun run build
bunx vite build --ssr
# 6. Serve
php artisan serve # http://localhost:8100Then open the app and choose “Continue with demo account” to explore it instantly.
php artisan native:serve # run the desktop app in dev
php artisan native:build # build a distributablebun run dev # Vite dev server
bun run lint # ESLint --fix
bun run format # Prettier
php artisan test # backend testsℹ️ The app serves the production build, so run
bun run build(andvite build --ssr) to see source changes locally.
UI strings live in resources/js/locales/{en,fr}/common.json and are rendered with
useTranslation(). The locale follows the user's language preference, shared via Inertia.
Contributions to additional locales are welcome.
Contributions, issues and feature requests are welcome. Please open an issue to discuss
significant changes before submitting a pull request. Make sure bun run lint and
php artisan test pass.
Current version: v0.0.1 — early preview. See Releases.
Released under the MIT License.
Built with Laravel, Inertia & React. Not affiliated with Linear.