Orbit is an issue and project tracker: create projects, track issues through a workflow, and see progress on a dashboard — as a List, a Kanban Board, a Calendar, or an Activity feed. It's a single Laravel + Inertia.js + React monolith, so there's no separate API to stand up.
- Projects & issues — projects with name/color/description; issues with title, description, status, priority, labels, assignee, and dates.
- Four views of the same data — table, board, calendar, activity feed — plus configurable columns and saved filters, per project.
- A dashboard with productivity trends and completion ratios.
- Notifications — nine event types, each independently toggleable for in-app and email delivery.
- Project-scoped roles & permissions — no global admin; Owner/Admin/ Member/Viewer system tiers plus custom roles, backed by 30 fine-grained permissions.
- Integrations — a catalog of third-party tools per project (Discord
live today, via queued webhooks); see
documentation/en/integrations/for how to add another. - Account settings (
/settings) — profile, security, preferences, notifications, and workspace management (members, roles, integrations). - Light/dark/system theme with 10 accent colors, persisted per browser.
- Guided onboarding for new accounts.
| Layer | Technology |
|---|---|
| Backend | PHP 8.5+, Laravel 13 |
| Bridge | Inertia.js 3 (no REST/JSON API — Laravel renders React pages directly) |
| Frontend | React 19, TypeScript, Vite |
| Styling | Tailwind CSS, class-variance-authority, light/dark/system theming |
| Database | SQLite by default (swappable via Laravel's standard DB_* env vars) |
| Testing | Pest (PHP), Vitest + Testing Library (React) |
The backend follows a layered Controller → Service → Repository
architecture. The frontend follows atomic design (Atoms, Molecules,
Organisms) composing into Inertia pages under resources/js/Pages.
Needs Docker and make.
git clone https://github.com/Adiksuu/orbit.git
cd orbit
make setupThis builds the images and starts the stack. .env is created and an
APP_KEY generated automatically on first run (or Doppler is used instead,
if this directory is linked to it — see
documentation/ for details).
| Service | URL |
|---|---|
| App | http://localhost:8000 |
| Vite (assets/HMR) | http://localhost:5173 |
| nsfwjs (moderation) | http://localhost:3333 |
Common commands (see the Makefile for the full list):
make up # start the stack in the foreground
make down # stop the stack
make shell
make tinker
make migrate # run migrations
make fresh # rebuild with seed data
make test # run the PHP test suite
make test-js # run the frontend test suite
make lint
make type-checkNeeds PHP 8.5+, Composer, and Node.js.
git clone https://github.com/Adiksuu/orbit.git
cd orbit
composer setup # installs deps, copies .env, migrates, builds assets
php artisan migrate:fresh --seed # optional: seed demo data
composer dev # runs the server, queue listener, log tail, and Vite togetherOnly applies to the Docker setup — the native setup uses a plain local
.env copied from .env.example. In Docker, ${KEY} values come either
from a .env file at the repo root (the default, generated automatically
on first make setup) or, for the core team, from
Doppler if this directory is linked to it — the
Makefile detects which mode applies, no manual choice needed. See
documentation/en/architecture/04-docker-doppler-and-deployment.md
for the full mechanics and troubleshooting.
composer test # PHP (Pest) suite
npm test # Frontend (Vitest) suiteCI runs type-checking, linting, both test suites, and a production build on
every push and pull request against master.
app/
Http/Controllers/ Thin HTTP layer — validate, delegate, redirect
Services/ Business logic and side effects
Repositories/ All Eloquent query logic
Policies/ Permission- and project-membership-based authorization
Models/ Issue, Project, User, Role, ProjectIntegration, ...
resources/js/
Pages/ Inertia pages, resolved by name
Components/ Atoms / Molecules / Organisms (atomic design)
Layouts/ Page shells (MainLayout, GuestLayout)
types/ Shared TypeScript types
documentation/
en/, pl/ Step-by-step "how do I extend X" guides (bilingual)
See CLAUDE.md and documentation/ for a
deeper dive into architecture and conventions.
Orbit is a standard Laravel + Vite app: build assets (npm run build),
install PHP deps without dev packages, point DB_* at a real database,
migrate (php artisan migrate --force), cache config/routes/views, and
serve public/ behind Nginx/Apache or the Docker image's php target.
Run a queue worker (php artisan queue:work) if you rely on queued jobs
(email notifications, integration webhooks).
Licensed under the MIT License.