> ## Documentation Index
> Fetch the complete documentation index at: https://docs.theaitracker.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Run AI Visibility Tracker locally from a fresh clone.

## Requirements

<AccordionGroup>
  <Accordion title="PHP 8.2 or newer">
    Required by `composer.json`. Laravel 13 will refuse to boot on older versions.
  </Accordion>

  <Accordion title="Composer 2">
    Used for the PHP dependencies and the `composer dev` helper script.
  </Accordion>

  <Accordion title="Node.js 20.17 or newer">
    Vite 6 and the Mintlify CLI both require a modern Node. Node 22 LTS is what the team uses.
  </Accordion>

  <Accordion title="A database">
    `.env.example` defaults to SQLite, which is the fastest way to get started. MySQL and
    PostgreSQL both work — set the usual `DB_*` variables instead.
  </Accordion>
</AccordionGroup>

## Install

<Steps>
  <Step title="Install dependencies">
    ```bash theme={null}
    composer install
    npm install
    ```
  </Step>

  <Step title="Create your environment file">
    ```bash theme={null}
    cp .env.example .env
    php artisan key:generate
    ```

    The app will boot with an empty `.env`, but most features stay inert until the
    provider keys are filled in. See the [environment reference](/configuration/environment)
    for what each block unlocks.
  </Step>

  <Step title="Create the database">
    For the default SQLite setup:

    ```bash theme={null}
    touch database/database.sqlite
    php artisan migrate
    ```

    Sessions, cache and the queue all use database drivers by default, so the migrations
    are required even for a UI-only session.
  </Step>

  <Step title="Add the keys you need">
    At minimum, set the Clerk keys — authentication guards every dashboard route, so
    without them you can only reach the public pages.

    ```ini theme={null}
    CLERK_PUBLISHABLE_KEY=
    VITE_CLERK_PUBLISHABLE_KEY=
    CLERK_SECRET_KEY=
    CLERK_FRONTEND_API_URL=
    CLERK_JWKS_URL=
    ```
  </Step>

  <Step title="Start everything">
    ```bash theme={null}
    composer dev
    ```

    That runs `php artisan serve`, `php artisan queue:listen` and `npm run dev`
    concurrently. The app is then at `http://localhost:8000`.
  </Step>
</Steps>

<Tip>
  Prefer separate terminals when you are debugging a job — `composer dev` multiplexes all
  three processes into one output stream, which makes queue exceptions easy to miss.
</Tip>

## First run through the app

1. Sign in through Clerk. New users are pushed into the mandatory onboarding wizard at
   `/setup` by the `onboarded` middleware.
2. The 5-step wizard analyses the domain, generates a brand profile, topics and a starter
   prompt set. Onboarding runs on the cheap model configured by `ONBOARDING_MODEL`.
3. After onboarding you land on `/visibility`, the dashboard home. `/dashboard` is kept as
   an alias that redirects there.
4. Prompts are managed at `/prompts`. Nothing is executed against the providers until a
   prompt is `active` and a batch runs — see [the visibility pipeline](/architecture/visibility-pipeline)
   for how to trigger one by hand.

<Note>
  A local-only UI sandbox is registered at `/sandbox` for working on the design system in
  isolation. The route only exists when `APP_ENV=local`.
</Note>
