---
title: Overview
icon: shapes
description: Monorepo layout and technology stack.
---
> For the complete documentation index, see [llms-docs.txt](/llms-docs.txt) or the site index [llms.txt](/llms.txt). Full docs corpus: [llms-full-docs.txt](/llms-full-docs.txt). Prefer markdown URLs (append `.md`) for agent consumption. Product skill: [skill.md](/skill.md).


Reloop is a Bun monorepo — Next.js frontends, ElysiaJS microservices, shared packages, and Docker infrastructure.

Local URL: [https://local.reloop.sh](https://local.reloop.sh). Bootstrap with [`bun setup`](/docs/setup).


## Structure

```
reloop/
├── apps/
│   ├── backend/         # ElysiaJS APIs + KumoMTA (smtp, inbound)
│   └── frontend/        # web, dashboard, docs, links, console
├── packages/            # @reloop/ui, @reloop/db, @reloop/bus, …
└── local/               # Docker Compose, Caddy, TLS, bun setup
```

| Path | Role |
| :--- | :--- |
| `apps/frontend/*` | Product UI and docs sites |
| `apps/backend/*` | HTTP APIs and mail edge |
| `packages/*` | Shared libraries |
| `local/` | Compose stack, Caddy, [`bun setup`](/docs/setup) |


## Frontend apps

<CardGroup cols={2}>
  <Card icon="browser" title="Web" href="/setup/frontend/web">
    Marketing site — port `3000`
  </Card>
  <Card icon="layout" title="Dashboard" href="/setup/frontend/dashboard">
    Product UI — port `3001`
  </Card>
  <Card icon="book-open" title="Docs" href="/setup/frontend/docs">
    This documentation — port `3003`
  </Card>
  <Card icon="mail-single" title="Links" href="/setup/frontend/links">
    Preferences and redirects — port `3005`
  </Card>
</CardGroup>

Stack: [Next.js](https://nextjs.org/), [Tailwind CSS](https://tailwindcss.com/), [Radix UI](https://www.radix-ui.com/) via `@reloop/ui`, [SWR](https://swr.vercel.app/).


## Backend services

<CardGroup cols={3}>
  <Card icon="lock" title="Auth" href="/setup/backend/auth">
    Sessions and orgs — `8000`
  </Card>
  <Card icon="globe" title="Domain" href="/setup/backend/domain">
    Sending domains — `8011`
  </Card>
  <Card icon="key-new" title="API Key" href="/setup/backend/api-key">
    API keys — `8012`
  </Card>
  <Card icon="webhook" title="Webhook" href="/setup/backend/webhook">
    Event delivery — `8013`
  </Card>
  <Card icon="users" title="Contacts" href="/setup/backend/contacts">
    Audience — `8014`
  </Card>
  <Card icon="mail-single" title="Mail" href="/setup/backend/mail">
    Send API — `8015`
  </Card>
  <Card icon="logs" title="Logs" href="/setup/backend/logs">
    Analytics — `8016`
  </Card>
  <Card icon="workflow" title="Workflow" href="/setup/backend/workflow">
    Automations — `8017`
  </Card>
  <Card icon="file-upload" title="Upload" href="/setup/backend/upload">
    Attachments — `8018`
  </Card>
  <Card icon="layout" title="Template" href="/setup/backend/template">
    Templates — `8019`
  </Card>
  <Card icon="inbox" title="Inbox" href="/setup/backend/inbox">
    Inbound mail — `8021`
  </Card>
  <Card icon="envelope" title="Email" href="/setup/backend/email">
    Platform email — `8022`
  </Card>
  <Card icon="billing-custom" title="Credits" href="/setup/backend/credits">
    Usage / billing — `8023`
  </Card>
  <Card icon="server" title="SMTP" href="/setup/backend/smtp">
    Outbound edge — Docker
  </Card>
  <Card icon="inbox" title="Inbound" href="/setup/backend/inbound">
    MX edge — Docker
  </Card>
</CardGroup>

Stack: [ElysiaJS](https://elysiajs.com/), [Better Auth](https://www.better-auth.com/), [KumoMTA](https://kumomta.com/) for smtp/inbound.


## Data & infrastructure

Started by `bun docker:up` (Postgres, Redis, Caddy, Mailpit, MinIO, NATS, spam, SMTP, inbound).

<CardGroup cols={2}>
  <Card icon="database" title="PostgreSQL" href="https://www.postgresql.org/">
    Primary DB — port `5432`
  </Card>
  <Card icon="code" title="Drizzle ORM" href="https://orm.drizzle.team/">
    Schema in `@reloop/db`
  </Card>
  <Card icon="server" title="Redis" href="https://redis.io/">
    Sessions and cache — `6379`
  </Card>
  <Card icon="folder-open" title="MinIO" href="https://min.io/">
    Object storage — `9010` / console `9001`
  </Card>
  <Card icon="share-nodes" title="NATS" href="https://nats.io/">
    Event bus — `4222`
  </Card>
  <Card icon="globe" title="Caddy" href="https://caddyserver.com/">
    TLS proxy for `local.reloop.sh`
  </Card>
  <Card icon="mail-single" title="Mailpit" href="http://localhost:8025">
    Captured mail UI — `8025`
  </Card>
</CardGroup>


## Tooling

<CardGroup cols={2}>
  <Card icon="rocket" title="Bun" href="https://bun.sh/">
    Runtime and package manager
  </Card>
  <Card icon="boxes" title="Turborepo" href="https://turbo.build/">
    Task runner and build cache
  </Card>
  <Card icon="cubes" title="Docker" href="https://www.docker.com/">
    Local infra via `local/docker-compose.yml`
  </Card>
  <Card icon="sparkles" title="Biome" href="https://biomejs.dev/">
    Lint and format
  </Card>
</CardGroup>


## Shared packages

| Package | Purpose |
| :--- | :--- |
| `@reloop/ui` | Design system and components |
| `@reloop/db` | Drizzle schema and Postgres client |
| `@reloop/auth` | Shared auth client utilities |
| `@reloop/bus` | NATS messaging wrapper |
| `@reloop/cache` | Redis caching helpers |
| `@reloop/apikey` | API key hashing and verification |
| `@reloop/webhook-events` | Webhook event types |
| `@reloop/tailwind` | Shared Tailwind config |
| `@reloop/tsconfig` | Shared TypeScript config |


## Next

<CardGroup cols={2}>
  <Card icon="rocket" title="Setup" href="/setup">
    One-command local bootstrap with `bun setup`
  </Card>
  <Card icon="globe" title="Port reference" href="/setup/port">
    Gateway routes and every local port
  </Card>
</CardGroup>
