-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathrender.yaml
More file actions
79 lines (78 loc) · 2.88 KB
/
Copy pathrender.yaml
File metadata and controls
79 lines (78 loc) · 2.88 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
# Render Blueprint — Comflex Backend
# Deploy: push this repo to GitHub → Render → "New" → "Blueprint"
# (Render reads this render.yaml automatically)
#
# Free tier notes:
# - The free instance sleeps after 15 min of inactivity. Set up an
# UptimeRobot (uptimerobot.com, free) HTTP monitor on
# https://<your-app>.onrender.com/api/health with a 5-minute interval
# to keep it awake 24/7. See DEPLOY.md.
# - Render's filesystem is EPHEMERAL (/tmp). That is why every file upload
# is pushed to Cloudinary — set the three CLOUDINARY_* vars below.
services:
- type: web
name: comflex-backend
runtime: node
rootDir: backend
plan: free
buildCommand: npm install && npx prisma generate && npx prisma db push
startCommand: npm start
healthCheckPath: /api/health
autoDeploy: true
envVars:
- key: NODE_ENV
value: production
# MongoDB — create a FREE cluster at https://www.mongodb.com/atlas
# then paste the connection string (with your user/password) here.
- key: DATABASE_URL
sync: false
# Auth secrets — generate with: node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"
- key: JWT_ACCESS_SECRET
sync: false
- key: JWT_REFRESH_SECRET
sync: false
# Seed admin (first-run setup wizard account)
- key: SEED_ADMIN_EMAIL
sync: false
- key: SEED_ADMIN_PASSWORD
sync: false
- key: SEED_ADMIN_DISPLAY_NAME
sync: false
# Google OAuth (same client id as Vercel's VITE_GOOGLE_CLIENT_ID)
- key: GOOGLE_CLIENT_ID
sync: false
# CORS — your Vercel frontend URL, e.g. https://comflex.vercel.app
- key: FRONTEND_URL
sync: false
# Cloudinary (free) — https://cloudinary.com → Dashboard
# REQUIRED: without this, uploads land on Render's /tmp and get deleted.
- key: CLOUDINARY_CLOUD_NAME
sync: false
- key: CLOUDINARY_API_KEY
sync: false
- key: CLOUDINARY_API_SECRET
sync: false
# Email: HTTPS REST API (Port 443 — works on Render Free Tier)
# For Brevo REST API: EMAIL_PROVIDER=brevo, EMAIL_API_KEY=xkeysib-...
# For Resend REST API: EMAIL_PROVIDER=resend, EMAIL_API_KEY=re_...
# For SMTP: EMAIL_PROVIDER=smtp (blocked on Render Free Tier; works on paid plans)
- key: EMAIL_PROVIDER
sync: false
- key: EMAIL_API_KEY
sync: false
- key: EMAIL_FROM
sync: false
- key: SMTP_HOST
sync: false
- key: SMTP_PORT
sync: false
- key: SMTP_USER
sync: false
- key: SMTP_PASS
sync: false
# Gemini — AI chatbot (free key from https://aistudio.google.com/apikey)
- key: GEMINI_API_KEY
sync: false
# Optional — EVM wallet that receives crypto credit purchases (Web3 store)
- key: TREASURY_ADDRESS
sync: false