insforge 1.2.10 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/.claude-plugin/marketplace.json +20 -20
  2. package/.dockerignore +60 -60
  3. package/.env.example +83 -77
  4. package/.github/ISSUE_TEMPLATE/bug_report.yml +36 -36
  5. package/.github/ISSUE_TEMPLATE/config.yml +11 -11
  6. package/.github/ISSUE_TEMPLATE/feature_request.yml +26 -26
  7. package/.github/PULL_REQUEST_TEMPLATE.md +7 -7
  8. package/.github/copilot-instructions.md +146 -146
  9. package/.github/workflows/build-image.yml +65 -65
  10. package/.github/workflows/ci-premerge-check.yml +23 -23
  11. package/.github/workflows/e2e.yml +63 -63
  12. package/.github/workflows/lint-and-format.yml +32 -32
  13. package/.prettierignore +64 -64
  14. package/CHANGELOG.md +44 -44
  15. package/CLAUDE_PLUGIN.md +104 -104
  16. package/CODE_OF_CONDUCT.md +128 -128
  17. package/CONTRIBUTING.md +125 -125
  18. package/Dockerfile +30 -30
  19. package/GITHUB_OAUTH_SETUP.md +49 -49
  20. package/GOOGLE_OAUTH_SETUP.md +148 -148
  21. package/LICENSE +201 -201
  22. package/README.md +182 -182
  23. package/assets/Dark.svg +23 -23
  24. package/auth/package.json +28 -28
  25. package/auth/src/lib/broadcastService.ts +117 -115
  26. package/auth/src/pages/SignInPage.tsx +60 -57
  27. package/auth/src/pages/SignUpPage.tsx +60 -57
  28. package/auth/tsconfig.json +32 -32
  29. package/auth/tsconfig.node.json +11 -11
  30. package/backend/package.json +78 -75
  31. package/backend/src/api/routes/ai/index.routes.ts +3 -3
  32. package/backend/src/api/routes/auth/index.routes.ts +667 -570
  33. package/backend/src/api/routes/auth/oauth.routes.ts +473 -448
  34. package/backend/src/api/routes/database/advance.routes.ts +37 -16
  35. package/backend/src/api/routes/database/index.routes.ts +78 -1
  36. package/backend/src/api/routes/database/records.routes.ts +10 -10
  37. package/backend/src/api/routes/database/tables.routes.ts +0 -14
  38. package/backend/src/api/routes/docs/index.routes.ts +75 -76
  39. package/backend/src/api/routes/email/index.routes.ts +35 -0
  40. package/backend/src/api/routes/functions/index.routes.ts +18 -12
  41. package/backend/src/api/routes/metadata/index.routes.ts +12 -0
  42. package/backend/src/api/routes/realtime/channels.routes.ts +81 -0
  43. package/backend/src/api/routes/realtime/index.routes.ts +12 -0
  44. package/backend/src/api/routes/realtime/messages.routes.ts +48 -0
  45. package/backend/src/api/routes/realtime/permissions.routes.ts +19 -0
  46. package/backend/src/api/routes/storage/index.routes.ts +18 -12
  47. package/backend/src/api/routes/usage/index.routes.ts +6 -4
  48. package/backend/src/infra/database/database.manager.ts +14 -1
  49. package/backend/src/infra/database/migrations/000_create-base-tables.sql +141 -141
  50. package/backend/src/infra/database/migrations/001_create-helper-functions.sql +40 -40
  51. package/backend/src/infra/database/migrations/002_rename-auth-tables.sql +29 -29
  52. package/backend/src/infra/database/migrations/003_create-users-table.sql +55 -55
  53. package/backend/src/infra/database/migrations/004_add-reload-postgrest-func.sql +23 -23
  54. package/backend/src/infra/database/migrations/005_enable-project-admin-modify-users.sql +29 -29
  55. package/backend/src/infra/database/migrations/006_modify-ai-usage-table.sql +24 -24
  56. package/backend/src/infra/database/migrations/007_drop-metadata-table.sql +1 -1
  57. package/backend/src/infra/database/migrations/008_add-system-tables.sql +76 -76
  58. package/backend/src/infra/database/migrations/009_add-function-secrets.sql +23 -23
  59. package/backend/src/infra/database/migrations/010_modify-ai-config-modalities.sql +93 -93
  60. package/backend/src/infra/database/migrations/011_refactor-secrets-table.sql +15 -15
  61. package/backend/src/infra/database/migrations/012_add-storage-uploaded-by.sql +7 -7
  62. package/backend/src/infra/database/migrations/013_create-auth-schema-functions.sql +44 -44
  63. package/backend/src/infra/database/migrations/014_add-updated-at-trigger-user-table.sql +7 -7
  64. package/backend/src/infra/database/migrations/015_create-auth-config-and-email-otp-tables.sql +59 -59
  65. package/backend/src/infra/database/migrations/016_update-auth-config-and-email-otp.sql +24 -24
  66. package/backend/src/infra/database/migrations/017_create-realtime-schema.sql +233 -0
  67. package/backend/src/infra/realtime/realtime.manager.ts +246 -0
  68. package/backend/src/infra/realtime/webhook-sender.ts +82 -0
  69. package/backend/src/infra/security/token.manager.ts +219 -125
  70. package/backend/src/infra/socket/socket.manager.ts +198 -64
  71. package/backend/src/providers/ai/openrouter.provider.ts +12 -9
  72. package/backend/src/providers/email/base.provider.ts +4 -7
  73. package/backend/src/providers/email/cloud.provider.ts +84 -0
  74. package/backend/src/providers/oauth/apple.provider.ts +266 -0
  75. package/backend/src/providers/oauth/index.ts +1 -0
  76. package/backend/src/server.ts +317 -284
  77. package/backend/src/services/ai/ai-model.service.ts +5 -5
  78. package/backend/src/services/ai/chat-completion.service.ts +4 -4
  79. package/backend/src/services/ai/image-generation.service.ts +3 -3
  80. package/backend/src/services/auth/auth.service.ts +14 -0
  81. package/backend/src/services/database/database-table.service.ts +0 -9
  82. package/backend/src/services/database/database.service.ts +127 -0
  83. package/backend/src/services/email/email.service.ts +5 -7
  84. package/backend/src/services/realtime/index.ts +3 -0
  85. package/backend/src/services/realtime/realtime-auth.service.ts +104 -0
  86. package/backend/src/services/realtime/realtime-channel.service.ts +237 -0
  87. package/backend/src/services/realtime/realtime-message.service.ts +260 -0
  88. package/backend/src/types/auth.ts +11 -0
  89. package/backend/src/types/realtime.ts +18 -0
  90. package/backend/src/types/socket.ts +7 -31
  91. package/backend/src/utils/cookies.ts +35 -0
  92. package/backend/src/utils/s3-config-loader.ts +64 -0
  93. package/backend/src/utils/seed.ts +301 -298
  94. package/backend/src/utils/sql-parser.ts +90 -0
  95. package/backend/tests/README.md +133 -133
  96. package/backend/tests/cleanup-all-test-data.sh +230 -230
  97. package/backend/tests/cloud/test-s3-multitenant.sh +131 -131
  98. package/backend/tests/local/comprehensive-curl-tests.sh +155 -155
  99. package/backend/tests/local/test-ai-config.sh +129 -129
  100. package/backend/tests/local/test-ai-usage.sh +80 -80
  101. package/backend/tests/local/test-auth-router.sh +143 -143
  102. package/backend/tests/local/test-database-router.sh +222 -222
  103. package/backend/tests/local/test-e2e.sh +240 -240
  104. package/backend/tests/local/test-fk-errors.sh +96 -96
  105. package/backend/tests/local/test-functions.sh +123 -123
  106. package/backend/tests/local/test-id-field.sh +200 -200
  107. package/backend/tests/local/test-logs.sh +132 -132
  108. package/backend/tests/local/test-public-bucket.sh +264 -264
  109. package/backend/tests/local/test-secrets.sh +249 -249
  110. package/backend/tests/local/test-serverless-functions.sh.disabled +325 -325
  111. package/backend/tests/local/test-traditional-rest.sh +208 -208
  112. package/backend/tests/manual/README.md +50 -50
  113. package/backend/tests/manual/create-large-table-simple.sql +10 -10
  114. package/backend/tests/manual/seed-large-table.sql +100 -100
  115. package/backend/tests/manual/setup-large-table-extras.sql +33 -33
  116. package/backend/tests/manual/test-bulk-upsert.sh +409 -409
  117. package/backend/tests/manual/test-database-advance.sh +296 -296
  118. package/backend/tests/manual/test-postgrest-stability.sh +191 -191
  119. package/backend/tests/manual/test-rawsql-export-import.sh +411 -411
  120. package/backend/tests/manual/test-rawsql-modes.sh +244 -244
  121. package/backend/tests/manual/test-universal-storage.sh +263 -263
  122. package/backend/tests/manual/test-users.sql +17 -17
  123. package/backend/tests/run-all-tests.sh +139 -139
  124. package/backend/tests/setup.ts +0 -0
  125. package/backend/tests/test-config.sh +338 -338
  126. package/backend/tests/unit/analyze-query.test.ts +697 -0
  127. package/backend/tsconfig.json +22 -22
  128. package/claude-plugin/.claude-plugin/plugin.json +24 -24
  129. package/claude-plugin/README.md +133 -133
  130. package/claude-plugin/skills/insforge-schema-patterns/SKILL.md +270 -270
  131. package/docker-compose.prod.yml +204 -200
  132. package/docker-compose.yml +232 -228
  133. package/docker-init/db/db-init.sql +97 -97
  134. package/docker-init/db/jwt.sql +5 -5
  135. package/docker-init/db/postgresql.conf +16 -16
  136. package/docker-init/logs/vector.yml +236 -236
  137. package/docs/README.md +44 -44
  138. package/docs/agent-docs/real-time.md +269 -0
  139. package/docs/changelog.mdx +119 -67
  140. package/docs/core-concepts/ai/architecture.mdx +372 -372
  141. package/docs/core-concepts/ai/sdk.mdx +213 -213
  142. package/docs/core-concepts/authentication/architecture.mdx +278 -278
  143. package/docs/core-concepts/authentication/sdk.mdx +414 -414
  144. package/docs/core-concepts/authentication/ui-components/customization.mdx +529 -529
  145. package/docs/core-concepts/authentication/ui-components/nextjs.mdx +221 -221
  146. package/docs/core-concepts/authentication/ui-components/react-router.mdx +184 -184
  147. package/docs/core-concepts/authentication/ui-components/react.mdx +129 -129
  148. package/docs/core-concepts/database/architecture.mdx +255 -255
  149. package/docs/core-concepts/database/sdk.mdx +382 -382
  150. package/docs/core-concepts/email/architecture.mdx +101 -0
  151. package/docs/core-concepts/email/sdk.mdx +53 -0
  152. package/docs/core-concepts/functions/architecture.mdx +105 -105
  153. package/docs/core-concepts/functions/sdk.mdx +184 -184
  154. package/docs/core-concepts/realtime/architecture.mdx +446 -0
  155. package/docs/core-concepts/realtime/sdk.mdx +409 -0
  156. package/docs/core-concepts/storage/architecture.mdx +243 -243
  157. package/docs/core-concepts/storage/sdk.mdx +253 -253
  158. package/docs/deployment/README.md +94 -94
  159. package/docs/deployment/deploy-to-aws-ec2.md +564 -564
  160. package/docs/deployment/deploy-to-azure-virtual-machines.md +312 -312
  161. package/docs/deployment/deploy-to-google-cloud-compute-engine.md +613 -613
  162. package/docs/deployment/deploy-to-render.md +441 -441
  163. package/docs/deprecated/insforge-auth-api.md +214 -214
  164. package/docs/deprecated/insforge-auth-sdk.md +99 -99
  165. package/docs/deprecated/insforge-db-api.md +358 -358
  166. package/docs/deprecated/insforge-db-sdk.md +139 -139
  167. package/docs/deprecated/insforge-debug-sdk.md +156 -156
  168. package/docs/deprecated/insforge-debug.md +64 -64
  169. package/docs/deprecated/insforge-instructions.md +123 -123
  170. package/docs/deprecated/insforge-project.md +117 -117
  171. package/docs/deprecated/insforge-storage-api.md +278 -278
  172. package/docs/deprecated/insforge-storage-sdk.md +158 -158
  173. package/docs/docs.json +232 -210
  174. package/docs/examples/framework-guides/nextjs.mdx +131 -131
  175. package/docs/examples/framework-guides/nuxt.mdx +165 -165
  176. package/docs/examples/framework-guides/react.mdx +165 -165
  177. package/docs/examples/framework-guides/svelte.mdx +153 -153
  178. package/docs/examples/framework-guides/vue.mdx +159 -159
  179. package/docs/examples/overview.mdx +67 -67
  180. package/docs/favicon.svg +19 -19
  181. package/docs/images/changelog/dec-2025/ai-integration.png +0 -0
  182. package/docs/images/changelog/dec-2025/ai-models.webp +0 -0
  183. package/docs/images/changelog/dec-2025/alipay-payment.webp +0 -0
  184. package/docs/images/changelog/dec-2025/apple-login.jpg +0 -0
  185. package/docs/images/changelog/dec-2025/mcp-installer.png +0 -0
  186. package/docs/images/changelog/dec-2025/realtime-module.jpg +0 -0
  187. package/docs/images/icons/ai.svg +4 -4
  188. package/docs/images/logos/nextjs.svg +4 -4
  189. package/docs/images/logos/nuxt.svg +4 -4
  190. package/docs/images/logos/react.svg +5 -5
  191. package/docs/images/logos/svelte.svg +4 -4
  192. package/docs/images/logos/vue.svg +5 -5
  193. package/docs/insforge-instructions-sdk.md +89 -88
  194. package/docs/introduction.mdx +45 -45
  195. package/docs/logo/dark.svg +22 -22
  196. package/docs/logo/light.svg +20 -20
  197. package/docs/partnership.mdx +651 -646
  198. package/docs/quickstart.mdx +82 -82
  199. package/docs/showcase.mdx +52 -52
  200. package/docs/snippets/sdk-installation.mdx +21 -21
  201. package/docs/snippets/service-icons.mdx +27 -27
  202. package/examples/oauth/frontend-oauth-example.html +250 -250
  203. package/examples/response-examples.md +443 -443
  204. package/frontend/components.json +17 -17
  205. package/frontend/package.json +69 -69
  206. package/frontend/src/assets/icons/checkbox_checked.svg +6 -6
  207. package/frontend/src/assets/icons/checkbox_undetermined.svg +6 -6
  208. package/frontend/src/assets/icons/checked.svg +3 -3
  209. package/frontend/src/assets/icons/connected.svg +3 -3
  210. package/frontend/src/assets/icons/error.svg +3 -3
  211. package/frontend/src/assets/icons/loader.svg +9 -9
  212. package/frontend/src/assets/icons/pencil.svg +4 -4
  213. package/frontend/src/assets/icons/refresh.svg +4 -4
  214. package/frontend/src/assets/icons/step_active.svg +3 -3
  215. package/frontend/src/assets/icons/step_inactive.svg +11 -11
  216. package/frontend/src/assets/icons/warning.svg +3 -3
  217. package/frontend/src/assets/logos/apple.svg +3 -3
  218. package/frontend/src/assets/logos/claude_code.svg +3 -3
  219. package/frontend/src/assets/logos/cline.svg +6 -6
  220. package/frontend/src/assets/logos/cursor.svg +20 -20
  221. package/frontend/src/assets/logos/discord.svg +8 -8
  222. package/frontend/src/assets/logos/facebook.svg +3 -3
  223. package/frontend/src/assets/logos/gemini.svg +19 -19
  224. package/frontend/src/assets/logos/github.svg +5 -5
  225. package/frontend/src/assets/logos/google.svg +13 -13
  226. package/frontend/src/assets/logos/grok.svg +10 -10
  227. package/frontend/src/assets/logos/insforge_dark.svg +15 -15
  228. package/frontend/src/assets/logos/insforge_light.svg +15 -15
  229. package/frontend/src/assets/logos/instagram.svg +1 -1
  230. package/frontend/src/assets/logos/linkedin.svg +3 -3
  231. package/frontend/src/assets/logos/openai.svg +10 -10
  232. package/frontend/src/assets/logos/roo_code.svg +9 -9
  233. package/frontend/src/assets/logos/spotify.svg +16 -16
  234. package/frontend/src/assets/logos/tiktok.svg +5 -5
  235. package/frontend/src/assets/logos/trae.svg +3 -3
  236. package/frontend/src/assets/logos/windsurf.svg +10 -10
  237. package/frontend/src/assets/logos/x.svg +3 -3
  238. package/frontend/src/components/layout/AppHeader.tsx +9 -10
  239. package/frontend/src/features/auth/components/OAuthConfigDialog.tsx +1 -0
  240. package/frontend/src/features/auth/components/UsersDataGrid.tsx +6 -0
  241. package/frontend/src/features/auth/helpers.tsx +8 -0
  242. package/frontend/src/features/auth/{page → pages}/UsersPage.tsx +0 -28
  243. package/frontend/src/features/database/components/SQLModal.tsx +75 -0
  244. package/frontend/src/features/database/components/TableForm.tsx +0 -4
  245. package/frontend/src/features/database/hooks/useDatabase.ts +66 -0
  246. package/frontend/src/features/database/hooks/useTables.ts +32 -28
  247. package/frontend/src/features/database/index.ts +1 -0
  248. package/frontend/src/features/database/{page → pages}/FunctionsPage.tsx +29 -37
  249. package/frontend/src/features/database/{page → pages}/IndexesPage.tsx +35 -47
  250. package/frontend/src/features/database/{page → pages}/PoliciesPage.tsx +43 -54
  251. package/frontend/src/features/database/{page → pages}/TablesPage.tsx +0 -42
  252. package/frontend/src/features/database/{page → pages}/TriggersPage.tsx +35 -47
  253. package/frontend/src/features/database/services/advance.service.ts +0 -26
  254. package/frontend/src/features/database/services/database.service.ts +55 -0
  255. package/frontend/src/features/database/services/table.service.ts +0 -6
  256. package/frontend/src/features/functions/{page → pages}/FunctionsPage.tsx +21 -44
  257. package/frontend/src/features/functions/{page → pages}/SecretsPage.tsx +11 -9
  258. package/frontend/src/features/logs/hooks/useMcpUsage.ts +13 -66
  259. package/frontend/src/features/realtime/components/ChannelRow.tsx +83 -0
  260. package/frontend/src/features/realtime/components/EditChannelModal.tsx +246 -0
  261. package/frontend/src/features/realtime/components/MessageRow.tsx +85 -0
  262. package/frontend/src/features/realtime/components/RealtimeEmptyState.tsx +30 -0
  263. package/frontend/src/features/realtime/hooks/useRealtime.ts +218 -0
  264. package/frontend/src/features/realtime/index.ts +11 -0
  265. package/frontend/src/features/realtime/pages/RealtimeChannelsPage.tsx +172 -0
  266. package/frontend/src/features/realtime/pages/RealtimeMessagesPage.tsx +211 -0
  267. package/frontend/src/features/realtime/pages/RealtimePermissionsPage.tsx +191 -0
  268. package/frontend/src/features/realtime/services/realtime.service.ts +107 -0
  269. package/frontend/src/features/storage/{page → pages}/StoragePage.tsx +1 -29
  270. package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +3 -3
  271. package/frontend/src/features/visualizer/{page → pages}/VisualizerPage.tsx +1 -35
  272. package/frontend/src/lib/contexts/SocketContext.tsx +119 -75
  273. package/frontend/src/lib/routing/AppRoutes.tsx +35 -20
  274. package/frontend/src/lib/utils/cloudMessaging.ts +1 -1
  275. package/frontend/src/lib/utils/menuItems.ts +24 -0
  276. package/frontend/src/lib/utils/utils.ts +14 -1
  277. package/frontend/tsconfig.json +25 -25
  278. package/frontend/tsconfig.node.json +9 -9
  279. package/functions/deno.json +24 -24
  280. package/functions/server.ts +315 -315
  281. package/i18n/README.ar.md +130 -130
  282. package/i18n/README.de.md +130 -130
  283. package/i18n/README.es.md +154 -154
  284. package/i18n/README.fr.md +134 -134
  285. package/i18n/README.hi.md +129 -129
  286. package/i18n/README.ja.md +174 -174
  287. package/i18n/README.ko.md +136 -136
  288. package/i18n/README.pt-BR.md +131 -131
  289. package/i18n/README.ru.md +129 -129
  290. package/i18n/README.zh-CN.md +133 -133
  291. package/openapi/ai.yaml +715 -715
  292. package/openapi/auth.yaml +1244 -1244
  293. package/openapi/email.yaml +158 -0
  294. package/openapi/functions.yaml +475 -475
  295. package/openapi/health.yaml +29 -29
  296. package/openapi/logs.yaml +223 -223
  297. package/openapi/metadata.yaml +177 -177
  298. package/openapi/realtime.yaml +699 -0
  299. package/openapi/records.yaml +381 -381
  300. package/openapi/secrets.yaml +370 -370
  301. package/openapi/storage.yaml +875 -875
  302. package/openapi/tables.yaml +463 -463
  303. package/package.json +97 -97
  304. package/shared-schemas/package.json +31 -31
  305. package/shared-schemas/src/ai.schema.ts +63 -59
  306. package/shared-schemas/src/auth-api.schema.ts +352 -339
  307. package/shared-schemas/src/auth.schema.ts +1 -1
  308. package/shared-schemas/src/database-api.schema.ts +32 -1
  309. package/shared-schemas/src/database.schema.ts +39 -0
  310. package/shared-schemas/src/docs.schema.ts +26 -0
  311. package/shared-schemas/src/email-api.schema.ts +30 -0
  312. package/shared-schemas/src/index.ts +4 -0
  313. package/shared-schemas/src/metadata.schema.ts +9 -0
  314. package/shared-schemas/src/realtime-api.schema.ts +111 -0
  315. package/shared-schemas/src/realtime.schema.ts +143 -0
  316. package/shared-schemas/tsconfig.json +21 -21
  317. package/tsconfig.json +7 -7
  318. package/zeabur/README.md +13 -13
  319. package/zeabur/template.yml +1032 -1032
  320. package/.cursor/rules/cursor-rules.mdc +0 -94
  321. package/frontend/src/features/database/hooks/useFullMetadata.ts +0 -18
  322. package/test-gemini.sh +0 -35
  323. package/test-usage-admin.sh +0 -57
  324. package/test-usage.sh +0 -50
  325. /package/frontend/src/features/ai/{page → pages}/AIPage.tsx +0 -0
  326. /package/frontend/src/features/auth/{page → pages}/AuthMethodsPage.tsx +0 -0
  327. /package/frontend/src/features/auth/{page → pages}/ConfigurationPage.tsx +0 -0
  328. /package/frontend/src/features/dashboard/{page → pages}/DashboardPage.tsx +0 -0
  329. /package/frontend/src/features/database/{page → pages}/SQLEditorPage.tsx +0 -0
  330. /package/frontend/src/features/database/{page → pages}/TemplatesPage.tsx +0 -0
  331. /package/frontend/src/features/login/{page → pages}/CloudLoginPage.tsx +0 -0
  332. /package/frontend/src/features/login/{page → pages}/LoginPage.tsx +0 -0
  333. /package/frontend/src/features/logs/{page → pages}/AuditsPage.tsx +0 -0
  334. /package/frontend/src/features/logs/{page → pages}/LogsPage.tsx +0 -0
  335. /package/frontend/src/features/logs/{page → pages}/MCPLogsPage.tsx +0 -0
