insforge 1.2.10 → 1.4.8

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 (506) 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 +46 -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 +30 -28
  25. package/auth/src/lib/broadcastService.ts +4 -4
  26. package/auth/src/lib/insforge.ts +8 -0
  27. package/auth/src/main.tsx +2 -4
  28. package/auth/src/pages/SignInPage.tsx +5 -2
  29. package/auth/src/pages/SignUpPage.tsx +5 -2
  30. package/auth/src/pages/VerifyEmailPage.tsx +18 -0
  31. package/auth/tsconfig.json +33 -32
  32. package/auth/tsconfig.node.json +11 -11
  33. package/backend/package.json +82 -75
  34. package/backend/src/api/middlewares/rate-limiters.ts +127 -127
  35. package/backend/src/api/routes/ai/index.routes.ts +475 -468
  36. package/backend/src/api/routes/auth/index.routes.ts +720 -570
  37. package/backend/src/api/routes/auth/oauth.routes.ts +478 -448
  38. package/backend/src/api/routes/database/advance.routes.ts +37 -16
  39. package/backend/src/api/routes/database/index.routes.ts +80 -1
  40. package/backend/src/api/routes/database/records.routes.ts +48 -184
  41. package/backend/src/api/routes/database/rpc.routes.ts +69 -0
  42. package/backend/src/api/routes/database/tables.routes.ts +0 -14
  43. package/backend/src/api/routes/deployments/index.routes.ts +192 -0
  44. package/backend/src/api/routes/docs/index.routes.ts +76 -76
  45. package/backend/src/api/routes/email/index.routes.ts +35 -0
  46. package/backend/src/api/routes/functions/index.routes.ts +21 -15
  47. package/backend/src/api/routes/metadata/index.routes.ts +38 -0
  48. package/backend/src/api/routes/realtime/channels.routes.ts +81 -0
  49. package/backend/src/api/routes/realtime/index.routes.ts +12 -0
  50. package/backend/src/api/routes/realtime/messages.routes.ts +48 -0
  51. package/backend/src/api/routes/realtime/permissions.routes.ts +19 -0
  52. package/backend/src/api/routes/storage/index.routes.ts +18 -12
  53. package/backend/src/api/routes/usage/index.routes.ts +6 -4
  54. package/backend/src/api/routes/webhooks/index.routes.ts +109 -0
  55. package/backend/src/infra/database/database.manager.ts +14 -11
  56. package/backend/src/infra/database/migrations/000_create-base-tables.sql +141 -141
  57. package/backend/src/infra/database/migrations/001_create-helper-functions.sql +40 -40
  58. package/backend/src/infra/database/migrations/002_rename-auth-tables.sql +29 -29
  59. package/backend/src/infra/database/migrations/003_create-users-table.sql +55 -55
  60. package/backend/src/infra/database/migrations/004_add-reload-postgrest-func.sql +23 -23
  61. package/backend/src/infra/database/migrations/005_enable-project-admin-modify-users.sql +29 -29
  62. package/backend/src/infra/database/migrations/006_modify-ai-usage-table.sql +24 -24
  63. package/backend/src/infra/database/migrations/007_drop-metadata-table.sql +1 -1
  64. package/backend/src/infra/database/migrations/008_add-system-tables.sql +76 -76
  65. package/backend/src/infra/database/migrations/009_add-function-secrets.sql +23 -23
  66. package/backend/src/infra/database/migrations/010_modify-ai-config-modalities.sql +93 -93
  67. package/backend/src/infra/database/migrations/011_refactor-secrets-table.sql +15 -15
  68. package/backend/src/infra/database/migrations/012_add-storage-uploaded-by.sql +7 -7
  69. package/backend/src/infra/database/migrations/013_create-auth-schema-functions.sql +44 -44
  70. package/backend/src/infra/database/migrations/014_add-updated-at-trigger-user-table.sql +7 -7
  71. package/backend/src/infra/database/migrations/015_create-auth-config-and-email-otp-tables.sql +59 -59
  72. package/backend/src/infra/database/migrations/016_update-auth-config-and-email-otp.sql +24 -24
  73. package/backend/src/infra/database/migrations/017_create-realtime-schema.sql +233 -0
  74. package/backend/src/infra/database/migrations/018_schema-rework.sql +441 -0
  75. package/backend/src/infra/database/migrations/019_create-deployments-table.sql +36 -0
  76. package/backend/src/infra/database/migrations/020_add-audio-modality.sql +11 -0
  77. package/backend/src/infra/database/migrations/bootstrap/bootstrap-migrations.js +103 -0
  78. package/backend/src/infra/realtime/realtime.manager.ts +246 -0
  79. package/backend/src/infra/realtime/webhook-sender.ts +82 -0
  80. package/backend/src/infra/security/token.manager.ts +216 -125
  81. package/backend/src/infra/socket/socket.manager.ts +198 -64
  82. package/backend/src/providers/ai/openrouter.provider.ts +24 -12
  83. package/backend/src/providers/database/base.provider.ts +39 -0
  84. package/backend/src/providers/database/cloud.provider.ts +159 -0
  85. package/backend/src/providers/deployments/vercel.provider.ts +516 -0
  86. package/backend/src/providers/email/base.provider.ts +4 -7
  87. package/backend/src/providers/email/cloud.provider.ts +84 -0
  88. package/backend/src/providers/oauth/apple.provider.ts +266 -0
  89. package/backend/src/providers/oauth/index.ts +1 -0
  90. package/backend/src/server.ts +329 -284
  91. package/backend/src/services/ai/ai-config.service.ts +6 -6
  92. package/backend/src/services/ai/ai-model.service.ts +60 -60
  93. package/backend/src/services/ai/ai-usage.service.ts +7 -7
  94. package/backend/src/services/ai/chat-completion.service.ts +415 -220
  95. package/backend/src/services/ai/helpers.ts +64 -64
  96. package/backend/src/services/ai/image-generation.service.ts +3 -3
  97. package/backend/src/services/ai/index.ts +13 -13
  98. package/backend/src/services/auth/auth-config.service.ts +4 -4
  99. package/backend/src/services/auth/auth-otp.service.ts +6 -6
  100. package/backend/src/services/auth/auth.service.ts +148 -74
  101. package/backend/src/services/auth/index.ts +4 -4
  102. package/backend/src/services/auth/oauth-config.service.ts +12 -12
  103. package/backend/src/services/database/database-advance.service.ts +19 -55
  104. package/backend/src/services/database/database-table.service.ts +38 -94
  105. package/backend/src/services/database/database.service.ts +127 -0
  106. package/backend/src/services/database/postgrest-proxy.service.ts +165 -0
  107. package/backend/src/services/deployments/deployment.service.ts +693 -0
  108. package/backend/src/services/email/email.service.ts +5 -7
  109. package/backend/src/services/functions/function.service.ts +61 -41
  110. package/backend/src/services/logs/audit.service.ts +10 -10
  111. package/backend/src/services/realtime/index.ts +3 -0
  112. package/backend/src/services/realtime/realtime-auth.service.ts +104 -0
  113. package/backend/src/services/realtime/realtime-channel.service.ts +237 -0
  114. package/backend/src/services/realtime/realtime-message.service.ts +260 -0
  115. package/backend/src/services/secrets/secret.service.ts +101 -27
  116. package/backend/src/services/storage/storage.service.ts +30 -30
  117. package/backend/src/services/usage/usage.service.ts +6 -6
  118. package/backend/src/types/ai.ts +8 -0
  119. package/backend/src/types/auth.ts +16 -1
  120. package/backend/src/types/database.ts +2 -0
  121. package/backend/src/types/deployments.ts +33 -0
  122. package/backend/src/types/realtime.ts +18 -0
  123. package/backend/src/types/socket.ts +7 -31
  124. package/backend/src/types/storage.ts +1 -1
  125. package/backend/src/types/webhooks.ts +45 -0
  126. package/backend/src/utils/cookies.ts +34 -0
  127. package/backend/src/utils/environment.ts +0 -14
  128. package/backend/src/utils/s3-config-loader.ts +64 -0
  129. package/backend/src/utils/seed.ts +79 -43
  130. package/backend/src/utils/sql-parser.ts +216 -0
  131. package/backend/src/utils/utils.ts +114 -114
  132. package/backend/src/utils/validations.ts +10 -10
  133. package/backend/tests/README.md +133 -133
  134. package/backend/tests/cleanup-all-test-data.sh +230 -230
  135. package/backend/tests/cloud/test-s3-multitenant.sh +131 -131
  136. package/backend/tests/local/comprehensive-curl-tests.sh +155 -155
  137. package/backend/tests/local/test-ai-config.sh +129 -129
  138. package/backend/tests/local/test-ai-usage.sh +80 -80
  139. package/backend/tests/local/test-auth-router.sh +143 -143
  140. package/backend/tests/local/test-database-router.sh +222 -222
  141. package/backend/tests/local/test-e2e.sh +240 -240
  142. package/backend/tests/local/test-fk-errors.sh +96 -96
  143. package/backend/tests/local/test-functions.sh +123 -123
  144. package/backend/tests/local/test-id-field.sh +200 -200
  145. package/backend/tests/local/test-logs.sh +132 -132
  146. package/backend/tests/local/test-public-bucket.sh +264 -264
  147. package/backend/tests/local/test-rpc.sh +141 -0
  148. package/backend/tests/local/test-secrets.sh +249 -249
  149. package/backend/tests/local/test-serverless-functions.sh.disabled +325 -325
  150. package/backend/tests/local/test-traditional-rest.sh +208 -208
  151. package/backend/tests/manual/README.md +50 -50
  152. package/backend/tests/manual/create-large-table-simple.sql +10 -10
  153. package/backend/tests/manual/seed-large-table.sql +100 -100
  154. package/backend/tests/manual/setup-large-table-extras.sql +33 -33
  155. package/backend/tests/manual/test-ai-model-plugins.sh +258 -0
  156. package/backend/tests/manual/test-bulk-upsert.sh +409 -409
  157. package/backend/tests/manual/test-database-advance.sh +296 -296
  158. package/backend/tests/manual/test-postgrest-stability.sh +191 -191
  159. package/backend/tests/manual/test-rawsql-export-import.sh +411 -411
  160. package/backend/tests/manual/test-rawsql-modes.sh +244 -244
  161. package/backend/tests/manual/test-universal-storage.sh +263 -263
  162. package/backend/tests/manual/test-users.sql +17 -17
  163. package/backend/tests/run-all-tests.sh +139 -139
  164. package/backend/tests/setup.ts +0 -0
  165. package/backend/tests/test-config.sh +338 -338
  166. package/backend/tests/unit/analyze-query.test.ts +697 -0
  167. package/backend/tests/unit/database-advance.test.ts +326 -0
  168. package/backend/tests/unit/helpers.test.ts +2 -2
  169. package/backend/tsconfig.json +22 -22
  170. package/claude-plugin/.claude-plugin/plugin.json +24 -24
  171. package/claude-plugin/README.md +133 -133
  172. package/claude-plugin/skills/insforge-schema-patterns/SKILL.md +273 -270
  173. package/docker-compose.prod.yml +204 -200
  174. package/docker-compose.yml +232 -228
  175. package/docker-init/db/db-init.sql +97 -97
  176. package/docker-init/db/jwt.sql +5 -5
  177. package/docker-init/db/postgresql.conf +16 -16
  178. package/docker-init/logs/vector.yml +236 -236
  179. package/docs/README.md +44 -44
  180. package/docs/agent-docs/deployment.md +79 -0
  181. package/docs/agent-docs/real-time.md +269 -0
  182. package/docs/changelog.mdx +212 -67
  183. package/docs/core-concepts/ai/architecture.mdx +350 -372
  184. package/docs/core-concepts/ai/sdk.mdx +238 -213
  185. package/docs/core-concepts/authentication/architecture.mdx +276 -278
  186. package/docs/core-concepts/authentication/sdk.mdx +710 -414
  187. package/docs/core-concepts/authentication/ui-components/customization.mdx +733 -529
  188. package/docs/core-concepts/authentication/ui-components/nextjs.mdx +247 -221
  189. package/docs/core-concepts/authentication/ui-components/react-router.mdx +183 -184
  190. package/docs/core-concepts/authentication/ui-components/react.mdx +136 -129
  191. package/docs/core-concepts/database/architecture.mdx +292 -255
  192. package/docs/core-concepts/database/pgvector.mdx +138 -0
  193. package/docs/core-concepts/database/sdk.mdx +382 -382
  194. package/docs/core-concepts/deployments/architecture.mdx +152 -0
  195. package/docs/core-concepts/email/architecture.mdx +103 -0
  196. package/docs/core-concepts/email/sdk.mdx +53 -0
  197. package/docs/core-concepts/functions/architecture.mdx +105 -105
  198. package/docs/core-concepts/functions/sdk.mdx +183 -184
  199. package/docs/core-concepts/realtime/architecture.mdx +446 -0
  200. package/docs/core-concepts/realtime/sdk.mdx +409 -0
  201. package/docs/core-concepts/storage/architecture.mdx +243 -243
  202. package/docs/core-concepts/storage/sdk.mdx +253 -253
  203. package/docs/deployment/README.md +94 -94
  204. package/docs/deployment/deploy-to-aws-ec2.md +564 -564
  205. package/docs/deployment/deploy-to-azure-virtual-machines.md +312 -312
  206. package/docs/deployment/deploy-to-google-cloud-compute-engine.md +613 -613
  207. package/docs/deployment/deploy-to-render.md +441 -441
  208. package/docs/deprecated/insforge-auth-api.md +214 -214
  209. package/docs/deprecated/insforge-auth-sdk.md +99 -99
  210. package/docs/deprecated/insforge-db-api.md +358 -358
  211. package/docs/deprecated/insforge-db-sdk.md +139 -139
  212. package/docs/deprecated/insforge-debug-sdk.md +156 -156
  213. package/docs/deprecated/insforge-debug.md +64 -64
  214. package/docs/deprecated/insforge-instructions.md +123 -123
  215. package/docs/deprecated/insforge-project.md +117 -117
  216. package/docs/deprecated/insforge-storage-api.md +278 -278
  217. package/docs/deprecated/insforge-storage-sdk.md +158 -158
  218. package/docs/docs.json +240 -210
  219. package/docs/examples/framework-guides/nextjs.mdx +131 -131
  220. package/docs/examples/framework-guides/nuxt.mdx +165 -165
  221. package/docs/examples/framework-guides/react.mdx +165 -165
  222. package/docs/examples/framework-guides/svelte.mdx +153 -153
  223. package/docs/examples/framework-guides/vue.mdx +159 -159
  224. package/docs/examples/overview.mdx +67 -67
  225. package/docs/favicon.png +0 -0
  226. package/docs/favicon.svg +4 -19
  227. package/docs/images/changelog/dec-2025/ai-integration.png +0 -0
  228. package/docs/images/changelog/dec-2025/ai-models.webp +0 -0
  229. package/docs/images/changelog/dec-2025/alipay-payment.webp +0 -0
  230. package/docs/images/changelog/dec-2025/apple-login.jpg +0 -0
  231. package/docs/images/changelog/dec-2025/apple-oauth.mp4 +0 -0
  232. package/docs/images/changelog/dec-2025/mcp-installer.png +0 -0
  233. package/docs/images/changelog/dec-2025/moreModels.png +0 -0
  234. package/docs/images/changelog/dec-2025/multi-region.webp +0 -0
  235. package/docs/images/changelog/dec-2025/postgres-connection.webp +0 -0
  236. package/docs/images/changelog/dec-2025/realtime-module.jpg +0 -0
  237. package/docs/images/changelog/dec-2025/realtime2.png +0 -0
  238. package/docs/images/icons/ai.svg +4 -4
  239. package/docs/images/logos/nextjs.svg +4 -4
  240. package/docs/images/logos/nuxt.svg +4 -4
  241. package/docs/images/logos/react.svg +5 -5
  242. package/docs/images/logos/svelte.svg +4 -4
  243. package/docs/images/logos/vue.svg +5 -5
  244. package/docs/images/mcp-setup/CC-MCP-1.mp4 +0 -0
  245. package/docs/images/mcp-setup/CC-MCP-2.mp4 +0 -0
  246. package/docs/images/mcp-setup/Cursor-MCP-1.mp4 +0 -0
  247. package/docs/images/mcp-setup/Cursor-MCP-2.mp4 +0 -0
  248. package/docs/images/mcp-setup/Cursor-MCP-3.mp4 +0 -0
  249. package/docs/images/mcp-setup/claude-code-connect.png +0 -0
  250. package/docs/images/mcp-setup/cline-1.png +0 -0
  251. package/docs/images/mcp-setup/cline-2.png +0 -0
  252. package/docs/images/mcp-setup/cline-3.png +0 -0
  253. package/docs/images/mcp-setup/connect-project.png +0 -0
  254. package/docs/images/mcp-setup/copilot-1.png +0 -0
  255. package/docs/images/mcp-setup/copilot-2.png +0 -0
  256. package/docs/images/mcp-setup/copilot-3.png +0 -0
  257. package/docs/images/mcp-setup/mcp-json-1.png +0 -0
  258. package/docs/images/mcp-setup/mcp-json-2.png +0 -0
  259. package/docs/images/mcp-setup/qoder-1.png +0 -0
  260. package/docs/images/mcp-setup/qoder-2.png +0 -0
  261. package/docs/images/mcp-setup/roocode-1.png +0 -0
  262. package/docs/images/mcp-setup/roocode-2.png +0 -0
  263. package/docs/images/mcp-setup/trae-1.png +0 -0
  264. package/docs/images/mcp-setup/trae-2.png +0 -0
  265. package/docs/images/mcp-setup/trae-3.png +0 -0
  266. package/docs/images/mcp-setup/trae-4.png +0 -0
  267. package/docs/images/mcp-setup/trae-5.png +0 -0
  268. package/docs/images/mcp-setup/windsurf-1.png +0 -0
  269. package/docs/images/mcp-setup/windsurf-2.png +0 -0
  270. package/docs/insforge-instructions-sdk.md +93 -88
  271. package/docs/introduction.mdx +46 -45
  272. package/docs/logo/dark.svg +22 -22
  273. package/docs/logo/light.svg +20 -20
  274. package/docs/mcp-setup.mdx +332 -0
  275. package/docs/oauth-server.mdx +563 -0
  276. package/docs/partnership.mdx +720 -646
  277. package/docs/quickstart.mdx +82 -82
  278. package/docs/showcase.mdx +52 -52
  279. package/docs/snippets/sdk-installation.mdx +21 -21
  280. package/docs/snippets/service-icons.mdx +27 -27
  281. package/docs/vscode-extension.mdx +74 -0
  282. package/eslint.config.js +1 -0
  283. package/examples/oauth/frontend-oauth-example.html +250 -250
  284. package/examples/response-examples.md +443 -443
  285. package/frontend/components.json +17 -17
  286. package/frontend/package.json +69 -69
  287. package/frontend/src/App.tsx +8 -3
  288. package/frontend/src/assets/icons/checkbox_checked.svg +6 -6
  289. package/frontend/src/assets/icons/checkbox_undetermined.svg +6 -6
  290. package/frontend/src/assets/icons/checked.svg +3 -3
  291. package/frontend/src/assets/icons/connected.svg +3 -3
  292. package/frontend/src/assets/icons/error.svg +3 -3
  293. package/frontend/src/assets/icons/loader.svg +9 -9
  294. package/frontend/src/assets/icons/pencil.svg +4 -4
  295. package/frontend/src/assets/icons/refresh.svg +4 -4
  296. package/frontend/src/assets/icons/step_active.svg +3 -3
  297. package/frontend/src/assets/icons/step_inactive.svg +11 -11
  298. package/frontend/src/assets/icons/warning.svg +3 -3
  299. package/frontend/src/assets/logos/antigravity.svg +1 -0
  300. package/frontend/src/assets/logos/apple.svg +3 -3
  301. package/frontend/src/assets/logos/claude_code.svg +3 -3
  302. package/frontend/src/assets/logos/cline.svg +6 -6
  303. package/frontend/src/assets/logos/copilot.svg +10 -0
  304. package/frontend/src/assets/logos/cursor.svg +20 -20
  305. package/frontend/src/assets/logos/deepseek.svg +139 -0
  306. package/frontend/src/assets/logos/discord.svg +8 -8
  307. package/frontend/src/assets/logos/facebook.svg +3 -3
  308. package/frontend/src/assets/logos/gemini.svg +19 -19
  309. package/frontend/src/assets/logos/github.svg +5 -5
  310. package/frontend/src/assets/logos/google.svg +13 -13
  311. package/frontend/src/assets/logos/grok.svg +10 -10
  312. package/frontend/src/assets/logos/insforge_dark.svg +15 -15
  313. package/frontend/src/assets/logos/insforge_light.svg +15 -15
  314. package/frontend/src/assets/logos/instagram.svg +1 -1
  315. package/frontend/src/assets/logos/kiro.svg +9 -0
  316. package/frontend/src/assets/logos/linkedin.svg +3 -3
  317. package/frontend/src/assets/logos/openai.svg +10 -10
  318. package/frontend/src/assets/logos/qoder.svg +4 -0
  319. package/frontend/src/assets/logos/qwen.svg +15 -0
  320. package/frontend/src/assets/logos/roo_code.svg +9 -9
  321. package/frontend/src/assets/logos/spotify.svg +16 -16
  322. package/frontend/src/assets/logos/tiktok.svg +5 -5
  323. package/frontend/src/assets/logos/trae.svg +3 -3
  324. package/frontend/src/assets/logos/windsurf.svg +10 -10
  325. package/frontend/src/assets/logos/x.svg +3 -3
  326. package/frontend/src/components/CodeBlock.tsx +2 -2
  327. package/frontend/src/components/ConnectCTA.tsx +3 -2
  328. package/frontend/src/components/datagrid/DataGrid.tsx +90 -62
  329. package/frontend/src/components/datagrid/datagridTypes.tsx +2 -1
  330. package/frontend/src/components/datagrid/index.ts +1 -1
  331. package/frontend/src/components/index.ts +0 -1
  332. package/frontend/src/components/layout/AppHeader.tsx +13 -37
  333. package/frontend/src/components/layout/AppSidebar.tsx +85 -100
  334. package/frontend/src/components/layout/Layout.tsx +34 -32
  335. package/frontend/src/components/layout/PrimaryMenu.tsx +12 -4
  336. package/frontend/src/components/radix/Select.tsx +151 -151
  337. package/frontend/src/features/ai/components/AIConfigCard.tsx +200 -200
  338. package/frontend/src/features/ai/components/AIEmptyState.tsx +23 -23
  339. package/frontend/src/features/ai/components/ModalityFilterSidebar.tsx +102 -101
  340. package/frontend/src/features/ai/components/ModelSelectionDialog.tsx +135 -135
  341. package/frontend/src/features/ai/components/ModelSelectionGrid.tsx +51 -51
  342. package/frontend/src/features/ai/components/SystemPromptDialog.tsx +118 -118
  343. package/frontend/src/features/ai/components/index.ts +6 -6
  344. package/frontend/src/features/ai/helpers.ts +147 -141
  345. package/frontend/src/features/ai/{page → pages}/AIPage.tsx +166 -166
  346. package/frontend/src/features/auth/components/AuthPreview.tsx +96 -96
  347. package/frontend/src/features/auth/components/OAuthConfigDialog.tsx +1 -0
  348. package/frontend/src/features/auth/components/UsersDataGrid.tsx +61 -31
  349. package/frontend/src/features/auth/components/index.ts +5 -5
  350. package/frontend/src/features/auth/helpers.tsx +8 -0
  351. package/frontend/src/features/auth/{page → pages}/AuthMethodsPage.tsx +275 -275
  352. package/frontend/src/features/auth/{page → pages}/UsersPage.tsx +0 -28
  353. package/frontend/src/features/dashboard/{page → pages}/DashboardPage.tsx +1 -1
  354. package/frontend/src/features/database/components/DatabaseDataGrid.tsx +0 -2
  355. package/frontend/src/features/database/components/ForeignKeyCell.tsx +38 -11
  356. package/frontend/src/features/database/components/ForeignKeyPopover.tsx +18 -8
  357. package/frontend/src/features/database/components/LinkRecordModal.tsx +61 -13
  358. package/frontend/src/features/database/components/RecordFormField.tsx +1 -1
  359. package/frontend/src/features/database/components/SQLModal.tsx +75 -0
  360. package/frontend/src/features/database/components/TableForm.tsx +0 -4
  361. package/frontend/src/features/database/components/TableSidebar.tsx +0 -3
  362. package/frontend/src/features/database/components/TablesEmptyState.tsx +1 -1
  363. package/frontend/src/features/database/components/TemplatePreview.tsx +1 -2
  364. package/frontend/src/features/database/constants.ts +16 -28
  365. package/frontend/src/features/database/hooks/useCSVImport.ts +3 -2
  366. package/frontend/src/features/database/hooks/useDatabase.ts +66 -0
  367. package/frontend/src/features/database/hooks/useRawSQL.ts +3 -2
  368. package/frontend/src/features/database/hooks/useTables.ts +30 -28
  369. package/frontend/src/features/database/index.ts +1 -0
  370. package/frontend/src/features/database/{page → pages}/FunctionsPage.tsx +29 -42
  371. package/frontend/src/features/database/{page → pages}/IndexesPage.tsx +34 -51
  372. package/frontend/src/features/database/{page → pages}/PoliciesPage.tsx +42 -58
  373. package/frontend/src/features/database/{page → pages}/SQLEditorPage.tsx +2 -2
  374. package/frontend/src/features/database/{page → pages}/TablesPage.tsx +0 -42
  375. package/frontend/src/features/database/{page → pages}/TriggersPage.tsx +34 -51
  376. package/frontend/src/features/database/services/advance.service.ts +1 -41
  377. package/frontend/src/features/database/services/database.service.ts +55 -0
  378. package/frontend/src/features/database/services/record.service.ts +4 -20
  379. package/frontend/src/features/database/services/table.service.ts +1 -10
  380. package/frontend/src/features/database/templates/ai-chatbot.ts +6 -6
  381. package/frontend/src/features/database/templates/ecommerce-platform.ts +2 -2
  382. package/frontend/src/features/database/templates/instagram-clone.ts +10 -10
  383. package/frontend/src/features/database/templates/notion-clone.ts +8 -8
  384. package/frontend/src/features/database/templates/reddit-clone.ts +10 -10
  385. package/frontend/src/features/deployments/components/DeploymentRow.tsx +93 -0
  386. package/frontend/src/features/deployments/components/DeploymentsEmptyState.tsx +15 -0
  387. package/frontend/src/features/deployments/hooks/useDeployments.ts +157 -0
  388. package/frontend/src/features/deployments/pages/DeploymentsPage.tsx +318 -0
  389. package/frontend/src/features/deployments/services/deployments.service.ts +63 -0
  390. package/frontend/src/features/functions/components/FunctionRow.tsx +72 -72
  391. package/frontend/src/features/functions/components/FunctionsSidebar.tsx +56 -56
  392. package/frontend/src/features/functions/components/SecretRow.tsx +3 -3
  393. package/frontend/src/features/functions/components/index.ts +5 -5
  394. package/frontend/src/features/functions/hooks/useFunctions.ts +5 -4
  395. package/frontend/src/features/functions/hooks/useSecrets.ts +6 -9
  396. package/frontend/src/features/functions/{page → pages}/FunctionsPage.tsx +21 -44
  397. package/frontend/src/features/functions/{page → pages}/SecretsPage.tsx +118 -116
  398. package/frontend/src/features/functions/services/function.service.ts +8 -25
  399. package/frontend/src/features/functions/services/secret.service.ts +23 -41
  400. package/frontend/src/features/login/{page → pages}/CloudLoginPage.tsx +125 -118
  401. package/frontend/src/features/logs/components/LogDetailPanel.tsx +41 -0
  402. package/frontend/src/features/logs/components/LogsDataGrid.tsx +32 -1
  403. package/frontend/src/features/logs/components/index.ts +1 -0
  404. package/frontend/src/features/logs/hooks/useMcpUsage.ts +13 -66
  405. package/frontend/src/features/logs/{page → pages}/LogsPage.tsx +36 -6
  406. package/frontend/src/features/onboard/components/ApiCredentialsSection.tsx +59 -0
  407. package/frontend/src/features/onboard/components/ConnectionStringSection.tsx +180 -0
  408. package/frontend/src/features/onboard/components/McpConnectionSection.tsx +159 -0
  409. package/frontend/src/features/onboard/components/OnboardingController.tsx +68 -0
  410. package/frontend/src/features/onboard/components/OnboardingModal.tsx +121 -267
  411. package/frontend/src/features/onboard/components/ShowPasswordButton.tsx +21 -0
  412. package/frontend/src/features/onboard/components/index.ts +9 -4
  413. package/frontend/src/features/onboard/components/mcp/CursorDeeplinkGenerator.tsx +1 -1
  414. package/frontend/src/features/onboard/components/mcp/QoderDeeplinkGenerator.tsx +36 -0
  415. package/frontend/src/features/onboard/components/mcp/helpers.tsx +123 -98
  416. package/frontend/src/features/onboard/components/mcp/index.ts +4 -3
  417. package/frontend/src/features/onboard/index.ts +17 -13
  418. package/frontend/src/features/realtime/components/ChannelRow.tsx +83 -0
  419. package/frontend/src/features/realtime/components/EditChannelModal.tsx +246 -0
  420. package/frontend/src/features/realtime/components/MessageRow.tsx +85 -0
  421. package/frontend/src/features/realtime/components/RealtimeEmptyState.tsx +30 -0
  422. package/frontend/src/features/realtime/hooks/useRealtime.ts +218 -0
  423. package/frontend/src/features/realtime/index.ts +11 -0
  424. package/frontend/src/features/realtime/pages/RealtimeChannelsPage.tsx +172 -0
  425. package/frontend/src/features/realtime/pages/RealtimeMessagesPage.tsx +211 -0
  426. package/frontend/src/features/realtime/pages/RealtimePermissionsPage.tsx +191 -0
  427. package/frontend/src/features/realtime/services/realtime.service.ts +107 -0
  428. package/frontend/src/features/settings/pages/SettingsPage.tsx +349 -0
  429. package/frontend/src/features/storage/{page → pages}/StoragePage.tsx +1 -29
  430. package/frontend/src/features/visualizer/components/AuthNode.tsx +4 -4
  431. package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +24 -11
  432. package/frontend/src/features/visualizer/{page → pages}/VisualizerPage.tsx +11 -36
  433. package/frontend/src/index.css +249 -249
  434. package/frontend/src/lib/contexts/ModalContext.tsx +35 -0
  435. package/frontend/src/lib/contexts/SocketContext.tsx +119 -75
  436. package/frontend/src/lib/hooks/useMetadata.ts +45 -1
  437. package/frontend/src/lib/hooks/useModal.tsx +2 -0
  438. package/frontend/src/lib/routing/AppRoutes.tsx +103 -84
  439. package/frontend/src/lib/services/metadata.service.ts +20 -3
  440. package/frontend/src/lib/utils/cloudMessaging.ts +1 -1
  441. package/frontend/src/lib/utils/menuItems.ts +223 -183
  442. package/frontend/src/lib/utils/utils.ts +196 -183
  443. package/frontend/tsconfig.json +25 -25
  444. package/frontend/tsconfig.node.json +9 -9
  445. package/functions/deno.json +24 -24
  446. package/functions/server.ts +6 -6
  447. package/functions/worker-template.js +1 -1
  448. package/i18n/README.ar.md +130 -130
  449. package/i18n/README.de.md +130 -130
  450. package/i18n/README.es.md +154 -154
  451. package/i18n/README.fr.md +134 -134
  452. package/i18n/README.hi.md +129 -129
  453. package/i18n/README.ja.md +174 -174
  454. package/i18n/README.ko.md +136 -136
  455. package/i18n/README.pt-BR.md +131 -131
  456. package/i18n/README.ru.md +129 -129
  457. package/i18n/README.zh-CN.md +133 -133
  458. package/openapi/ai.yaml +825 -715
  459. package/openapi/auth.yaml +1324 -1244
  460. package/openapi/email.yaml +158 -0
  461. package/openapi/functions.yaml +475 -475
  462. package/openapi/health.yaml +29 -29
  463. package/openapi/logs.yaml +221 -223
  464. package/openapi/metadata.yaml +175 -177
  465. package/openapi/realtime.yaml +699 -0
  466. package/openapi/records.yaml +381 -381
  467. package/openapi/secrets.yaml +370 -370
  468. package/openapi/storage.yaml +875 -875
  469. package/openapi/tables.yaml +462 -463
  470. package/package.json +97 -97
  471. package/shared-schemas/package.json +31 -31
  472. package/shared-schemas/src/ai-api.schema.ts +251 -143
  473. package/shared-schemas/src/ai.schema.ts +8 -4
  474. package/shared-schemas/src/auth-api.schema.ts +380 -339
  475. package/shared-schemas/src/auth.schema.ts +18 -11
  476. package/shared-schemas/src/cloud-events.schema.ts +26 -0
  477. package/shared-schemas/src/database-api.schema.ts +32 -1
  478. package/shared-schemas/src/database.schema.ts +39 -0
  479. package/shared-schemas/src/deployments-api.schema.ts +55 -0
  480. package/shared-schemas/src/deployments.schema.ts +30 -0
  481. package/shared-schemas/src/docs.schema.ts +32 -0
  482. package/shared-schemas/src/email-api.schema.ts +30 -0
  483. package/shared-schemas/src/functions-api.schema.ts +13 -4
  484. package/shared-schemas/src/functions.schema.ts +1 -1
  485. package/shared-schemas/src/index.ts +22 -14
  486. package/shared-schemas/src/metadata.schema.ts +39 -4
  487. package/shared-schemas/src/realtime-api.schema.ts +111 -0
  488. package/shared-schemas/src/realtime.schema.ts +143 -0
  489. package/shared-schemas/src/secrets-api.schema.ts +44 -0
  490. package/shared-schemas/src/secrets.schema.ts +15 -0
  491. package/shared-schemas/tsconfig.json +21 -21
  492. package/tsconfig.json +7 -7
  493. package/zeabur/README.md +26 -13
  494. package/zeabur/template.yml +1001 -1032
  495. package/.cursor/rules/cursor-rules.mdc +0 -94
  496. package/backend/src/types/profile.ts +0 -55
  497. package/frontend/src/components/ProjectInfoModal.tsx +0 -128
  498. package/frontend/src/features/database/hooks/useFullMetadata.ts +0 -18
  499. package/test-gemini.sh +0 -35
  500. package/test-usage-admin.sh +0 -57
  501. package/test-usage.sh +0 -50
  502. /package/frontend/src/features/auth/{page → pages}/ConfigurationPage.tsx +0 -0
  503. /package/frontend/src/features/database/{page → pages}/TemplatesPage.tsx +0 -0
  504. /package/frontend/src/features/login/{page → pages}/LoginPage.tsx +0 -0
  505. /package/frontend/src/features/logs/{page → pages}/AuditsPage.tsx +0 -0
  506. /package/frontend/src/features/logs/{page → pages}/MCPLogsPage.tsx +0 -0
