Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
38 lines (33 loc) · 2.07 KB
/
Copy path.env.example
File metadata and controls
38 lines (33 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Copy to .env and fill in. Every variable is parsed by src/config/env.ts at
# startup: a missing or malformed value fails the boot instead of surfacing as
# undefined in production three days later.
# ─── Database (required) ──────────────────────────────────────────────────
# Pooled connection used by the application at runtime.
DATABASE_URL="postgresql://ocean:ocean_dev_only@localhost:5433/ocean_command"
# Unpooled connection used by Prisma Migrate. Same value locally; differs on
# hosted PostgreSQL where the pooler cannot run DDL.
DIRECT_DATABASE_URL="postgresql://ocean:ocean_dev_only@localhost:5433/ocean_command"
# ─── Authentication (required) ────────────────────────────────────────────
# Minimum 32 characters. Generate with: openssl rand -base64 32
BETTER_AUTH_SECRET=""
BETTER_AUTH_URL="http://localhost:3000"
# ─── Providers (optional — defaults are the free/offline implementations) ──
# mock (default). A real AIS feed is not part of the MVP.
AIS_PROVIDER="mock"
# open-meteo (default) | mock
# Open-Meteo is free and needs no key. Use mock to work offline; tests and CI
# always use mock, so neither depends on a third party being up.
WEATHER_PROVIDER="open-meteo"
# null (default) | openai | anthropic — Phase 9. Ships disabled on purpose.
AI_PROVIDER="null"
# OPENAI_API_KEY=""
# ANTHROPIC_API_KEY=""
# ─── Observability (optional) ─────────────────────────────────────────────
# Protects /api/metrics. In production, if this is unset the route is NOT
# registered at all — a metrics endpoint that fails open is an information leak.
# METRICS_TOKEN=""
LOG_LEVEL="info"
# Protects /api/cron/* (the scheduled AIS refresh). Minimum 16 characters.
# In production, leaving this unset makes those routes refuse every request
# rather than running unauthenticated.
# CRON_SECRET=""