-
Notifications
You must be signed in to change notification settings - Fork 52
Expand file tree
/
Copy path.env.example
More file actions
146 lines (116 loc) · 5.2 KB
/
.env.example
File metadata and controls
146 lines (116 loc) · 5.2 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
# Noblocks Environment Variables
# Copy this file to .env.local and fill in your values
# See: docs/environment-variables.md for detailed info about each env. variable
# =============================================================================
# Core Application
# =============================================================================
# Aggregator API
NEXT_PUBLIC_AGGREGATOR_URL=https://api.paycrest.io/v1
# Authentication Services
NEXT_PUBLIC_PRIVY_APP_ID=
NEXT_PUBLIC_THIRDWEB_CLIENT_ID=
# =============================================================================
# Database & Authentication
# =============================================================================
# Supabase Database
# Get these from: Supabase Dashboard → Project Settings → API
SUPABASE_URL=https://your-project.supabase.co
# ⚠️ CRITICAL: Use the SERVICE ROLE key, NOT the anon/public key!
#
# Common mistake: Using the "anon public" key instead of "service_role" secret
# This will cause: "new row violates row-level security policy" errors
#
# How to get the correct key:
# 1. Go to Supabase Dashboard → Project Settings → API
# 2. Scroll to "Project API keys"
# 3. Copy the "service_role" secret key (NOT the "anon public" key)
# 4. The service_role key bypasses RLS policies (required for API operations)
#
# To verify you have the right key:
# - Decode it at jwt.io - should contain "role":"service_role"
# - Length: ~200+ characters (anon key is similar length, check role!)
SUPABASE_SERVICE_ROLE_KEY=
# Privy Authentication
PRIVY_APP_SECRET=
PRIVY_JWKS_URL=https://auth.privy.io/api/v1/apps/<your-privy-app-id>/jwks.json
PRIVY_ISSUER=privy.io
# =============================================================================
# Analytics
# =============================================================================
# Client-side Analytics
NEXT_PUBLIC_MIXPANEL_TOKEN=
NEXT_PUBLIC_HOTJAR_SITE_ID=
# Server-side Analytics
MIXPANEL_TOKEN=
MIXPANEL_PRIVACY_MODE=strict
MIXPANEL_INCLUDE_IP=false
MIXPANEL_INCLUDE_ERROR_STACKS=false
NEXT_PUBLIC_ENABLE_EMAIL_IN_ANALYTICS=false
# =============================================================================
# Security
# =============================================================================
# Internal API Security
# Generate with: openssl rand -hex 32
INTERNAL_API_KEY=
# =============================================================================
# Feature Flags
# =============================================================================
# Enable wallet context sync in middleware
ENABLE_WALLET_CONTEXT_SYNC=false
# =============================================================================
# External Services
# =============================================================================
# SEO
NEXT_PUBLIC_GOOGLE_VERIFICATION_CODE=
# Notice Banner
# See docs/notice-banner.md
NEXT_PUBLIC_NOTICE_BANNER_TEXT=
# Brevo Email Marketing
# Get from: Brevo Dashboard → Settings → API Keys
BREVO_API_KEY=
# List ID from: Brevo Dashboard → Contacts → Lists (numeric ID)
BREVO_LIST_ID=
BREVO_LIST_ID=
# Brevo Conversations (Chat Widget)
# Get from: Brevo Dashboard → Conversations → Settings
NEXT_PUBLIC_BREVO_CONVERSATIONS_ID=
NEXT_PUBLIC_BREVO_CONVERSATIONS_GROUP_ID=
# =============================================================================
# Campaign Management (BlockFest)
# =============================================================================
# BlockFest Campaign End Date
# Format: ISO 8601 with timezone (YYYY-MM-DDTHH:mm:ss±HH:mm)
# Example: 2025-10-11T23:59:00+01:00 (October 11th, 2025 at 11:59 PM UTC+1)
NEXT_PUBLIC_BLOCKFEST_END_DATE=2025-10-11T23:59:00+01:00
# BlockFest Cashback Wallet
# ⚠️ WARNING: These credentials control funds and must be kept secure
# - Never commit these values to version control
# - Use secure secret management in production (AWS Secrets Manager, Vault, etc.)
# - Rotate keys regularly
# - Restrict access to authorized personnel only
# - Private key must be in format: 0x followed by 64 hex characters (66 chars total)
CASHBACK_WALLET_ADDRESS=
CASHBACK_WALLET_PRIVATE_KEY=
# =============================================================================
# Starknet Configuration
# =============================================================================
# Starknet Network RPC
NEXT_PUBLIC_STARKNET_RPC_URL=https://starknet-mainnet.public.blastapi.io
# Ready Account Class Hash (Argent Ready Account)
NEXT_PUBLIC_STARKNET_READY_CLASSHASH=0x073414441639dcd11d1846f287650a00c60c416b9d3ba45d31c651672125b2c2
STARKNET_READY_CLASSHASH=0x073414441639dcd11d1846f287650a00c60c416b9d3ba45d31c651672125b2c2
# Paymaster Configuration (AVNU)
STARKNET_PAYMASTER_URL=https://mainnet.paymaster.avnu.fi
STARKNET_PAYMASTER_MODE=sponsored
STARKNET_PAYMASTER_API_KEY=
# Gas token address (required if PAYMASTER_MODE=default)
STARKNET_GAS_TOKEN_ADDRESS=
# =============================================================================
# Content Management (Sanity)
# =============================================================================
# Sanity Studio (server-side)
SANITY_STUDIO_DATASET=production
SANITY_STUDIO_PROJECT_ID=your_project_id_here
# Next.js App (client-side)
NEXT_PUBLIC_SANITY_DATASET=production
NEXT_PUBLIC_SANITY_PROJECT_ID=your_project_id_here