- src/seed.ts: idempotent seed script (admin, labels, SiteSettings, Navigation, TicketsConfig, homepage, sample blog/event) - src/app/(frontend)/loading.tsx: page skeleton loader with animate-pulse - next.config.ts: CSP + security headers (X-Frame-Options, Referrer-Policy, Permissions-Policy), localhost added to image remotePatterns - src/app/api/tickets/create/route.ts: rate limiting (10 req/min/IP) - src/app/api/tickets/webhook/route.ts: X-Webhook-Secret or ?secret query param verification - .env.example: EZY_WEBHOOK_SECRET, SEED_ADMIN_*, portal URLs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
64 lines
4.1 KiB
Text
64 lines
4.1 KiB
Text
# ═══════════════════════════════════════════════════════════════
|
||
# Shumiland — Environment Variables
|
||
# Скопіюйте цей файл в .env та заповніть значення
|
||
# ═══════════════════════════════════════════════════════════════
|
||
|
||
# ─── Database ────────────────────────────────────────────────
|
||
POSTGRES_USER=shumiland
|
||
POSTGRES_PASSWORD=змініть_на_сильний_пароль
|
||
POSTGRES_DB=shumiland
|
||
DATABASE_URL=postgresql://shumiland:змініть_на_сильний_пароль@localhost:5432/shumiland
|
||
|
||
# ─── Payload CMS ─────────────────────────────────────────────
|
||
PAYLOAD_SECRET=змініть_на_32_символьний_секрет
|
||
|
||
# ─── Site ────────────────────────────────────────────────────
|
||
NEXT_PUBLIC_SITE_URL=https://shumiland.com.ua
|
||
NODE_ENV=production
|
||
|
||
# ─── Оплата ezy.com.ua ───────────────────────────────────────
|
||
EZY_ACTIVITY_KEY=ваш_activity_key
|
||
EZY_PARTNER_KEY=ваш_partner_key
|
||
# Секрет для верифікації webhook від ezy.com.ua (опціонально, але рекомендовано)
|
||
EZY_WEBHOOK_SECRET=змініть_на_секрет
|
||
|
||
# ─── Twenty CRM ──────────────────────────────────────────────
|
||
TWENTY_API_URL=http://localhost:3003
|
||
TWENTY_API_KEY=ваш_twenty_api_key
|
||
TWENTY_ACCESS_TOKEN_SECRET=змініть_на_секрет
|
||
TWENTY_LOGIN_TOKEN_SECRET=змініть_на_секрет
|
||
TWENTY_REFRESH_TOKEN_SECRET=змініть_на_секрет
|
||
TWENTY_FILE_TOKEN_SECRET=змініть_на_секрет
|
||
TWENTY_APP_SECRET=змініть_на_секрет
|
||
|
||
# ─── Email (SMTP) ─────────────────────────────────────────────
|
||
SMTP_HOST=smtp.gmail.com
|
||
SMTP_PORT=587
|
||
SMTP_SECURE=false
|
||
SMTP_USER=ваш_email@gmail.com
|
||
SMTP_PASS=ваш_app_password
|
||
SMTP_FROM="Шуміленд <info@shumiland.com.ua>"
|
||
|
||
# ─── Analytics ────────────────────────────────────────────────
|
||
NEXT_PUBLIC_GTM_ID=GTM-XXXXXXX
|
||
NEXT_PUBLIC_GA4_ID=G-XXXXXXXXXX
|
||
|
||
# ─── Umami ────────────────────────────────────────────────────
|
||
NEXT_PUBLIC_UMAMI_WEBSITE_ID=ваш_website_id
|
||
NEXT_PUBLIC_UMAMI_URL=https://analytics.shumiland.com.ua
|
||
UMAMI_APP_SECRET=змініть_на_секрет
|
||
|
||
# ─── Binotel ──────────────────────────────────────────────────
|
||
NEXT_PUBLIC_BINOTEL_WIDGET_HASH=ваш_widget_hash
|
||
BINOTEL_API_KEY=ваш_binotel_api_key
|
||
BINOTEL_API_SECRET=ваш_binotel_api_secret
|
||
|
||
# ─── Seed ─────────────────────────────────────────────────────
|
||
# Використовується лише при запуску: pnpm seed
|
||
SEED_ADMIN_EMAIL=admin@shumiland.com.ua
|
||
SEED_ADMIN_PASSWORD=змініть_на_сильний_пароль
|
||
|
||
# ─── Портали ──────────────────────────────────────────────────
|
||
NEXT_PUBLIC_TWENTY_URL=http://localhost:3003
|
||
NEXT_PUBLIC_UMAMI_URL=http://localhost:3001
|
||
NEXT_PUBLIC_METABASE_URL=http://localhost:3002
|