-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.env.example
More file actions
188 lines (166 loc) · 8.91 KB
/
Copy path.env.example
File metadata and controls
188 lines (166 loc) · 8.91 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# OrangeCat Environment Variables Template
# Copy this to .env.local and fill in your actual values
# NEVER commit .env.local to git!
# ============================================================================
# SUPABASE (Required for auth, database, storage)
# ============================================================================
# Self-hosted on bitbaum, NOT supabase.com — the managed cloud project was
# retired 2026-06 (see docs/operations/DECOMMISSION-CLOUD.md). There is no
# dashboard to fetch these from: keys live in the box .env, ask before minting.
NEXT_PUBLIC_SUPABASE_URL="https://supabase.orangecat.ch"
NEXT_PUBLIC_SUPABASE_ANON_KEY="your-anon-key"
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY="your-publishable-key"
# Server-side only (never expose to browser)
SUPABASE_SERVICE_ROLE_KEY="your-service-role-key"
SUPABASE_SERVICE_KEY="your-service-role-key"
SUPABASE_SECRET_KEY="your-secret-key"
SUPABASE_ACCESS_TOKEN="sbp_..."
SUPABASE_JWT_SECRET="your-jwt-secret"
# ============================================================================
# POSTGRES (Required for database connections)
# ============================================================================
# Get from: Supabase Dashboard → Settings → Database
POSTGRES_URL="postgresql://..."
POSTGRES_URL_NON_POOLING="postgresql://..."
POSTGRES_PRISMA_URL="postgresql://..."
POSTGRES_DATABASE="postgres"
POSTGRES_HOST="db.your-project.supabase.co"
POSTGRES_USER="postgres"
POSTGRES_PASSWORD="your-db-password"
# ============================================================================
# DEPLOYMENT (self-hosted on Hetzner "bitbaum", behind Caddy)
# ============================================================================
# No Vercel. Production env lives in /opt/orangecat/app/.env on the box.
# See docs/operations/deployment/DEPLOYMENT_PROCESS.md for the on-box flow.
# ============================================================================
# GITHUB (Required for repo integration, PRs, issues)
# ============================================================================
# Get from: gh auth token (after running: gh auth login)
GITHUB_TOKEN="ghp_your_personal_access_token"
# ============================================================================
# APPLICATION (Optional, used for OG metadata and CORS)
# ============================================================================
# NEXT_PUBLIC_APP_URL="https://orangecat.ch"
# NEXT_PUBLIC_SITE_URL="https://orangecat.ch"
# NEXT_PUBLIC_SITE_NAME="OrangeCat"
# ============================================================================
# BITCOIN / LIGHTNING (Required for payments)
# ============================================================================
BITCOIN_NETWORK="testnet"
# OrangeCat's OWN receiving addresses — power the founding-supporter donation on
# /support (rendered as QR + copy). Until set to real values, /support shows a
# graceful "opens shortly" state instead of a placeholder address.
NEXT_PUBLIC_BITCOIN_ADDRESS="bitcoin:bc1q...?message=OrangeCat%20Donation"
NEXT_PUBLIC_LIGHTNING_ADDRESS="your-username@getalby.com"
# NEXT_PUBLIC_LIGHTNING_NODE_URL=""
# LIGHTNING_API_KEY=""
# Payment provider: 'mock' (default) or 'btcpay' (requires BTCPay Server)
# PAYMENT_PROVIDER="mock"
# BTCPay Server integration (required if PAYMENT_PROVIDER="btcpay")
# BTCPAY_URL="https://your-btcpay-instance.example.com"
# BTCPAY_STORE_ID=""
# BTCPAY_API_KEY=""
# Platform receiving wallet for Cat Credits top-ups (NWC connection string).
# This is OrangeCat's OWN wallet, used only to RECEIVE credit purchases — it is
# unrelated to users' (non-custodial) wallets. When unset, Lightning top-up is
# disabled and the rest of Cat Credits is unaffected. NWC is an abstraction, so
# this can point at a hosted wallet now or a self-hosted LNbits/BTCPay node later.
# PLATFORM_NWC_URI="nostr+walletconnect://<pubkey>?relay=...&secret=..."
# Encryption keys (generate with: openssl rand -hex 32)
# API_KEY_ENCRYPTION_SECRET=""
# PAYMENT_ENCRYPTION_KEY=""
# ============================================================================
# OAUTH PROVIDERS (Optional, social login)
# ============================================================================
# OAuth client IDs and secrets are configured in the Supabase Dashboard:
# Supabase Dashboard > Authentication > Providers
# No env vars needed here — all OAuth config lives in the Supabase dashboard.
# Callback URL to configure for each provider: https://your-domain.com/auth/callback
# Supported providers: Google, GitHub, Apple, X/Twitter
# ============================================================================
# CLOUDFLARE TURNSTILE (Optional, bot protection)
# ============================================================================
# Get from: https://dash.cloudflare.com → Turnstile
# NEXT_PUBLIC_TURNSTILE_SITE_KEY=""
# TURNSTILE_SECRET_KEY=""
# ============================================================================
# REDIS / UPSTASH (Optional, for rate limiting and caching)
# ============================================================================
# REDIS_URL="redis://localhost:6379"
# REDIS_TOKEN=""
# UPSTASH_REDIS_REST_URL="https://your-instance.upstash.io"
# UPSTASH_REDIS_REST_TOKEN=""
# ============================================================================
# AI / OPENROUTER (Optional for platform-level AI)
# ============================================================================
# Get from: https://openrouter.ai/keys
# If not set, AI chat will only work when users bring their own key (BYOK mode)
# If set, provides platform-level access to Llama 4 Maverick and other models
# OPENROUTER_API_KEY="sk-or-..."
# GEMINI_API_KEY=""
# GROQ_API_KEY=""
# ============================================================================
# ANALYTICS (Optional)
# ============================================================================
# Provider: 'ga' (Google Analytics), 'mixpanel', 'amplitude', or 'plausible'
# NEXT_PUBLIC_ANALYTICS_PROVIDER=""
# NEXT_PUBLIC_GA_MEASUREMENT_ID=""
# NEXT_PUBLIC_MIXPANEL_TOKEN=""
# NEXT_PUBLIC_AMPLITUDE_KEY=""
# ============================================================================
# TURBO (Optional build optimization)
# ============================================================================
TURBO_CACHE="remote:rw"
TURBO_REMOTE_ONLY="true"
TURBO_RUN_SUMMARY="true"
TURBO_DOWNLOAD_LOCAL_ENABLED="true"
NX_DAEMON="false"
# ============================================================================
# FEATURE FLAGS (Optional)
# ============================================================================
# Enable mic buttons across forms and onboarding (client-side)
NEXT_PUBLIC_FEATURE_VOICE_INPUT="true"
# Enable analytics tracking
# NEXT_PUBLIC_FEATURE_ANALYTICS="false"
# Show performance monitor overlay (development only)
# NEXT_PUBLIC_SHOW_PERFORMANCE_MONITOR="false"
# Enable Supabase debug logging
# NEXT_PUBLIC_SUPABASE_DEBUG="false"
# Write-mode gates (set to true to enable write operations in those modules)
# LOANS_WRITE_MODE="false"
# PRODUCTS_WRITE_MODE="false"
# METRICS_ENABLED="false"
# ============================================================================
# FLEETCROWN SIBLING INTEGRATION
# ============================================================================
# Same 32+ character random value on OrangeCat and FleetCrown. Signs ten-minute,
# one-use entity → build handoffs; never expose it as NEXT_PUBLIC_*.
FLEETCROWN_BUILD_INTENT_SECRET=""
# Same webhook secret on both products for settled-payment activity signals.
ORANGECAT_WEBHOOK_SECRET=""
FLEETCROWN_EVENTS_URL="https://fleetcrown.orangecat.ch/api/orangecat/events"
NEXT_PUBLIC_FLEETCROWN_URL="https://fleetcrown.orangecat.ch"
# Canonical OrangeCat pages used by both support pages.
NEXT_PUBLIC_ORANGECAT_PROJECT_ID="cb093f00-8745-4579-98df-050ebfb37181"
NEXT_PUBLIC_FLEETCROWN_ORANGECAT_PROJECT_ID="8130c927-114a-45b7-8cc2-99efd5224025"
# ============================================================================
# SETUP INSTRUCTIONS
# ============================================================================
# 1. Copy this file: cp .env.example .env.local
# 2. Fill in Supabase credentials from your project dashboard
# 3. Fill in Postgres credentials from Supabase database settings
# 4. Run: gh auth login (to authenticate GitHub CLI)
# 5. Run: gh auth token (to get GitHub personal access token)
# 6. Add GitHub token to GITHUB_TOKEN above
# 7. Optional: Add OpenRouter API key for platform-level AI
# 8. Run: npm run dev (to start development server)
# ============================================================================
# CREDENTIALS
# ============================================================================
# Local dev: fill in Supabase + Postgres values from your self-hosted
# Supabase instance (Studio on the box) into .env.local.
# Production: values live in /opt/orangecat/app/.env on the Hetzner box.
#
# Also add manually:
# - GITHUB_TOKEN (from: gh auth token)
# - OPENROUTER_API_KEY (optional, from: https://openrouter.ai/keys)