DBDelve
Dive deep into your data. A fast, native, multi-engine database client written in Rust. Free and open source, no telemetry.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
React Router 7 starter with BetterAuth, Prisma, AI SDK, VoltAgent and Tailwind
翻訳待ち
Loading the full README.
Read the full README ↗A full-stack starter kit for shipping AI-powered products. Clone the repo, configure your environment, and have a working application with authentication, AI chat, and agent tools in minutes.
/settings page with profile editing, password change (revokes other sessions), and account deletion behind a password confirmsendEmail(); without an API key, emails render to the console so local dev needs no provider/admin panel for role changes, ban/unban, and user impersonationrender_card tool lets the agent produce rich visual cards (info, steps, pros/cons) inline in the chat, demonstrating the tool-driven approach to generative UI/notes with search and pagination; the agent writes to the same storeapp/components/ui/ via the shadcn CLI: bunx shadcn@latest add @coss/<name>| Layer | Technology |
|---|---|
| Framework | React Router (SSR, config-based routing) |
| UI | React 19, Tailwind CSS v4, COSS UI (Base UI) |
| Database | PostgreSQL via Prisma ORM |
| Auth | Better Auth |
| AI | Mastra, Vercel AI SDK, Anthropic Claude |
| Validation | Zod, React Hook Form |
| Runtime | Bun (dev), Node 24 Alpine (production) |
bun install
bun run setup # interactive: names the app, writes .env, starts Docker,
# migrates, and seeds demo users in one shot
bun run dev
bun run setup asks for an app name and derives a slug from it (My App →
my-app). It writes both to app/config.ts (APP_NAME, APP_SLUG) and uses
the slug for the package name, the Docker Compose project, the local database
(my_app), the cookie names, and the demo users' emails, so a copy never
shares containers, data, or sessions with another copy on the same machine.
The databases publish on host ports 5432 and 5433 by default. When another
project (the original Iridium, another copy, or a native Postgres) already
holds either one, setup offers the next free pair (5442/5443, 5452/5453, ...)
and writes it to .env as POSTGRES_PORT and MASTRA_POSTGRES_PORT, with
the matching database URLs, so copies can run side by side. When it finishes,
it lists what is left to rebrand by hand (favicon, landing copy, README).
It also takes --non-interactive (and --name "<App Name>") for scripted
use; it then takes the free ports without asking. To pick them yourself,
export POSTGRES_PORT and MASTRA_POSTGRES_PORT before running it. Prefer manual control? The steps below do the same thing by hand. To
stand up production on Railway, see Railway.
bun install
Copy .env.example to .env and fill in:
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/iridium"
MASTRA_DATABASE_URL="postgresql://postgres:postgres@localhost:5433/mastra"
# Host ports for docker-compose.dev.yml; keep the URLs above on the same ports
POSTGRES_PORT="5432"
MASTRA_POSTGRES_PORT="5433"
BETTER_AUTH_SECRET="<openssl rand -base64 32>"
BETTER_AUTH_BASE_URL="http://localhost:5173"
ANTHROPIC_API_KEY="sk-ant-..."
# Optional: real email sending (otherwise emails log to the console)
RESEND_API_KEY="re_..."
EMAIL_FROM="Iridium <[email protected]>"
# Optional: OAuth login buttons (each renders only when both vars are set).
# Callback URLs: <BETTER_AUTH_BASE_URL>/api/auth/callback/<provider>
GITHUB_CLIENT_ID="..."
GITHUB_CLIENT_SECRET="..."
GOOGLE_CLIENT_ID="..."
GOOGLE_CLIENT_SECRET="..."
# Optional: first admin. Listed emails become ADMIN once verified.
ADMIN_EMAILS="[email protected]"
The app runs two PostgreSQL instances via docker-compose.dev.yml:
| Database | Port | Env Var | Purpose |
|---|---|---|---|
iridium | 5432 | DATABASE_URL | Prisma (app data, auth, threads) |
mastra | 5433 | MASTRA_DATABASE_URL | Mastra memory and state |
This is the beginning of the README. Read the rest at the original. Read the full README ↗