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

# Local Development

> Run the Openinary monorepo from source, with the API on :3000 and the dashboard on :3001.

Clone, install, run:

```bash theme={null}
git clone https://github.com/openinary/openinary.git
cd openinary
pnpm install
pnpm dev
```

`pnpm dev` starts both services in parallel.

| Service | URL |
| - | - |
| API | [http://localhost:3000](http://localhost:3000) |
| Web dashboard | [http://localhost:3001](http://localhost:3001) |

Run them one at a time with `pnpm dev:api` (:3000) or `pnpm dev:web` (:3001).

## First run

Visit **[http://localhost:3001](http://localhost:3001)** and you are redirected to `/setup` to create your admin account. Once logged in, open **API Keys** from the bottom-left profile menu to generate your first key.

## Prerequisites

| Tool | Version | Notes |
| - | - | - |
| Node.js | ≥ 20.0.0 | `node --version` to check |
| pnpm | ≥ 9.0.0 | `npm install -g pnpm` to install |
| FFmpeg | any recent | Required for video processing |

> [tab] macOS
>
> ```bash theme={null}
> brew install ffmpeg
> ```

> [tab] Linux (Ubuntu/Debian)
>
> ```bash theme={null}
> sudo apt-get install ffmpeg
> ```

> [tab] Linux (Fedora)
>
> ```bash theme={null}
> sudo dnf install ffmpeg
> ```

> [tab] Windows
>
> Download a build from [ffmpeg.org/download.html](https://ffmpeg.org/download.html#build-windows) and add it to your `PATH`.

## Run with Docker Compose

Prefer containers? Use the compose profiles instead:

```bash theme={null}
# Full stack (API + dashboard)
docker compose --profile full up --build

# API only
docker compose --profile api up --build
```

## Storage

Uploaded files land in `apps/api/public/` by default. For cloud storage, set the [`STORAGE_*` variables](https://docs.openinary.dev/configuration/storage) in `apps/api/.env`.

## Next steps

> [card] [Image Transformations](https://docs.openinary.dev/media-transformations/image-transformations.md)
>
> Start transforming images with URL parameters.

> [card] [Project Structure](https://docs.openinary.dev/project-structure.md)
>
> Understand how the monorepo is organized before contributing.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.