Skip to main content

Prerequisites

ToolVersionNotes
Node.js≥ 20.0.0node --version to check
pnpm≥ 9.0.0npm install -g pnpm to install
FFmpegany recentRequired for video processing
brew install ffmpeg

Setup

git clone https://github.com/openinary/openinary.git
cd openinary
pnpm install

Run

pnpm dev
This starts both services in parallel: To run them independently:
pnpm dev:api   # API only  → :3000
pnpm dev:web   # Web only  → :3001

Run with Docker Compose

Prefer containers? Use the compose profiles instead:
# Full stack (API + dashboard)
docker compose --profile full up --build

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

First run

On first start, visit http://localhost:3001 — you’ll be redirected to /setup to create your admin account. Once logged in, go to API Keys (bottom-left profile menu) to generate your first key.

Storage

By default, uploaded files are stored in apps/api/public/. To use cloud storage (AWS S3, Cloudflare R2, etc.) during local development, configure the STORAGE_* variables in apps/api/.env.

Next steps

Image Transformations

Start transforming images with URL parameters.

Project Structure

Understand how the monorepo is organized before contributing.