@@ -1,565 +1,565 @@
1
- # Deploy InsForge to AWS EC2
2
-
3
- This guide will walk you through deploying InsForge on an AWS EC2 instance using Docker Compose.
4
-
5
- ## 📋 Prerequisites
6
-
7
- - AWS Account with EC2 access
8
- - Basic knowledge of SSH and command-line operations
9
- - Domain name (optional, for custom domain setup)
10
-
11
- ## 🚀 Deployment Steps
12
-
13
- ### 1. Create and Configure EC2 Instance
14
-
15
- #### 1.1 Launch EC2 Instance
16
-
17
- 1. **Log into AWS Console** and navigate to EC2 Dashboard
18
- 2. **Click "Launch Instance"**
19
- 3. **Configure Instance:**
20
- - **Name**: `insforge-server` (or your preferred name)
21
- - **AMI**: Ubuntu Server 24.04 LTS (HVM), SSD Volume Type
22
- - **Instance Type**: `t3.medium` or larger (minimum 2 vCPU, 4 GB RAM)
23
- - For production: `t3.large` (2 vCPU, 8 GB RAM) recommended
24
- - For testing: `t3.small` (2 vCPU, 2 GB RAM) minimum
25
- - **Key Pair**: Create new or select existing key pair (download and save the `.pem` file)
26
- - **Storage**: 30 GB gp3 (minimum 20 GB recommended)
27
-
28
- #### 1.2 Configure Security Group
29
-
30
- Create or configure security group with the following inbound rules:
31
-
32
- | Type | Protocol | Port Range | Source | Description |
33
- |-------------|----------|------------|-----------|----------------------|
34
- | SSH | TCP | 22 | My IP | SSH access |
35
- | HTTP | TCP | 80 | 0.0.0.0/0 | HTTP access |
36
- | HTTPS | TCP | 443 | 0.0.0.0/0 | HTTPS access |
37
- | Custom TCP | TCP | 7130 | 0.0.0.0/0 | Backend API |
38
- | Custom TCP | TCP | 7131 | 0.0.0.0/0 | Frontend Dashboard |
39
- | Custom TCP | TCP | 5432 | 0.0.0.0/0 | PostgreSQL (optional)|
40
-
41
- > ⚠️ **Security Note**: For production, restrict PostgreSQL (5432) to specific IP addresses or remove external access entirely. Consider using a reverse proxy (nginx) and exposing only ports 80/443.
42
-
43
- #### 1.3 Allocate Elastic IP (Recommended)
44
-
45
- 1. Navigate to **Elastic IPs** in EC2 Dashboard
46
- 2. Click **Allocate Elastic IP address**
47
- 3. Associate the Elastic IP with your instance
48
-
49
- This ensures your instance keeps the same IP address even after restarts.
50
-
51
- ### 2. Connect to Your EC2 Instance
52
-
53
- ```bash
54
- # Set correct permissions for your key file
55
- chmod 400 your-key-pair.pem
56
-
57
- # Connect via SSH
58
- ssh -i your-key-pair.pem ubuntu@your-ec2-public-ip
59
- ```
60
-
61
- ### 3. Install Dependencies
62
-
63
- #### 3.1 Update System Packages
64
-
65
- ```bash
66
- sudo apt update && sudo apt upgrade -y
67
- ```
68
-
69
- #### 3.2 Install Docker
70
-
71
- ```text
72
- Follow the instructions of the link below to install and verify docker on your new ubuntu ec2 instance:
73
- https://docs.docker.com/engine/install/ubuntu/
74
- ```
75
-
76
- #### 3.3 Add Your User to Docker Group
77
-
78
- After installing Docker, you need to add your user to the `docker` group to run Docker commands without `sudo`:
79
-
80
- ```bash
81
- # Add your user to the docker group
82
- sudo usermod -aG docker $USER
83
-
84
- # Apply the group changes
85
- newgrp docker
86
- ```
87
-
88
- **Verify it works:**
89
-
90
- ```bash
91
- # This should now work without sudo
92
- docker ps
93
- ```
94
-
95
- > 💡 **Note**: If `docker ps` doesn't work immediately, log out and log back in via SSH, then try again.
96
-
97
- > ⚠️ **Security Note**: Adding a user to the `docker` group grants them root-equivalent privileges on the system. This is acceptable for single-user environments like your EC2 instance, but be cautious on shared systems.
98
-
99
- #### 3.4 Install Git
100
-
101
- ```bash
102
- sudo apt install git -y
103
- ```
104
-
105
- ### 4. Deploy InsForge
106
-
107
- #### 4.1 Clone Repository
108
-
109
- ```bash
110
- cd ~
111
- git clone https://github.com/insforge/insforge.git
112
- cd insforge
113
- ```
114
-
115
- #### 4.2 Create Environment Configuration
116
-
117
- Create your `.env` file with production settings:
118
-
119
- ```bash
120
- nano .env
121
- ```
122
-
123
- Add the following configuration (customize the values):
124
-
125
- ```env
126
-
127
- # ============================================
128
- # Server Configuration
129
- # ============================================
130
- PORT=7130
131
-
132
- # ============================================
133
- # Database Configuration
134
- # ============================================
135
- POSTGRES_USER=postgres
136
- POSTGRES_PASSWORD=postgres
137
- POSTGRES_DB=insforge
138
-
139
- # ============================================
140
- # Security & Authentication
141
- # ============================================
142
- # IMPORTANT: Generate a strong random secret for production
143
- JWT_SECRET=your-secret-key-here-must-be-32-char-or-above
144
- ENCRYPTION_KEY=
145
-
146
- # Admin Account (used for initial setup)
147
- ADMIN_EMAIL=admin@example.com
148
- ADMIN_PASSWORD=change-this-password
149
-
150
- # ============================================
151
- # API Configuration
152
- # ============================================
153
- # Replace with your EC2 public IP or domain
154
- API_BASE_URL=http://your-ec2-ip:7130
155
- VITE_API_BASE_URL=http://your-ec2-ip:7130
156
-
157
- # ============================================
158
- # OAuth Providers (Optional)
159
- # ============================================
160
- # Google OAuth
161
- GOOGLE_CLIENT_ID=
162
- GOOGLE_CLIENT_SECRET=
163
-
164
- # GitHub OAuth
165
- GITHUB_CLIENT_ID=
166
- GITHUB_CLIENT_SECRET=
167
-
168
- # ============================================
169
- # AWS Storage Configuration (Optional)
170
- # ============================================
171
- # For S3 file storage
172
- AWS_S3_BUCKET=
173
- AWS_REGION=
174
- AWS_ACCESS_KEY_ID=
175
- AWS_SECRET_ACCESS_KEY=
176
-
177
- # ============================================
178
- # AI/LLM Configuration (Optional)
179
- # ============================================
180
- OPENROUTER_API_KEY=
181
-
182
- # ============================================
183
- # Multi-tenant Cloud Configuration (Optional)
184
- # ============================================
185
- DEPLOYMENT_ID=
186
- PROJECT_ID=
187
- APP_KEY=
188
- ACCESS_API_KEY=
189
-
190
- # ============================================
191
- # Advanced Configuration
192
- # ============================================
193
- DENO_ENV=production
194
- WORKER_TIMEOUT_MS=30000
195
- ```
196
-
197
- **Generate Secure Secrets:**
198
-
199
- ```bash
200
- # Generate JWT_SECRET (32+ characters)
201
- openssl rand -base64 32
202
-
203
- # Generate ENCRYPTION_KEY (must be exactly 32 characters)
204
- openssl rand -base64 24
205
- ```
206
-
207
- > 💡 **Important**: Save these secrets securely. You'll need them if you ever migrate or restore your instance.
208
-
209
- #### 4.3 Start InsForge Services
210
-
211
- ```bash
212
- # Pull Docker images and start services
213
- docker compose up -d
214
-
215
- # View logs to ensure everything started correctly
216
- docker compose logs -f
217
- ```
218
-
219
- Press `Ctrl+C` to exit log view.
220
-
221
- #### 4.4 Verify Services
222
-
223
- ```bash
224
- # Check running containers
225
- docker compose ps
226
-
227
- # You should see 5 running services:
228
- # - insforge-postgres
229
- # - insforge-postgrest
230
- # - insforge
231
- # - insforge-deno
232
- # - insforge-vector
233
- ```
234
-
235
- ### 5. Access Your InsForge Instance
236
-
237
- #### 5.1 Test Backend API
238
-
239
- ```bash
240
- curl http://your-ec2-ip:7130/api/health
241
- ```
242
-
243
- Expected response:
244
- ```json
245
- {
246
- "status": "ok",
247
- "version": "1.0.0",
248
- "service": "Insforge OSS Backend",
249
- "timestamp": "2025-10-17T..."
250
- }
251
- ```
252
-
253
- #### 5.2 Access Dashboard
254
-
255
- Open your browser and navigate to:
256
- ```text
257
- http://your-ec2-ip:7131
258
- ```
259
-
260
-
261
- #### 5.3 ⚠️ Important: Custom Admin Credentials Configuration
262
-
263
- > **🚧 Active Development Notice**: InsForge is currently in active development and testing. The credential management system is being developed. The following is a temporary workaround that will be replaced with a secure implementation in future releases.
264
-
265
- **If you customize admin credentials** in your `.env` file (which is recommended), you must **also update the frontend login page** to match. This is a temporary requirement during our development phase.
266
-
267
- **Step 1: Update `.env` file**
268
-
269
- ```env
270
- # In your .env file
271
- ADMIN_EMAIL=your-custom-admin@example.com
272
- ADMIN_PASSWORD=your-secure-password-here
273
-
274
- ```
275
-
276
- After updating your `.env` file, manually edit the login page:
277
-
278
- ```bash
279
- nano ~/insforge/frontend/src/features/login/page/LoginPage.tsx
280
- ```
281
-
282
- Find this section (around line 38-41):
283
- ```typescript
284
- defaultValues: {
285
- email: 'admin@example.com',
286
- password: 'change-this-password',
287
- },
288
- ```
289
-
290
-
291
- ### 6. Configure Domain (Optional but Recommended)
292
-
293
- #### 6.1 Update DNS Records
294
-
295
- Add DNS A records pointing to your EC2 Elastic IP:
296
- ```text
297
- api.yourdomain.com → your-ec2-ip
298
- app.yourdomain.com → your-ec2-ip
299
- ```
300
-
301
- #### 6.2 Install Nginx Reverse Proxy
302
-
303
- ```bash
304
- sudo apt install nginx -y
305
- ```
306
-
307
- Create Nginx configuration:
308
-
309
- ```bash
310
- sudo nano /etc/nginx/sites-available/insforge
311
- ```
312
-
313
- Add the following configuration:
314
-
315
- ```nginx
316
- # Backend API
317
- server {
318
- listen 80;
319
- server_name api.yourdomain.com;
320
-
321
- location / {
322
- proxy_pass http://localhost:7130;
323
- proxy_http_version 1.1;
324
- proxy_set_header Upgrade $http_upgrade;
325
- proxy_set_header Connection 'upgrade';
326
- proxy_set_header Host $host;
327
- proxy_set_header X-Real-IP $remote_addr;
328
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
329
- proxy_set_header X-Forwarded-Proto $scheme;
330
- proxy_cache_bypass $http_upgrade;
331
- }
332
- }
333
-
334
- # Frontend Dashboard
335
- server {
336
- listen 80;
337
- server_name app.yourdomain.com;
338
-
339
- location / {
340
- proxy_pass http://localhost:7131;
341
- proxy_http_version 1.1;
342
- proxy_set_header Upgrade $http_upgrade;
343
- proxy_set_header Connection 'upgrade';
344
- proxy_set_header Host $host;
345
- proxy_set_header X-Real-IP $remote_addr;
346
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
347
- proxy_set_header X-Forwarded-Proto $scheme;
348
- proxy_cache_bypass $http_upgrade;
349
- }
350
- }
351
- ```
352
-
353
- Enable the configuration:
354
-
355
- ```bash
356
- sudo ln -s /etc/nginx/sites-available/insforge /etc/nginx/sites-enabled/
357
- sudo nginx -t
358
- sudo systemctl reload nginx
359
- ```
360
-
361
- #### 6.3 Install SSL Certificate (Recommended)
362
-
363
- ```bash
364
- # Install Certbot
365
- sudo apt install certbot python3-certbot-nginx -y
366
-
367
- # Obtain SSL certificates
368
- sudo certbot --nginx -d api.yourdomain.com -d app.yourdomain.com
369
-
370
- # Follow the prompts to complete setup
371
- ```
372
-
373
- Update your `.env` file with HTTPS URLs:
374
-
375
- ```bash
376
- cd ~/insforge
377
- nano .env
378
- ```
379
-
380
- Change:
381
- ```env
382
- API_BASE_URL=https://api.yourdomain.com
383
- VITE_API_BASE_URL=https://api.yourdomain.com
384
- ```
385
-
386
- Restart services:
387
-
388
- ```bash
389
- docker compose down
390
- docker compose up -d
391
- ```
392
-
393
- ## 🔧 Management & Maintenance
394
-
395
- ### View Logs
396
-
397
- ```bash
398
- # All services
399
- docker compose logs -f
400
-
401
- # Specific service
402
- docker compose logs -f insforge
403
- docker compose logs -f postgres
404
- docker compose logs -f deno
405
- ```
406
-
407
- ### Stop Services
408
-
409
- ```bash
410
- docker compose down
411
- ```
412
-
413
- ### Restart Services
414
-
415
- ```bash
416
- docker compose restart
417
- ```
418
-
419
- ### Update InsForge
420
-
421
- ```bash
422
- cd ~/insforge
423
- git pull origin main
424
- docker compose down
425
- docker compose up -d --build
426
- ```
427
-
428
- ### Backup Database
429
-
430
- ```bash
431
- # Create backup
432
- docker exec insforge-postgres pg_dump -U postgres insforge > backup_$(date +%Y%m%d_%H%M%S).sql
433
-
434
- # Restore from backup
435
- cat backup_file.sql | docker exec -i insforge-postgres psql -U postgres -d insforge
436
- ```
437
-
438
- ### Monitor Resources
439
-
440
- ```bash
441
- # Check disk usage
442
- df -h
443
-
444
- # Check memory usage
445
- free -h
446
-
447
- # Check Docker stats
448
- docker stats
449
- ```
450
-
451
- ## 🐛 Troubleshooting
452
-
453
- ### Services Won't Start
454
-
455
- ```bash
456
- # Check logs for errors
457
- docker compose logs
458
-
459
- # Check disk space
460
- df -h
461
-
462
- # Check memory
463
- free -h
464
-
465
- # Restart Docker daemon
466
- sudo systemctl restart docker
467
- docker compose up -d
468
- ```
469
-
470
- ### Cannot Connect to Database
471
-
472
- ```bash
473
- # Check if PostgreSQL is running
474
- docker compose ps postgres
475
-
476
- # Check PostgreSQL logs
477
- docker compose logs postgres
478
-
479
- # Verify credentials in .env file
480
- cat .env | grep POSTGRES
481
- ```
482
-
483
- ### Port Already in Use
484
-
485
- ```bash
486
- # Check what's using the port
487
- sudo netstat -tulpn | grep :7130
488
-
489
- # Kill the process or change port in docker-compose.yml
490
- ```
491
-
492
- ### Out of Memory
493
-
494
- Consider upgrading to a larger instance type:
495
- ```text
496
- - Current: t3.medium (4 GB RAM)
497
- - Upgrade to: t3.large (8 GB RAM)
498
- ```
499
-
500
- ### SSL Certificate Issues
501
-
502
- ```bash
503
- # Renew certificates
504
- sudo certbot renew
505
-
506
- # Test renewal
507
- sudo certbot renew --dry-run
508
- ```
509
-
510
- ## 📊 Performance Optimization
511
-
512
- ### For Production Workloads
513
-
514
- 1. **Upgrade Instance Type**: Use `t3.large` or `t3.xlarge`
515
- 2. **Enable Auto-scaling**: Set up Application Load Balancer with auto-scaling groups
516
- 3. **Use RDS**: Migrate from containerized PostgreSQL to AWS RDS for better reliability
517
- 4. **Enable CloudWatch**: Monitor metrics and set up alarms
518
- 5. **Configure Backups**: Set up automated daily backups
519
- 6. **Use S3 for Storage**: Configure S3 bucket for file uploads instead of local storage
520
-
521
- ### Database Optimization
522
-
523
- ```conf
524
- # Increase PostgreSQL shared_buffers (edit postgresql.conf in docker-init/db/)
525
- # Recommended: 25% of available RAM
526
- shared_buffers = 1GB
527
- effective_cache_size = 3GB
528
- ```
529
-
530
- ## 🔒 Security Best Practices
531
-
532
- 1. **Change Default Passwords**: Update admin and database passwords
533
- 2. **Enable Firewall**: Use AWS Security Groups effectively
534
- 3. **Regular Updates**: Keep system and Docker images updated
535
- 4. **SSL/TLS**: Always use HTTPS in production
536
- 5. **Backup Regularly**: Automate database backups
537
- 6. **Monitor Logs**: Set up log monitoring and alerts
538
- 7. **Limit SSH Access**: Restrict SSH to specific IP addresses
539
- 8. **Use IAM Roles**: Instead of AWS access keys where possible
540
-
541
- ## 🆘 Support & Resources
542
-
543
- - **Documentation**: [https://docs.insforge.dev](https://docs.insforge.dev)
544
- - **GitHub Issues**: [https://github.com/insforge/insforge/issues](https://github.com/insforge/insforge/issues)
545
- - **Discord Community**: [https://discord.com/invite/MPxwj5xVvW](https://discord.com/invite/MPxwj5xVvW)
546
-
547
- ## 📝 Cost Estimation
548
-
549
- **Monthly AWS Costs (approximate):**
550
-
551
- | Component | Type | Monthly Cost |
552
- |-----------|------|--------------|
553
- | EC2 Instance | t3.medium | ~$30 |
554
- | Storage (30 GB) | EBS gp3 | ~$3 |
555
- | Elastic IP | (if running 24/7) | $0 |
556
- | Data Transfer | First 100GB free | Variable |
557
- | **Total** | | **~$33/month** |
558
-
559
- > 💡 **Cost Optimization**: Use AWS Savings Plans or Reserved Instances for long-term deployments to save up to 70%.
560
-
561
- ---
562
-
563
- **Congratulations! 🎉** Your InsForge instance is now running on AWS EC2. You can start building applications by connecting AI agents to your backend platform.
564
-
1
+ # Deploy InsForge to AWS EC2
2
+
3
+ This guide will walk you through deploying InsForge on an AWS EC2 instance using Docker Compose.
4
+
5
+ ## 📋 Prerequisites
6
+
7
+ - AWS Account with EC2 access
8
+ - Basic knowledge of SSH and command-line operations
9
+ - Domain name (optional, for custom domain setup)
10
+
11
+ ## 🚀 Deployment Steps
12
+
13
+ ### 1. Create and Configure EC2 Instance
14
+
15
+ #### 1.1 Launch EC2 Instance
16
+
17
+ 1. **Log into AWS Console** and navigate to EC2 Dashboard
18
+ 2. **Click "Launch Instance"**
19
+ 3. **Configure Instance:**
20
+ - **Name**: `insforge-server` (or your preferred name)
21
+ - **AMI**: Ubuntu Server 24.04 LTS (HVM), SSD Volume Type
22
+ - **Instance Type**: `t3.medium` or larger (minimum 2 vCPU, 4 GB RAM)
23
+ - For production: `t3.large` (2 vCPU, 8 GB RAM) recommended
24
+ - For testing: `t3.small` (2 vCPU, 2 GB RAM) minimum
25
+ - **Key Pair**: Create new or select existing key pair (download and save the `.pem` file)
26
+ - **Storage**: 30 GB gp3 (minimum 20 GB recommended)
27
+
28
+ #### 1.2 Configure Security Group
29
+
30
+ Create or configure security group with the following inbound rules:
31
+
32
+ | Type | Protocol | Port Range | Source | Description |
33
+ |-------------|----------|------------|-----------|----------------------|
34
+ | SSH | TCP | 22 | My IP | SSH access |
35
+ | HTTP | TCP | 80 | 0.0.0.0/0 | HTTP access |
36
+ | HTTPS | TCP | 443 | 0.0.0.0/0 | HTTPS access |
37
+ | Custom TCP | TCP | 7130 | 0.0.0.0/0 | Backend API |
38
+ | Custom TCP | TCP | 7131 | 0.0.0.0/0 | Frontend Dashboard |
39
+ | Custom TCP | TCP | 5432 | 0.0.0.0/0 | PostgreSQL (optional)|
40
+
41
+ > ⚠️ **Security Note**: For production, restrict PostgreSQL (5432) to specific IP addresses or remove external access entirely. Consider using a reverse proxy (nginx) and exposing only ports 80/443.
42
+
43
+ #### 1.3 Allocate Elastic IP (Recommended)
44
+
45
+ 1. Navigate to **Elastic IPs** in EC2 Dashboard
46
+ 2. Click **Allocate Elastic IP address**
47
+ 3. Associate the Elastic IP with your instance
48
+
49
+ This ensures your instance keeps the same IP address even after restarts.
50
+
51
+ ### 2. Connect to Your EC2 Instance
52
+
53
+ ```bash
54
+ # Set correct permissions for your key file
55
+ chmod 400 your-key-pair.pem
56
+
57
+ # Connect via SSH
58
+ ssh -i your-key-pair.pem ubuntu@your-ec2-public-ip
59
+ ```
60
+
61
+ ### 3. Install Dependencies
62
+
63
+ #### 3.1 Update System Packages
64
+
65
+ ```bash
66
+ sudo apt update && sudo apt upgrade -y
67
+ ```
68
+
69
+ #### 3.2 Install Docker
70
+
71
+ ```text
72
+ Follow the instructions of the link below to install and verify docker on your new ubuntu ec2 instance:
73
+ https://docs.docker.com/engine/install/ubuntu/
74
+ ```
75
+
76
+ #### 3.3 Add Your User to Docker Group
77
+
78
+ After installing Docker, you need to add your user to the `docker` group to run Docker commands without `sudo`:
79
+
80
+ ```bash
81
+ # Add your user to the docker group
82
+ sudo usermod -aG docker $USER
83
+
84
+ # Apply the group changes
85
+ newgrp docker
86
+ ```
87
+
88
+ **Verify it works:**
89
+
90
+ ```bash
91
+ # This should now work without sudo
92
+ docker ps
93
+ ```
94
+
95
+ > 💡 **Note**: If `docker ps` doesn't work immediately, log out and log back in via SSH, then try again.
96
+
97
+ > ⚠️ **Security Note**: Adding a user to the `docker` group grants them root-equivalent privileges on the system. This is acceptable for single-user environments like your EC2 instance, but be cautious on shared systems.
98
+
99
+ #### 3.4 Install Git
100
+
101
+ ```bash
102
+ sudo apt install git -y
103
+ ```
104
+
105
+ ### 4. Deploy InsForge
106
+
107
+ #### 4.1 Clone Repository
108
+
109
+ ```bash
110
+ cd ~
111
+ git clone https://github.com/insforge/insforge.git
112
+ cd insforge
113
+ ```
114
+
115
+ #### 4.2 Create Environment Configuration
116
+
117
+ Create your `.env` file with production settings:
118
+
119
+ ```bash
120
+ nano .env
121
+ ```
122
+
123
+ Add the following configuration (customize the values):
124
+
125
+ ```env
126
+
127
+ # ============================================
128
+ # Server Configuration
129
+ # ============================================
130
+ PORT=7130
131
+
132
+ # ============================================
133
+ # Database Configuration
134
+ # ============================================
135
+ POSTGRES_USER=postgres
136
+ POSTGRES_PASSWORD=postgres
137
+ POSTGRES_DB=insforge
138
+
139
+ # ============================================
140
+ # Security & Authentication
141
+ # ============================================
142
+ # IMPORTANT: Generate a strong random secret for production
143
+ JWT_SECRET=your-secret-key-here-must-be-32-char-or-above
144
+ ENCRYPTION_KEY=
145
+
146
+ # Admin Account (used for initial setup)
147
+ ADMIN_EMAIL=admin@example.com
148
+ ADMIN_PASSWORD=change-this-password
149
+
150
+ # ============================================
151
+ # API Configuration
152
+ # ============================================
153
+ # Replace with your EC2 public IP or domain
154
+ API_BASE_URL=http://your-ec2-ip:7130
155
+ VITE_API_BASE_URL=http://your-ec2-ip:7130
156
+
157
+ # ============================================
158
+ # OAuth Providers (Optional)
159
+ # ============================================
160
+ # Google OAuth
161
+ GOOGLE_CLIENT_ID=
162
+ GOOGLE_CLIENT_SECRET=
163
+
164
+ # GitHub OAuth
165
+ GITHUB_CLIENT_ID=
166
+ GITHUB_CLIENT_SECRET=
167
+
168
+ # ============================================
169
+ # AWS Storage Configuration (Optional)
170
+ # ============================================
171
+ # For S3 file storage
172
+ AWS_S3_BUCKET=
173
+ AWS_REGION=
174
+ AWS_ACCESS_KEY_ID=
175
+ AWS_SECRET_ACCESS_KEY=
176
+
177
+ # ============================================
178
+ # AI/LLM Configuration (Optional)
179
+ # ============================================
180
+ OPENROUTER_API_KEY=
181
+
182
+ # ============================================
183
+ # Multi-tenant Cloud Configuration (Optional)
184
+ # ============================================
185
+ DEPLOYMENT_ID=
186
+ PROJECT_ID=
187
+ APP_KEY=
188
+ ACCESS_API_KEY=
189
+
190
+ # ============================================
191
+ # Advanced Configuration
192
+ # ============================================
193
+ DENO_ENV=production
194
+ WORKER_TIMEOUT_MS=30000
195
+ ```
196
+
197
+ **Generate Secure Secrets:**
198
+
199
+ ```bash
200
+ # Generate JWT_SECRET (32+ characters)
201
+ openssl rand -base64 32
202
+
203
+ # Generate ENCRYPTION_KEY (must be exactly 32 characters)
204
+ openssl rand -base64 24
205
+ ```
206
+
207
+ > 💡 **Important**: Save these secrets securely. You'll need them if you ever migrate or restore your instance.
208
+
209
+ #### 4.3 Start InsForge Services
210
+
211
+ ```bash
212
+ # Pull Docker images and start services
213
+ docker compose up -d
214
+
215
+ # View logs to ensure everything started correctly
216
+ docker compose logs -f
217
+ ```
218
+
219
+ Press `Ctrl+C` to exit log view.
220
+
221
+ #### 4.4 Verify Services
222
+
223
+ ```bash
224
+ # Check running containers
225
+ docker compose ps
226
+
227
+ # You should see 5 running services:
228
+ # - insforge-postgres
229
+ # - insforge-postgrest
230
+ # - insforge
231
+ # - insforge-deno
232
+ # - insforge-vector
233
+ ```
234
+
235
+ ### 5. Access Your InsForge Instance
236
+
237
+ #### 5.1 Test Backend API
238
+
239
+ ```bash
240
+ curl http://your-ec2-ip:7130/api/health
241
+ ```
242
+
243
+ Expected response:
244
+ ```json
245
+ {
246
+ "status": "ok",
247
+ "version": "1.0.0",
248
+ "service": "Insforge OSS Backend",
249
+ "timestamp": "2025-10-17T..."
250
+ }
251
+ ```
252
+
253
+ #### 5.2 Access Dashboard
254
+
255
+ Open your browser and navigate to:
256
+ ```text
257
+ http://your-ec2-ip:7131
258
+ ```
259
+
260
+
261
+ #### 5.3 ⚠️ Important: Custom Admin Credentials Configuration
262
+
263
+ > **🚧 Active Development Notice**: InsForge is currently in active development and testing. The credential management system is being developed. The following is a temporary workaround that will be replaced with a secure implementation in future releases.
264
+
265
+ **If you customize admin credentials** in your `.env` file (which is recommended), you must **also update the frontend login page** to match. This is a temporary requirement during our development phase.
266
+
267
+ **Step 1: Update `.env` file**
268
+
269
+ ```env
270
+ # In your .env file
271
+ ADMIN_EMAIL=your-custom-admin@example.com
272
+ ADMIN_PASSWORD=your-secure-password-here
273
+
274
+ ```
275
+
276
+ After updating your `.env` file, manually edit the login page:
277
+
278
+ ```bash
279
+ nano ~/insforge/frontend/src/features/login/page/LoginPage.tsx
280
+ ```
281
+
282
+ Find this section (around line 38-41):
283
+ ```typescript
284
+ defaultValues: {
285
+ email: 'admin@example.com',
286
+ password: 'change-this-password',
287
+ },
288
+ ```
289
+
290
+
291
+ ### 6. Configure Domain (Optional but Recommended)
292
+
293
+ #### 6.1 Update DNS Records
294
+
295
+ Add DNS A records pointing to your EC2 Elastic IP:
296
+ ```text
297
+ api.yourdomain.com → your-ec2-ip
298
+ app.yourdomain.com → your-ec2-ip
299
+ ```
300
+
301
+ #### 6.2 Install Nginx Reverse Proxy
302
+
303
+ ```bash
304
+ sudo apt install nginx -y
305
+ ```
306
+
307
+ Create Nginx configuration:
308
+
309
+ ```bash
310
+ sudo nano /etc/nginx/sites-available/insforge
311
+ ```
312
+
313
+ Add the following configuration:
314
+
315
+ ```nginx
316
+ # Backend API
317
+ server {
318
+ listen 80;
319
+ server_name api.yourdomain.com;
320
+
321
+ location / {
322
+ proxy_pass http://localhost:7130;
323
+ proxy_http_version 1.1;
324
+ proxy_set_header Upgrade $http_upgrade;
325
+ proxy_set_header Connection 'upgrade';
326
+ proxy_set_header Host $host;
327
+ proxy_set_header X-Real-IP $remote_addr;
328
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
329
+ proxy_set_header X-Forwarded-Proto $scheme;
330
+ proxy_cache_bypass $http_upgrade;
331
+ }
332
+ }
333
+
334
+ # Frontend Dashboard
335
+ server {
336
+ listen 80;
337
+ server_name app.yourdomain.com;
338
+
339
+ location / {
340
+ proxy_pass http://localhost:7131;
341
+ proxy_http_version 1.1;
342
+ proxy_set_header Upgrade $http_upgrade;
343
+ proxy_set_header Connection 'upgrade';
344
+ proxy_set_header Host $host;
345
+ proxy_set_header X-Real-IP $remote_addr;
346
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
347
+ proxy_set_header X-Forwarded-Proto $scheme;
348
+ proxy_cache_bypass $http_upgrade;
349
+ }
350
+ }
351
+ ```
352
+
353
+ Enable the configuration:
354
+
355
+ ```bash
356
+ sudo ln -s /etc/nginx/sites-available/insforge /etc/nginx/sites-enabled/
357
+ sudo nginx -t
358
+ sudo systemctl reload nginx
359
+ ```
360
+
361
+ #### 6.3 Install SSL Certificate (Recommended)
362
+
363
+ ```bash
364
+ # Install Certbot
365
+ sudo apt install certbot python3-certbot-nginx -y
366
+
367
+ # Obtain SSL certificates
368
+ sudo certbot --nginx -d api.yourdomain.com -d app.yourdomain.com
369
+
370
+ # Follow the prompts to complete setup
371
+ ```
372
+
373
+ Update your `.env` file with HTTPS URLs:
374
+
375
+ ```bash
376
+ cd ~/insforge
377
+ nano .env
378
+ ```
379
+
380
+ Change:
381
+ ```env
382
+ API_BASE_URL=https://api.yourdomain.com
383
+ VITE_API_BASE_URL=https://api.yourdomain.com
384
+ ```
385
+
386
+ Restart services:
387
+
388
+ ```bash
389
+ docker compose down
390
+ docker compose up -d
391
+ ```
392
+
393
+ ## 🔧 Management & Maintenance
394
+
395
+ ### View Logs
396
+
397
+ ```bash
398
+ # All services
399
+ docker compose logs -f
400
+
401
+ # Specific service
402
+ docker compose logs -f insforge
403
+ docker compose logs -f postgres
404
+ docker compose logs -f deno
405
+ ```
406
+
407
+ ### Stop Services
408
+
409
+ ```bash
410
+ docker compose down
411
+ ```
412
+
413
+ ### Restart Services
414
+
415
+ ```bash
416
+ docker compose restart
417
+ ```
418
+
419
+ ### Update InsForge
420
+
421
+ ```bash
422
+ cd ~/insforge
423
+ git pull origin main
424
+ docker compose down
425
+ docker compose up -d --build
426
+ ```
427
+
428
+ ### Backup Database
429
+
430
+ ```bash
431
+ # Create backup
432
+ docker exec insforge-postgres pg_dump -U postgres insforge > backup_$(date +%Y%m%d_%H%M%S).sql
433
+
434
+ # Restore from backup
435
+ cat backup_file.sql | docker exec -i insforge-postgres psql -U postgres -d insforge
436
+ ```
437
+
438
+ ### Monitor Resources
439
+
440
+ ```bash
441
+ # Check disk usage
442
+ df -h
443
+
444
+ # Check memory usage
445
+ free -h
446
+
447
+ # Check Docker stats
448
+ docker stats
449
+ ```
450
+
451
+ ## 🐛 Troubleshooting
452
+
453
+ ### Services Won't Start
454
+
455
+ ```bash
456
+ # Check logs for errors
457
+ docker compose logs
458
+
459
+ # Check disk space
460
+ df -h
461
+
462
+ # Check memory
463
+ free -h
464
+
465
+ # Restart Docker daemon
466
+ sudo systemctl restart docker
467
+ docker compose up -d
468
+ ```
469
+
470
+ ### Cannot Connect to Database
471
+
472
+ ```bash
473
+ # Check if PostgreSQL is running
474
+ docker compose ps postgres
475
+
476
+ # Check PostgreSQL logs
477
+ docker compose logs postgres
478
+
479
+ # Verify credentials in .env file
480
+ cat .env | grep POSTGRES
481
+ ```
482
+
483
+ ### Port Already in Use
484
+
485
+ ```bash
486
+ # Check what's using the port
487
+ sudo netstat -tulpn | grep :7130
488
+
489
+ # Kill the process or change port in docker-compose.yml
490
+ ```
491
+
492
+ ### Out of Memory
493
+
494
+ Consider upgrading to a larger instance type:
495
+ ```text
496
+ - Current: t3.medium (4 GB RAM)
497
+ - Upgrade to: t3.large (8 GB RAM)
498
+ ```
499
+
500
+ ### SSL Certificate Issues
501
+
502
+ ```bash
503
+ # Renew certificates
504
+ sudo certbot renew
505
+
506
+ # Test renewal
507
+ sudo certbot renew --dry-run
508
+ ```
509
+
510
+ ## 📊 Performance Optimization
511
+
512
+ ### For Production Workloads
513
+
514
+ 1. **Upgrade Instance Type**: Use `t3.large` or `t3.xlarge`
515
+ 2. **Enable Auto-scaling**: Set up Application Load Balancer with auto-scaling groups
516
+ 3. **Use RDS**: Migrate from containerized PostgreSQL to AWS RDS for better reliability
517
+ 4. **Enable CloudWatch**: Monitor metrics and set up alarms
518
+ 5. **Configure Backups**: Set up automated daily backups
519
+ 6. **Use S3 for Storage**: Configure S3 bucket for file uploads instead of local storage
520
+
521
+ ### Database Optimization
522
+
523
+ ```conf
524
+ # Increase PostgreSQL shared_buffers (edit postgresql.conf in docker-init/db/)
525
+ # Recommended: 25% of available RAM
526
+ shared_buffers = 1GB
527
+ effective_cache_size = 3GB
528
+ ```
529
+
530
+ ## 🔒 Security Best Practices
531
+
532
+ 1. **Change Default Passwords**: Update admin and database passwords
533
+ 2. **Enable Firewall**: Use AWS Security Groups effectively
534
+ 3. **Regular Updates**: Keep system and Docker images updated
535
+ 4. **SSL/TLS**: Always use HTTPS in production
536
+ 5. **Backup Regularly**: Automate database backups
537
+ 6. **Monitor Logs**: Set up log monitoring and alerts
538
+ 7. **Limit SSH Access**: Restrict SSH to specific IP addresses
539
+ 8. **Use IAM Roles**: Instead of AWS access keys where possible
540
+
541
+ ## 🆘 Support & Resources
542
+
543
+ - **Documentation**: [https://docs.insforge.dev](https://docs.insforge.dev)
544
+ - **GitHub Issues**: [https://github.com/insforge/insforge/issues](https://github.com/insforge/insforge/issues)
545
+ - **Discord Community**: [https://discord.com/invite/MPxwj5xVvW](https://discord.com/invite/MPxwj5xVvW)
546
+
547
+ ## 📝 Cost Estimation
548
+
549
+ **Monthly AWS Costs (approximate):**
550
+
551
+ | Component | Type | Monthly Cost |
552
+ |-----------|------|--------------|
553
+ | EC2 Instance | t3.medium | ~$30 |
554
+ | Storage (30 GB) | EBS gp3 | ~$3 |
555
+ | Elastic IP | (if running 24/7) | $0 |
556
+ | Data Transfer | First 100GB free | Variable |
557
+ | **Total** | | **~$33/month** |
558
+
559
+ > 💡 **Cost Optimization**: Use AWS Savings Plans or Reserved Instances for long-term deployments to save up to 70%.
560
+
561
+ ---
562
+
563
+ **Congratulations! 🎉** Your InsForge instance is now running on AWS EC2. You can start building applications by connecting AI agents to your backend platform.
564
+
565
565
  For other production deployment strategies, check out our [deployment guides](./README.md).