@@ -1,441 +1,441 @@
1
- # Deploy InsForge to Render
2
-
3
- This guide walks you through deploying InsForge on Render, a modern cloud platform with managed services and automatic scaling.
4
-
5
- ## 📋 Prerequisites
6
-
7
- - Render account (free tier available at [render.com](https://render.com))
8
- - GitHub account (for repository connection)
9
- - Basic knowledge of environment variables
10
- - Domain name (optional, for custom domain)
11
-
12
- ## 🎯 Why Render?
13
-
14
- - **Managed PostgreSQL**: Fully managed database with automatic backups
15
- - **Auto-deploy**: Automatic deployments from Git commits
16
- - **Free SSL**: Automatic HTTPS certificates
17
- - **Simple Scaling**: Easy horizontal and vertical scaling
18
- - **Free Tier**: Suitable for testing and small projects
19
-
20
- ## 🚀 Deployment Steps
21
-
22
- ### 1. Fork InsForge Repository
23
-
24
- 1. Visit [https://github.com/insforge/insforge](https://github.com/insforge/insforge)
25
- 2. Click **Fork** to create your copy
26
- 3. This allows Render to connect to your repository
27
-
28
- ### 2. Set Up Render Account
29
-
30
- 1. Visit [https://render.com](https://render.com) and sign up
31
- 2. Connect GitHub account
32
- 3. Authorize Render to access repositories
33
- 4. Select your forked InsForge repository
34
-
35
- ### 3. Create PostgreSQL Database
36
-
37
- #### 3.1 Create Database
38
-
39
- 1. From Render Dashboard: **New** → **PostgreSQL**
40
- 2. Configure:
41
- - **Name**: `insforge-db`
42
- - **Database**: `insforge`
43
- - **User**: `insforge_user`
44
- - **Region**: Select closest to users
45
- - **Version**: PostgreSQL 15+
46
- - **Plan**:
47
- - Free: Testing (90 days)
48
- - Starter ($7/month): Small production
49
- - Standard ($20/month): Production
50
-
51
- 3. Click **Create Database**
52
- 4. Save connection details (internal & external URLs)
53
-
54
- #### 3.2 Initialize Database
55
-
56
- Connect and run initialization scripts:
57
-
58
- ```bash
59
- # Download init scripts
60
- curl -O https://raw.githubusercontent.com/insforge/insforge/main/docker-init/db/db-init.sql
61
- curl -O https://raw.githubusercontent.com/insforge/insforge/main/docker-init/db/jwt.sql
62
-
63
- # Connect to database
64
- psql <your-external-database-url>
65
-
66
- # Run initialization
67
- \i db-init.sql
68
- \i jwt.sql
69
- \q
70
- ```
71
-
72
- ### 4. Deploy Backend Service
73
-
74
- #### 4.1 Create Web Service
75
-
76
- 1. **New** → **Web Service**
77
- 2. Connect repository
78
- 3. Configure:
79
- - **Name**: `insforge-backend`
80
- - **Region**: Same as database
81
- - **Branch**: `main`
82
- - **Runtime**: `Docker`
83
- - **Dockerfile Path**: `Dockerfile`
84
- - **Instance Type**: Starter ($7/month) minimum
85
-
86
- **Start Command:**
87
- ```bash
88
- sh -c "cd backend && npm run migrate:up && cd .. && npm run start"
89
- ```
90
-
91
- #### 4.2 Environment Variables
92
-
93
- Add these critical variables:
94
-
95
- ```env
96
- # Server
97
- PORT=7130
98
-
99
- # Database (use internal URL)
100
- DATABASE_URL=${{insforge-db.DATABASE_URL}}
101
- POSTGRES_HOST=<from-database>
102
- POSTGRES_PORT=5432
103
- POSTGRES_DB=insforge
104
- POSTGRES_USER=insforge_user
105
- POSTGRES_PASSWORD=<from-database>
106
-
107
- # Security (Generate with openssl rand -base64 32)
108
- JWT_SECRET=<strong-secret-32+chars>
109
- ENCRYPTION_KEY=<strong-secret-24-chars>
110
-
111
- # Admin
112
- ADMIN_EMAIL=admin@example.com
113
- ADMIN_PASSWORD=<strong-password>
114
-
115
- # APIs (update after deployment)
116
- API_BASE_URL=https://insforge-backend.onrender.com
117
- VITE_API_BASE_URL=https://insforge-backend.onrender.com
118
-
119
- # Services
120
- POSTGREST_BASE_URL=http://insforge-postgrest:3000
121
- DENO_RUNTIME_URL=http://insforge-deno:7133
122
-
123
- # Storage
124
- STORAGE_DIR=/var/data/storage
125
- LOGS_DIR=/var/data/logs
126
-
127
- # Optional: OAuth, S3, etc.
128
- ```
129
-
130
- **Generate Secrets:**
131
- ```bash
132
- openssl rand -base64 32 # JWT_SECRET
133
- openssl rand -base64 24 # ENCRYPTION_KEY
134
- ```
135
-
136
- ### 5. Deploy PostgREST
137
-
138
- 1. **New** → **Web Service**
139
- 2. **Deploy from existing image**
140
- 3. Configure:
141
- - **Name**: `insforge-postgrest`
142
- - **Image**: `postgrest/postgrest:v12.2.12`
143
- - **Plan**: Starter ($7/month)
144
-
145
- **Environment Variables:**
146
- ```env
147
- PGRST_DB_URI=${{insforge-db.DATABASE_URL}}
148
- PGRST_OPENAPI_SERVER_PROXY_URI=https://insforge-backend.onrender.com
149
- PGRST_DB_SCHEMA=public
150
- PGRST_DB_ANON_ROLE=anon
151
- PGRST_JWT_SECRET=<same-as-backend>
152
- PGRST_DB_CHANNEL_ENABLED=true
153
- PGRST_DB_CHANNEL=pgrst
154
- ```
155
-
156
- ### 6. Deploy Deno Runtime
157
-
158
- #### 6.1 Create Deno Dockerfile
159
-
160
- Create `Dockerfile.deno` in repository root:
161
-
162
- ```dockerfile
163
- FROM denoland/deno:alpine-2.0.6
164
- WORKDIR /app
165
- COPY functions /app/functions
166
- RUN deno cache functions/server.ts
167
- EXPOSE 7133
168
- ENV PORT=7133
169
- CMD ["deno", "run", "--allow-net", "--allow-env", "--allow-read=./functions/worker-template.js", "functions/server.ts"]
170
- ```
171
-
172
- #### 6.2 Create Service
173
-
174
- 1. **New** → **Web Service**
175
- 2. Configure:
176
- - **Name**: `insforge-deno`
177
- - **Runtime**: `Docker`
178
- - **Dockerfile Path**: `Dockerfile.deno`
179
- - **Plan**: Starter ($7/month)
180
-
181
- **Environment Variables:**
182
- ```env
183
- PORT=7133
184
- DENO_ENV=production
185
- POSTGRES_HOST=<from-database>
186
- POSTGRES_PORT=5432
187
- POSTGRES_DB=insforge
188
- POSTGRES_USER=insforge_user
189
- POSTGRES_PASSWORD=<from-database>
190
- POSTGREST_BASE_URL=http://insforge-postgrest:3000
191
- ENCRYPTION_KEY=<same-as-backend>
192
- JWT_SECRET=<same-as-backend>
193
- WORKER_TIMEOUT_MS=30000
194
- ```
195
-
196
- ### 7. Deploy Frontend
197
-
198
- #### Option A: Static Site (Recommended - Free)
199
-
200
- 1. **New** → **Static Site**
201
- 2. Configure:
202
- - **Name**: `insforge-frontend`
203
- - **Root Directory**: `frontend`
204
- - **Build Command**: `npm install && npm run build`
205
- - **Publish Directory**: `dist`
206
-
207
- **Environment:**
208
- ```env
209
- VITE_API_BASE_URL=https://insforge-backend.onrender.com
210
- ```
211
-
212
- #### Option B: Web Service
213
-
214
- 1. **New** → **Web Service**
215
- 2. Configure:
216
- - **Root Directory**: `frontend`
217
- - **Build Command**: `npm install && npm run build`
218
- - **Start Command**: `npm run preview -- --host 0.0.0.0 --port $PORT`
219
-
220
- ### 8. Update Service URLs
221
-
222
- After all services deploy, update backend environment:
223
-
224
- ```env
225
- API_BASE_URL=https://insforge-backend.onrender.com
226
- POSTGREST_BASE_URL=https://insforge-postgrest.onrender.com
227
- DENO_RUNTIME_URL=https://insforge-deno.onrender.com
228
- ```
229
-
230
- Save to trigger redeploy.
231
-
232
- ### 9. Access Your Instance
233
-
234
- **Service URLs:**
235
- - Backend: `https://insforge-backend.onrender.com`
236
- - Frontend: `https://insforge-frontend.onrender.com`
237
- - PostgREST: `https://insforge-postgrest.onrender.com`
238
- - Deno: `https://insforge-deno.onrender.com`
239
-
240
- **Test Backend:**
241
- ```bash
242
- curl https://insforge-backend.onrender.com/api/health
243
- ```
244
-
245
- **Access Dashboard:**
246
- ```
247
- https://insforge-frontend.onrender.com
248
- ```
249
-
250
- ### 10. Custom Domain (Optional)
251
-
252
- 1. In each service: **Settings** → **Custom Domains**
253
- 2. Add domains:
254
- - Backend: `api.yourdomain.com`
255
- - Frontend: `app.yourdomain.com`
256
-
257
- 3. Add CNAME records in DNS:
258
- ```
259
- api.yourdomain.com → insforge-backend.onrender.com
260
- app.yourdomain.com → insforge-frontend.onrender.com
261
- ```
262
-
263
- 4. Update environment variables with custom URLs
264
- 5. SSL certificates provisioned automatically
265
-
266
- ## 🔧 Management
267
-
268
- ### View Logs
269
- 1. Service dashboard → **Logs** tab
270
- 2. Real-time logs with search/filter
271
-
272
- ### Manual Deploy
273
- Service dashboard → **Manual Deploy** → **Deploy latest commit**
274
-
275
- ### Auto-Deploy
276
- Push to GitHub → Automatic deployment
277
-
278
- ### Update InsForge
279
- ```bash
280
- git pull upstream main
281
- git push origin main # Triggers auto-deploy
282
- ```
283
-
284
- ### Restart Services
285
- **Manual Deploy** → **Clear build cache & deploy**
286
-
287
- ### Scale Services
288
- - **Vertical**: Settings → Instance Type
289
- - **Horizontal**: Adjust instances slider (Standard+ plans)
290
-
291
- ### Backup Database
292
- ```bash
293
- # Manual backup
294
- pg_dump <external-url> > backup_$(date +%Y%m%d).sql
295
-
296
- # Automatic backups on paid plans
297
- ```
298
-
299
- ## 🐛 Troubleshooting
300
-
301
- ### Build Failures
302
- - Check build logs in failed deploy
303
- - Clear build cache and retry
304
- - Verify Dockerfile paths
305
-
306
- ### Service Won't Start
307
- - Check logs for errors
308
- - Verify PORT environment variable
309
- - Test database connection
310
- - Confirm all environment variables set
311
-
312
- ### Database Connection Errors
313
- - Use internal URL for same-region services
314
- - Verify credentials
315
- - Check database status (Available)
316
-
317
- ### Free Tier Spin Down
318
- - Services sleep after 15 min inactivity
319
- - Expect 30s+ cold starts
320
- - Upgrade to paid for always-on
321
-
322
- ### Environment Variable Issues
323
- ```javascript
324
- // Add debugging
325
- console.log('Env check:', {
326
- DATABASE_URL: !!process.env.DATABASE_URL,
327
- JWT_SECRET: !!process.env.JWT_SECRET
328
- });
329
- ```
330
-
331
- ## 📊 Cost Estimation
332
-
333
- **Starter Setup ($28/month):**
334
- - PostgreSQL: $7
335
- - Backend: $7
336
- - PostgREST: $7
337
- - Deno: $7
338
- - Frontend: Free (static)
339
-
340
- **Free Tier (Testing):**
341
- - All services: Free
342
- - Limitations: Spin down, 90-day DB limit
343
-
344
- **Production ($69/month):**
345
- - PostgreSQL Standard: $20
346
- - Backend Standard: $25
347
- - PostgREST Starter: $7
348
- - Deno Starter: $7
349
- - Redis: $10
350
- - Frontend: Free
351
-
352
- ## 🔒 Security Best Practices
353
-
354
- 1. **Strong Secrets**: Use `openssl rand -base64 32`
355
- 2. **Environment Variables**: Never commit secrets
356
- 3. **Database**: Use managed PostgreSQL, enable backups
357
- 4. **HTTPS**: Automatic SSL everywhere
358
- 5. **Updates**: Keep dependencies current
359
- 6. **Access Control**: Implement proper authentication
360
- 7. **Monitoring**: Set up alerts for failures
361
- 8. **Rate Limiting**: Implement in application
362
-
363
- ## 📋 Blueprint Deployment (Advanced)
364
-
365
- Create `render.yaml` for infrastructure-as-code:
366
-
367
- ```yaml
368
- services:
369
- - type: pserv
370
- name: insforge-db
371
- plan: starter
372
- databaseName: insforge
373
-
374
- - type: web
375
- name: insforge-backend
376
- env: docker
377
- dockerfilePath: ./Dockerfile
378
- plan: starter
379
- healthCheckPath: /api/health
380
- envVars:
381
- - key: DATABASE_URL
382
- fromDatabase:
383
- name: insforge-db
384
- property: connectionString
385
-
386
- - type: web
387
- name: insforge-postgrest
388
- env: docker
389
- image:
390
- url: postgrest/postgrest:v12.2.12
391
-
392
- - type: web
393
- name: insforge-frontend
394
- env: static
395
- buildCommand: cd frontend && npm install && npm run build
396
- staticPublishPath: ./frontend/dist
397
- ```
398
-
399
- Deploy: **New** → **Blueprint** → Connect repository
400
-
401
- ## ✅ Post-Deployment Checklist
402
-
403
- - [ ] All services running
404
- - [ ] Database connections working
405
- - [ ] Backend `/api/health` responds
406
- - [ ] Frontend loads correctly
407
- - [ ] Admin login works
408
- - [ ] SSL certificates active
409
- - [ ] Health checks passing
410
- - [ ] Logs accessible
411
- - [ ] Backups configured (paid)
412
- - [ ] Monitoring set up
413
- - [ ] Custom domains configured (if applicable)
414
-
415
- ## 🆘 Support
416
-
417
- **Render Resources:**
418
- - [Render Docs](https://render.com/docs)
419
- - [Render Community](https://community.render.com)
420
- - [Render Status](https://status.render.com)
421
-
422
- **InsForge Resources:**
423
- - [Documentation](https://docs.insforge.dev)
424
- - [GitHub](https://github.com/insforge/insforge)
425
- - [Discord](https://discord.com/invite/MPxwj5xVvW)
426
- - Email: info@insforge.dev
427
-
428
- ## 🎉 Next Steps
429
-
430
- **Congratulations!** Your InsForge instance is running on Render.
431
-
432
- 1. **Connect AI Agent**: Follow dashboard "Connect" guide
433
- 2. **Configure OAuth**: Set up Google/GitHub/Discord
434
- 3. **Add S3 Storage**: Configure AWS S3 for file uploads
435
- 4. **Set Up Monitoring**: Configure alerts and notifications
436
- 5. **Test Functions**: Deploy serverless functions via Deno
437
- 6. **Build Your App**: Start using InsForge with AI agents!
438
-
439
- ---
440
-
441
- For other deployment options, see [deployment guides](./README.md).
1
+ # Deploy InsForge to Render
2
+
3
+ This guide walks you through deploying InsForge on Render, a modern cloud platform with managed services and automatic scaling.
4
+
5
+ ## 📋 Prerequisites
6
+
7
+ - Render account (free tier available at [render.com](https://render.com))
8
+ - GitHub account (for repository connection)
9
+ - Basic knowledge of environment variables
10
+ - Domain name (optional, for custom domain)
11
+
12
+ ## 🎯 Why Render?
13
+
14
+ - **Managed PostgreSQL**: Fully managed database with automatic backups
15
+ - **Auto-deploy**: Automatic deployments from Git commits
16
+ - **Free SSL**: Automatic HTTPS certificates
17
+ - **Simple Scaling**: Easy horizontal and vertical scaling
18
+ - **Free Tier**: Suitable for testing and small projects
19
+
20
+ ## 🚀 Deployment Steps
21
+
22
+ ### 1. Fork InsForge Repository
23
+
24
+ 1. Visit [https://github.com/insforge/insforge](https://github.com/insforge/insforge)
25
+ 2. Click **Fork** to create your copy
26
+ 3. This allows Render to connect to your repository
27
+
28
+ ### 2. Set Up Render Account
29
+
30
+ 1. Visit [https://render.com](https://render.com) and sign up
31
+ 2. Connect GitHub account
32
+ 3. Authorize Render to access repositories
33
+ 4. Select your forked InsForge repository
34
+
35
+ ### 3. Create PostgreSQL Database
36
+
37
+ #### 3.1 Create Database
38
+
39
+ 1. From Render Dashboard: **New** → **PostgreSQL**
40
+ 2. Configure:
41
+ - **Name**: `insforge-db`
42
+ - **Database**: `insforge`
43
+ - **User**: `insforge_user`
44
+ - **Region**: Select closest to users
45
+ - **Version**: PostgreSQL 15+
46
+ - **Plan**:
47
+ - Free: Testing (90 days)
48
+ - Starter ($7/month): Small production
49
+ - Standard ($20/month): Production
50
+
51
+ 3. Click **Create Database**
52
+ 4. Save connection details (internal & external URLs)
53
+
54
+ #### 3.2 Initialize Database
55
+
56
+ Connect and run initialization scripts:
57
+
58
+ ```bash
59
+ # Download init scripts
60
+ curl -O https://raw.githubusercontent.com/insforge/insforge/main/docker-init/db/db-init.sql
61
+ curl -O https://raw.githubusercontent.com/insforge/insforge/main/docker-init/db/jwt.sql
62
+
63
+ # Connect to database
64
+ psql <your-external-database-url>
65
+
66
+ # Run initialization
67
+ \i db-init.sql
68
+ \i jwt.sql
69
+ \q
70
+ ```
71
+
72
+ ### 4. Deploy Backend Service
73
+
74
+ #### 4.1 Create Web Service
75
+
76
+ 1. **New** → **Web Service**
77
+ 2. Connect repository
78
+ 3. Configure:
79
+ - **Name**: `insforge-backend`
80
+ - **Region**: Same as database
81
+ - **Branch**: `main`
82
+ - **Runtime**: `Docker`
83
+ - **Dockerfile Path**: `Dockerfile`
84
+ - **Instance Type**: Starter ($7/month) minimum
85
+
86
+ **Start Command:**
87
+ ```bash
88
+ sh -c "cd backend && npm run migrate:up && cd .. && npm run start"
89
+ ```
90
+
91
+ #### 4.2 Environment Variables
92
+
93
+ Add these critical variables:
94
+
95
+ ```env
96
+ # Server
97
+ PORT=7130
98
+
99
+ # Database (use internal URL)
100
+ DATABASE_URL=${{insforge-db.DATABASE_URL}}
101
+ POSTGRES_HOST=<from-database>
102
+ POSTGRES_PORT=5432
103
+ POSTGRES_DB=insforge
104
+ POSTGRES_USER=insforge_user
105
+ POSTGRES_PASSWORD=<from-database>
106
+
107
+ # Security (Generate with openssl rand -base64 32)
108
+ JWT_SECRET=<strong-secret-32+chars>
109
+ ENCRYPTION_KEY=<strong-secret-24-chars>
110
+
111
+ # Admin
112
+ ADMIN_EMAIL=admin@example.com
113
+ ADMIN_PASSWORD=<strong-password>
114
+
115
+ # APIs (update after deployment)
116
+ API_BASE_URL=https://insforge-backend.onrender.com
117
+ VITE_API_BASE_URL=https://insforge-backend.onrender.com
118
+
119
+ # Services
120
+ POSTGREST_BASE_URL=http://insforge-postgrest:3000
121
+ DENO_RUNTIME_URL=http://insforge-deno:7133
122
+
123
+ # Storage
124
+ STORAGE_DIR=/var/data/storage
125
+ LOGS_DIR=/var/data/logs
126
+
127
+ # Optional: OAuth, S3, etc.
128
+ ```
129
+
130
+ **Generate Secrets:**
131
+ ```bash
132
+ openssl rand -base64 32 # JWT_SECRET
133
+ openssl rand -base64 24 # ENCRYPTION_KEY
134
+ ```
135
+
136
+ ### 5. Deploy PostgREST
137
+
138
+ 1. **New** → **Web Service**
139
+ 2. **Deploy from existing image**
140
+ 3. Configure:
141
+ - **Name**: `insforge-postgrest`
142
+ - **Image**: `postgrest/postgrest:v12.2.12`
143
+ - **Plan**: Starter ($7/month)
144
+
145
+ **Environment Variables:**
146
+ ```env
147
+ PGRST_DB_URI=${{insforge-db.DATABASE_URL}}
148
+ PGRST_OPENAPI_SERVER_PROXY_URI=https://insforge-backend.onrender.com
149
+ PGRST_DB_SCHEMA=public
150
+ PGRST_DB_ANON_ROLE=anon
151
+ PGRST_JWT_SECRET=<same-as-backend>
152
+ PGRST_DB_CHANNEL_ENABLED=true
153
+ PGRST_DB_CHANNEL=pgrst
154
+ ```
155
+
156
+ ### 6. Deploy Deno Runtime
157
+
158
+ #### 6.1 Create Deno Dockerfile
159
+
160
+ Create `Dockerfile.deno` in repository root:
161
+
162
+ ```dockerfile
163
+ FROM denoland/deno:alpine-2.0.6
164
+ WORKDIR /app
165
+ COPY functions /app/functions
166
+ RUN deno cache functions/server.ts
167
+ EXPOSE 7133
168
+ ENV PORT=7133
169
+ CMD ["deno", "run", "--allow-net", "--allow-env", "--allow-read=./functions/worker-template.js", "functions/server.ts"]
170
+ ```
171
+
172
+ #### 6.2 Create Service
173
+
174
+ 1. **New** → **Web Service**
175
+ 2. Configure:
176
+ - **Name**: `insforge-deno`
177
+ - **Runtime**: `Docker`
178
+ - **Dockerfile Path**: `Dockerfile.deno`
179
+ - **Plan**: Starter ($7/month)
180
+
181
+ **Environment Variables:**
182
+ ```env
183
+ PORT=7133
184
+ DENO_ENV=production
185
+ POSTGRES_HOST=<from-database>
186
+ POSTGRES_PORT=5432
187
+ POSTGRES_DB=insforge
188
+ POSTGRES_USER=insforge_user
189
+ POSTGRES_PASSWORD=<from-database>
190
+ POSTGREST_BASE_URL=http://insforge-postgrest:3000
191
+ ENCRYPTION_KEY=<same-as-backend>
192
+ JWT_SECRET=<same-as-backend>
193
+ WORKER_TIMEOUT_MS=30000
194
+ ```
195
+
196
+ ### 7. Deploy Frontend
197
+
198
+ #### Option A: Static Site (Recommended - Free)
199
+
200
+ 1. **New** → **Static Site**
201
+ 2. Configure:
202
+ - **Name**: `insforge-frontend`
203
+ - **Root Directory**: `frontend`
204
+ - **Build Command**: `npm install && npm run build`
205
+ - **Publish Directory**: `dist`
206
+
207
+ **Environment:**
208
+ ```env
209
+ VITE_API_BASE_URL=https://insforge-backend.onrender.com
210
+ ```
211
+
212
+ #### Option B: Web Service
213
+
214
+ 1. **New** → **Web Service**
215
+ 2. Configure:
216
+ - **Root Directory**: `frontend`
217
+ - **Build Command**: `npm install && npm run build`
218
+ - **Start Command**: `npm run preview -- --host 0.0.0.0 --port $PORT`
219
+
220
+ ### 8. Update Service URLs
221
+
222
+ After all services deploy, update backend environment:
223
+
224
+ ```env
225
+ API_BASE_URL=https://insforge-backend.onrender.com
226
+ POSTGREST_BASE_URL=https://insforge-postgrest.onrender.com
227
+ DENO_RUNTIME_URL=https://insforge-deno.onrender.com
228
+ ```
229
+
230
+ Save to trigger redeploy.
231
+
232
+ ### 9. Access Your Instance
233
+
234
+ **Service URLs:**
235
+ - Backend: `https://insforge-backend.onrender.com`
236
+ - Frontend: `https://insforge-frontend.onrender.com`
237
+ - PostgREST: `https://insforge-postgrest.onrender.com`
238
+ - Deno: `https://insforge-deno.onrender.com`
239
+
240
+ **Test Backend:**
241
+ ```bash
242
+ curl https://insforge-backend.onrender.com/api/health
243
+ ```
244
+
245
+ **Access Dashboard:**
246
+ ```
247
+ https://insforge-frontend.onrender.com
248
+ ```
249
+
250
+ ### 10. Custom Domain (Optional)
251
+
252
+ 1. In each service: **Settings** → **Custom Domains**
253
+ 2. Add domains:
254
+ - Backend: `api.yourdomain.com`
255
+ - Frontend: `app.yourdomain.com`
256
+
257
+ 3. Add CNAME records in DNS:
258
+ ```
259
+ api.yourdomain.com → insforge-backend.onrender.com
260
+ app.yourdomain.com → insforge-frontend.onrender.com
261
+ ```
262
+
263
+ 4. Update environment variables with custom URLs
264
+ 5. SSL certificates provisioned automatically
265
+
266
+ ## 🔧 Management
267
+
268
+ ### View Logs
269
+ 1. Service dashboard → **Logs** tab
270
+ 2. Real-time logs with search/filter
271
+
272
+ ### Manual Deploy
273
+ Service dashboard → **Manual Deploy** → **Deploy latest commit**
274
+
275
+ ### Auto-Deploy
276
+ Push to GitHub → Automatic deployment
277
+
278
+ ### Update InsForge
279
+ ```bash
280
+ git pull upstream main
281
+ git push origin main # Triggers auto-deploy
282
+ ```
283
+
284
+ ### Restart Services
285
+ **Manual Deploy** → **Clear build cache & deploy**
286
+
287
+ ### Scale Services
288
+ - **Vertical**: Settings → Instance Type
289
+ - **Horizontal**: Adjust instances slider (Standard+ plans)
290
+
291
+ ### Backup Database
292
+ ```bash
293
+ # Manual backup
294
+ pg_dump <external-url> > backup_$(date +%Y%m%d).sql
295
+
296
+ # Automatic backups on paid plans
297
+ ```
298
+
299
+ ## 🐛 Troubleshooting
300
+
301
+ ### Build Failures
302
+ - Check build logs in failed deploy
303
+ - Clear build cache and retry
304
+ - Verify Dockerfile paths
305
+
306
+ ### Service Won't Start
307
+ - Check logs for errors
308
+ - Verify PORT environment variable
309
+ - Test database connection
310
+ - Confirm all environment variables set
311
+
312
+ ### Database Connection Errors
313
+ - Use internal URL for same-region services
314
+ - Verify credentials
315
+ - Check database status (Available)
316
+
317
+ ### Free Tier Spin Down
318
+ - Services sleep after 15 min inactivity
319
+ - Expect 30s+ cold starts
320
+ - Upgrade to paid for always-on
321
+
322
+ ### Environment Variable Issues
323
+ ```javascript
324
+ // Add debugging
325
+ console.log('Env check:', {
326
+ DATABASE_URL: !!process.env.DATABASE_URL,
327
+ JWT_SECRET: !!process.env.JWT_SECRET
328
+ });
329
+ ```
330
+
331
+ ## 📊 Cost Estimation
332
+
333
+ **Starter Setup ($28/month):**
334
+ - PostgreSQL: $7
335
+ - Backend: $7
336
+ - PostgREST: $7
337
+ - Deno: $7
338
+ - Frontend: Free (static)
339
+
340
+ **Free Tier (Testing):**
341
+ - All services: Free
342
+ - Limitations: Spin down, 90-day DB limit
343
+
344
+ **Production ($69/month):**
345
+ - PostgreSQL Standard: $20
346
+ - Backend Standard: $25
347
+ - PostgREST Starter: $7
348
+ - Deno Starter: $7
349
+ - Redis: $10
350
+ - Frontend: Free
351
+
352
+ ## 🔒 Security Best Practices
353
+
354
+ 1. **Strong Secrets**: Use `openssl rand -base64 32`
355
+ 2. **Environment Variables**: Never commit secrets
356
+ 3. **Database**: Use managed PostgreSQL, enable backups
357
+ 4. **HTTPS**: Automatic SSL everywhere
358
+ 5. **Updates**: Keep dependencies current
359
+ 6. **Access Control**: Implement proper authentication
360
+ 7. **Monitoring**: Set up alerts for failures
361
+ 8. **Rate Limiting**: Implement in application
362
+
363
+ ## 📋 Blueprint Deployment (Advanced)
364
+
365
+ Create `render.yaml` for infrastructure-as-code:
366
+
367
+ ```yaml
368
+ services:
369
+ - type: pserv
370
+ name: insforge-db
371
+ plan: starter
372
+ databaseName: insforge
373
+
374
+ - type: web
375
+ name: insforge-backend
376
+ env: docker
377
+ dockerfilePath: ./Dockerfile
378
+ plan: starter
379
+ healthCheckPath: /api/health
380
+ envVars:
381
+ - key: DATABASE_URL
382
+ fromDatabase:
383
+ name: insforge-db
384
+ property: connectionString
385
+
386
+ - type: web
387
+ name: insforge-postgrest
388
+ env: docker
389
+ image:
390
+ url: postgrest/postgrest:v12.2.12
391
+
392
+ - type: web
393
+ name: insforge-frontend
394
+ env: static
395
+ buildCommand: cd frontend && npm install && npm run build
396
+ staticPublishPath: ./frontend/dist
397
+ ```
398
+
399
+ Deploy: **New** → **Blueprint** → Connect repository
400
+
401
+ ## ✅ Post-Deployment Checklist
402
+
403
+ - [ ] All services running
404
+ - [ ] Database connections working
405
+ - [ ] Backend `/api/health` responds
406
+ - [ ] Frontend loads correctly
407
+ - [ ] Admin login works
408
+ - [ ] SSL certificates active
409
+ - [ ] Health checks passing
410
+ - [ ] Logs accessible
411
+ - [ ] Backups configured (paid)
412
+ - [ ] Monitoring set up
413
+ - [ ] Custom domains configured (if applicable)
414
+
415
+ ## 🆘 Support
416
+
417
+ **Render Resources:**
418
+ - [Render Docs](https://render.com/docs)
419
+ - [Render Community](https://community.render.com)
420
+ - [Render Status](https://status.render.com)
421
+
422
+ **InsForge Resources:**
423
+ - [Documentation](https://docs.insforge.dev)
424
+ - [GitHub](https://github.com/insforge/insforge)
425
+ - [Discord](https://discord.com/invite/MPxwj5xVvW)
426
+ - Email: info@insforge.dev
427
+
428
+ ## 🎉 Next Steps
429
+
430
+ **Congratulations!** Your InsForge instance is running on Render.
431
+
432
+ 1. **Connect AI Agent**: Follow dashboard "Connect" guide
433
+ 2. **Configure OAuth**: Set up Google/GitHub/Discord
434
+ 3. **Add S3 Storage**: Configure AWS S3 for file uploads
435
+ 4. **Set Up Monitoring**: Configure alerts and notifications
436
+ 5. **Test Functions**: Deploy serverless functions via Deno
437
+ 6. **Build Your App**: Start using InsForge with AI agents!
438
+
439
+ ---
440
+
441
+ For other deployment options, see [deployment guides](./README.md).