> ## Documentation Index
> Fetch the complete documentation index at: https://orbit-dev.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Tech stack

> What Orbit is built with, and why there's no separate API

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](https://laravel.com)** (PHP 8.4+) — routing, Eloquent ORM, validation, sessions
* **[Inertia.js for Laravel](https://inertiajs.com)** — 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](https://pestphp.com)** for backend tests, run against an in-memory SQLite database

<Note>
  `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.
</Note>

## Frontend

* **React 19** with TypeScript, bundled by **Vite**
* **[Inertia.js React adapter](https://inertiajs.com)** — 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](https://dndkit.com)** — powers the Board view's drag-and-drop
* **[Tiptap](https://tiptap.dev)** — the rich text editor used for issue descriptions and comments, storing content as markdown
* **[Vitest](https://vitest.dev)** + 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.
