Skip to main content
Orbit is a single Laravel application. There is no standalone REST or GraphQL API and no separate frontend deployment — the backend renders the frontend directly through Inertia.js.

Backend

  • Laravel 13 (PHP 8.4+) — routing, Eloquent ORM, validation, sessions
  • Inertia.js for Laravel — controllers return page props via Inertia::render(...) instead of JSON; there’s no routes/api.php
  • SQLite by default (database/database.sqlite), swappable for MySQL or PostgreSQL through standard Laravel DB_* environment variables
  • Session, cache, and queue all default to the database driver
  • Pest for backend tests, run against an in-memory SQLite database
laravel/sanctum is a listed dependency but isn’t wired up anywhere — no published config, no HasApiTokens on the User model, no token-guarded routes. It’s a placeholder for a future token-based API, not something Orbit uses today.

Frontend

  • React 19 with TypeScript, bundled by Vite
  • Inertia.js React adapter — pages resolve by name from resources/js/Pages/**/*.tsx to match what a controller renders
  • Tailwind CSS, dark-theme-only, driven by CSS custom properties (--accent-color, --bg-color, and so on) consumed as Tailwind arbitrary values
  • dnd-kit — powers the Board view’s drag-and-drop
  • Tiptap — the rich text editor used for issue descriptions and comments, storing content as markdown
  • Vitest + Testing Library — frontend tests, colocated with components

Why no API

Because the frontend and backend ship as one Inertia application, most features described in these docs — creating an issue, dragging a card on the Board, saving a filter — happen through a standard Laravel web route (session-authenticated, CSRF-protected) that redirects back and lets Inertia re-render with fresh props. There’s currently no way to interact with Orbit programmatically from outside the browser.