-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrender.yaml
More file actions
122 lines (117 loc) · 3.48 KB
/
render.yaml
File metadata and controls
122 lines (117 loc) · 3.48 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
# Render Blueprint for Footnote Application
# https://render.com/docs/blueprint-spec
#
# IMPORTANT: After deploying, enable the pgvector extension on your database:
# 1. Go to your database in Render Dashboard
# 2. Go to the "Info" tab and click "Connect" via psql or external tool
# 3. Run: CREATE EXTENSION IF NOT EXISTS vector;
services:
# Redis - Message broker for Celery
- type: redis
name: footnote-redis
plan: starter
ipAllowList: []
# Frontend - Static React Application
- type: web
name: footnote-web
runtime: static
buildCommand: cd frontend && npm install && npm run build
staticPublishPath: frontend/dist
pullRequestPreviewsEnabled: true
domains:
- app.footnote.one
headers:
- path: /*
name: X-Frame-Options
value: DENY
routes:
- type: rewrite
source: /*
destination: /index.html
envVars:
- key: VITE_API_URL
value: https://api.footnote.one
# Backend - FastAPI Web Service
- type: web
name: footnote-api
runtime: python
plan: starter
buildCommand: pip install uv && cd backend && uv sync
startCommand: cd backend && uv run uvicorn main:app --host 0.0.0.0 --port $PORT
healthCheckPath: /api/health
preDeployCommand: cd backend && uv run bin/migrate
domains:
- api.footnote.one
envVars:
- key: DATABASE_URL
fromDatabase:
name: footnote-db
property: connectionString
- key: REDIS_URL
fromService:
type: redis
name: footnote-redis
property: connectionString
- key: GOOGLE_CLIENT_ID
sync: false
- key: GOOGLE_CLIENT_SECRET
sync: false
- key: GOOGLE_REDIRECT_URI
value: https://api.footnote.one/api/auth/google/callback
- key: FIREWORKS_API_KEY
sync: false
- key: ANTHROPIC_API_KEY
sync: false
- key: MISTRAL_API_KEY
sync: false
- key: SECRET_KEY
generateValue: true
- key: FRONTEND_URL
value: https://app.footnote.one
- key: CORS_ORIGINS
value: '["https://app.footnote.one"]'
- key: COOKIE_DOMAIN
value: .footnote.one
- key: POSTHOG_API_KEY
sync: false
- key: POSTHOG_HOST
value: https://us.i.posthog.com
- key: POSTHOG_ENABLED
value: "true"
# Celery Worker - Background Indexing Jobs
- type: worker
name: footnote-celery-worker
runtime: python
plan: starter
buildCommand: pip install uv && cd backend && uv sync
startCommand: cd backend && uv run celery -A app.celery_app worker --loglevel=info --concurrency=14 --pool=threads -Q celery,indexing --without-gossip --without-mingle
envVars:
- key: DATABASE_URL
fromDatabase:
name: footnote-db
property: connectionString
- key: REDIS_URL
fromService:
type: redis
name: footnote-redis
property: connectionString
- key: GOOGLE_CLIENT_ID
sync: false
- key: GOOGLE_CLIENT_SECRET
sync: false
- key: FIREWORKS_API_KEY
sync: false
- key: ANTHROPIC_API_KEY
sync: false
- key: MISTRAL_API_KEY
sync: false
- key: POSTHOG_API_KEY
sync: false
- key: POSTHOG_HOST
value: https://us.i.posthog.com
- key: POSTHOG_ENABLED
value: "true"
databases:
- name: footnote-db
plan: basic-256mb # Options: free, basic-256mb, basic-1gb, basic-4gb, pro-4gb, etc.
ipAllowList: []