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
@@ -0,0 +1,152 @@
1
+ ---
2
+ title: Deployment Architecture
3
+ description: Zero-config web app deployments powered by Vercel
4
+ ---
5
+
6
+ <Warning>
7
+ Deployments is an experimental feature. APIs and behavior may change.
8
+ </Warning>
9
+
10
+ ## Overview
11
+
12
+ InsForge Deployments enable developers to deploy web applications with a single prompt. By integrating with coding agents via InsForge MCP, developers can simply say "Deploy my app" and have their application live within a minute—no configuration required.
13
+
14
+ ## Technology Stack
15
+
16
+ ```mermaid
17
+ graph TB
18
+ Agent[Coding Agent] --> MCP[InsForge MCP]
19
+ MCP --> API[InsForge Server]
20
+
21
+ API --> S3[AWS S3]
22
+ S3 --> Vercel[Vercel Edge Network]
23
+
24
+ API --> DB[(PostgreSQL)]
25
+ DB --> Metadata[Deployment Metadata]
26
+ DB --> Status[Status Tracking]
27
+
28
+ Vercel --> Live[Live Application]
29
+
30
+ style Agent fill:#1e293b,stroke:#475569,color:#e2e8f0
31
+ style MCP fill:#1e40af,stroke:#3b82f6,color:#dbeafe
32
+ style API fill:#166534,stroke:#22c55e,color:#dcfce7
33
+ style S3 fill:#ea580c,stroke:#f97316,color:#fed7aa
34
+ style Vercel fill:#000000,stroke:#ffffff,color:#ffffff
35
+ style DB fill:#0e7490,stroke:#06b6d4,color:#cffafe
36
+ style Metadata fill:#0e7490,stroke:#22d3ee,color:#cffafe
37
+ style Status fill:#0e7490,stroke:#22d3ee,color:#cffafe
38
+ style Live fill:#166534,stroke:#22c55e,color:#dcfce7
39
+ ```
40
+
41
+ ## Core Components
42
+
43
+ | Component | Technology | Purpose |
44
+ |-----------|------------|---------|
45
+ | **Edge Storage** | AWS S3 | Temporary source file staging |
46
+ | **Build Platform** | Vercel | Production builds and hosting |
47
+ | **Status Tracking** | PostgreSQL | Deployment state and metadata |
48
+ | **Webhook Handler** | HMAC-SHA1 | Real-time build status updates |
49
+
50
+ ## How It Works
51
+
52
+ ### Deployment Flow
53
+
54
+ ```mermaid
55
+ sequenceDiagram
56
+ participant Agent as Coding Agent
57
+ participant API as InsForge Server
58
+ participant S3 as AWS S3
59
+ participant Vercel as Vercel
60
+
61
+ Agent->>API: Create deployment
62
+ API-->>Agent: Upload URL + deployment ID
63
+
64
+ Agent->>S3: Upload source.zip
65
+ S3-->>Agent: Upload complete
66
+
67
+ Agent->>API: Start deployment
68
+ API->>S3: Download source
69
+ API->>Vercel: Upload files
70
+ API->>Vercel: Create deployment
71
+ API-->>Agent: Deployment started
72
+
73
+ Vercel->>Vercel: Build application
74
+ Vercel->>API: Webhook: Build complete
75
+
76
+ Agent->>API: Check status
77
+ API-->>Agent: READY + live URL
78
+ ```
79
+
80
+ ### Step-by-Step Process
81
+
82
+ 1. **Create Deployment**: Agent requests a new deployment, receiving a presigned S3 upload URL
83
+ 2. **Upload Source**: Source files are zipped and uploaded directly to S3 via edge network
84
+ 3. **Start Build**: InsForge downloads the source, extracts files, and uploads to Vercel
85
+ 4. **Build & Deploy**: Vercel builds the application and deploys to its edge network
86
+ 5. **Go Live**: Application becomes available at `https://{app-key}.insforge.site`
87
+
88
+ The entire process typically completes in about one minute.
89
+
90
+ ## Deployment Status
91
+
92
+ | Status | Description |
93
+ |--------|-------------|
94
+ | `WAITING` | Deployment created, awaiting source upload |
95
+ | `UPLOADING` | Source files being processed |
96
+ | `QUEUED` | Build queued on Vercel |
97
+ | `BUILDING` | Application being built |
98
+ | `READY` | Live and accessible |
99
+ | `ERROR` | Build failed |
100
+ | `CANCELED` | Deployment canceled |
101
+
102
+ ## Environment Variables
103
+
104
+ Environment variables can be passed during deployment for build-time configuration. They are encrypted at rest and in transit, and are only accessible during the build process. For auditing purposes, only variable names are logged, never values.
105
+
106
+ <Warning>
107
+ While environment variables are encrypted, avoid storing sensitive credentials in frontend applications. Variables prefixed with `NEXT_PUBLIC_` or similar are embedded in client bundles.
108
+ </Warning>
109
+
110
+ ## Current Limitations
111
+
112
+ <Note>
113
+ This is an experimental feature with the following constraints:
114
+ </Note>
115
+
116
+ | Limitation | Details |
117
+ |------------|---------|
118
+ | **Environment** | Production deployments only |
119
+ | **Custom Domains** | Coming soon |
120
+ | **Preview Deployments** | Coming soon |
121
+ | **Build Logs** | Limited visibility |
122
+
123
+ ## Performance
124
+
125
+ ### Edge Network Optimization
126
+
127
+ Both AWS S3 and Vercel utilize global edge networks, enabling:
128
+
129
+ - **Fast Uploads**: Source files uploaded to nearest S3 edge location
130
+ - **Rapid Builds**: Vercel's distributed build infrastructure
131
+ - **Global Distribution**: Deployed applications served from edge locations worldwide
132
+ - **Low Latency**: Sub-100ms response times for static assets
133
+
134
+ ## Best Practices
135
+
136
+ <CardGroup cols={2}>
137
+ <Card title="Keep Builds Small" icon="minimize">
138
+ Avoid uploading large assets. Use InsForge Storage and access via URLs.
139
+ </Card>
140
+
141
+ <Card title="Use Environment Variables" icon="key">
142
+ Configure builds via env vars, not hardcoded values
143
+ </Card>
144
+
145
+ <Card title="Test Locally First" icon="flask">
146
+ Verify builds work locally before deploying
147
+ </Card>
148
+
149
+ <Card title="Monitor Status" icon="chart-line">
150
+ Check deployment status for build errors
151
+ </Card>
152
+ </CardGroup>
@@ -0,0 +1,103 @@
1
+ ---
2
+ title: Email Architecture
3
+ description: Transactional email delivery powered by AWS SES
4
+ ---
5
+
6
+ <Warning>
7
+ Email is an experimental feature. APIs and behavior may change.
8
+ </Warning>
9
+
10
+ ## Overview
11
+
12
+ InsForge provides a managed email service for sending transactional emails. Built on AWS SES, it offers high deliverability and scalability without requiring you to configure email infrastructure.
13
+
14
+ ## Technology Stack
15
+
16
+ ```mermaid
17
+ graph TB
18
+ Client[Client Application] --> SDK[InsForge SDK]
19
+ SDK --> API[Email API]
20
+ API --> Cloud[InsForge Cloud]
21
+ Cloud --> SES[AWS SES]
22
+ SES --> Inbox[Recipient Inbox]
23
+
24
+ style Client fill:#1e293b,stroke:#475569,color:#e2e8f0
25
+ style SDK fill:#1e40af,stroke:#3b82f6,color:#dbeafe
26
+ style API fill:#166534,stroke:#22c55e,color:#dcfce7
27
+ style Cloud fill:#7c3aed,stroke:#a78bfa,color:#ede9fe
28
+ style SES fill:#ea580c,stroke:#f97316,color:#fed7aa
29
+ style Inbox fill:#0e7490,stroke:#06b6d4,color:#cffafe
30
+ ```
31
+
32
+ ## How It Works
33
+
34
+ 1. **SDK Call** - Your application calls `emails.send()` with recipients and HTML content
35
+ 2. **API Processing** - Request is validated and authenticated
36
+ 3. **Cloud Delivery** - InsForge Cloud queues and sends via AWS SES
37
+ 4. **Delivery** - Email is delivered to recipient inboxes
38
+
39
+ ```mermaid
40
+ sequenceDiagram
41
+ participant App as Your App
42
+ participant SDK as InsForge SDK
43
+ participant API as Email API
44
+ participant SES as AWS SES
45
+
46
+ App->>SDK: emails.send({to, subject, html})
47
+ SDK->>API: POST /api/email/send-raw
48
+ API->>SES: Queue for delivery
49
+ SES-->>API: Accepted
50
+ API-->>SDK: Success
51
+ SDK-->>App: {data, error}
52
+ ```
53
+
54
+ ## Key Features
55
+
56
+ <CardGroup cols={2}>
57
+ <Card title="High Deliverability" icon="inbox">
58
+ AWS SES infrastructure with optimized sending reputation
59
+ </Card>
60
+
61
+ <Card title="Multiple Recipients" icon="users">
62
+ Send to up to 50 recipients per request with CC/BCC support
63
+ </Card>
64
+
65
+ <Card title="Custom Sender" icon="signature">
66
+ Customize the sender display name for your brand
67
+ </Card>
68
+
69
+ <Card title="HTML Content" icon="code">
70
+ Full HTML email support for rich formatting
71
+ </Card>
72
+ </CardGroup>
73
+
74
+ ## Rate Limits
75
+
76
+ | Plan | Limit |
77
+ |------|-------|
78
+ | **Starter** | 10 emails per hour |
79
+ | **Pro** | 50 emails per hour |
80
+
81
+ <Note>
82
+ Custom transactional emails require a paid plan. Authentication emails (verification, password reset) are included in all plans.
83
+ </Note>
84
+
85
+ ## Best Practices
86
+
87
+ <CardGroup cols={2}>
88
+ <Card title="Validate Recipients" icon="at">
89
+ Verify email addresses before sending to maintain deliverability
90
+ </Card>
91
+
92
+ <Card title="Meaningful Content" icon="envelope-open-text">
93
+ Send relevant, expected emails to avoid spam reports
94
+ </Card>
95
+
96
+ <Card title="Handle Errors" icon="triangle-exclamation">
97
+ Always check the error response and handle failures gracefully
98
+ </Card>
99
+
100
+ <Card title="Respect Limits" icon="gauge">
101
+ Implement queuing for bulk sends to stay within rate limits
102
+ </Card>
103
+ </CardGroup>
@@ -0,0 +1,53 @@
1
+ ---
2
+ title: Emails SDK Reference
3
+ description: Send custom transactional emails with the InsForge SDK
4
+ ---
5
+
6
+ <Note>**Private Preview** - This feature is currently in private preview.</Note>
7
+
8
+ import Installation from '/snippets/sdk-installation.mdx';
9
+
10
+ <Installation />
11
+
12
+ ## emails.send()
13
+
14
+ Send custom HTML emails to one or more recipients.
15
+
16
+ ### Parameters
17
+
18
+ - `to` (string | string[], required) - Recipient email(s), max 50 recipients
19
+ - `subject` (string, required) - Email subject line, max 500 characters
20
+ - `html` (string, required) - HTML content of the email
21
+ - `cc` (string | string[], optional) - CC recipient(s), max 50 recipients
22
+ - `bcc` (string | string[], optional) - BCC recipient(s), max 50 recipients
23
+ - `from` (string, optional) - Custom sender name, max 100 characters
24
+ - `replyTo` (string, optional) - Reply-to email address, must be a valid email address
25
+
26
+ ### Returns
27
+
28
+ ```typescript
29
+ {
30
+ data: {} | null, // Empty object on success
31
+ error: Error | null
32
+ }
33
+ ```
34
+
35
+ ### Example
36
+
37
+ ```javascript
38
+ const { data, error } = await insforge.emails.send({
39
+ to: ['user1@example.com', 'user2@example.com'],
40
+ cc: 'manager@example.com',
41
+ from: 'Acme Support Team',
42
+ subject: 'Team Update',
43
+ html: '<h1>Weekly Update</h1><p>Here are this week\'s highlights...</p>',
44
+ replyTo: 'support@example.com'
45
+ });
46
+
47
+ if (error) {
48
+ console.error('Failed to send email:', error.message);
49
+ return;
50
+ }
51
+
52
+ console.log('Email sent successfully');
53
+ ```
@@ -1,105 +1,105 @@
1
- ---
2
- title: Architecture
3
- description: Serverless JavaScript functions running in isolated Deno runtime
4
- ---
5
-
6
- ## Overview
7
-
8
- InsForge Functions provide a secure, scalable serverless compute platform that runs JavaScript/TypeScript code in isolated Deno workers with full access to the InsForge SDK.
9
-
10
- ## Technology Stack
11
-
12
- ```mermaid
13
- graph TB
14
- Client[Client Application] --> Backend[Backend API :7130]
15
- Backend --> Proxy[Proxy Layer]
16
- Proxy --> Deno[Deno Runtime :7133]
17
- Deno --> Worker[Web Worker]
18
- Worker --> Sandbox[Isolated Sandbox]
19
-
20
- Backend --> DB[(PostgreSQL)]
21
- Deno --> DB
22
- Worker --> SDK[InsForge SDK]
23
- SDK --> Backend
24
-
25
- style Client fill:#1e293b,stroke:#475569,color:#e2e8f0
26
- style Backend fill:#166534,stroke:#22c55e,color:#dcfce7
27
- style Proxy fill:#1e40af,stroke:#3b82f6,color:#dbeafe
28
- style Deno fill:#c2410c,stroke:#fb923c,color:#fed7aa
29
- style Worker fill:#4c1d95,stroke:#8b5cf6,color:#ede9fe
30
- style Sandbox fill:#7c2d12,stroke:#f97316,color:#fed7aa
31
- style DB fill:#0e7490,stroke:#06b6d4,color:#cffafe
32
- style SDK fill:#1e40af,stroke:#3b82f6,color:#dbeafe
33
- ```
34
-
35
- ## Core Components
36
-
37
- | Component | Technology | Port | Purpose |
38
- |-----------|------------|------|---------|
39
- | **Backend API** | Node.js/Express | 7130 | Function management, authentication, proxy |
40
- | **Runtime** | Deno v2.0.6 | 7133 | Secure JavaScript/TypeScript execution |
41
- | **Sandbox** | Web Workers | - | Isolated execution environment |
42
- | **Database** | PostgreSQL | 5432 | Function code and metadata storage |
43
- | **SDK** | @insforge/sdk | - | Pre-injected client for backend access |
44
- | **Secrets** | AES-256-GCM | - | Encrypted environment variables |
45
-
46
- ## How It Works
47
-
48
- When a client makes a request to `/functions/{slug}`:
49
-
50
- 1. The backend API receives and validates the request
51
- 2. Request is proxied to the Deno runtime
52
- 3. Function code is executed in an isolated Web Worker
53
- 4. The function has access to the InsForge SDK and environment variables
54
- 5. Response is returned to the client
55
-
56
- ### Authentication Flow
57
-
58
- ```mermaid
59
- sequenceDiagram
60
- participant C as Client
61
- participant B as Backend API
62
- participant D as Deno Runtime
63
- participant W as Worker
64
- participant SDK as InsForge SDK
65
-
66
- C->>B: POST /functions/my-api<br/>Authorization: Bearer TOKEN
67
- B->>D: Proxy request with headers
68
- D->>D: Fetch function code from DB
69
- D->>D: Decrypt secrets
70
- D->>W: Create worker with code + secrets
71
- W->>SDK: createClient({token})
72
- SDK->>B: Validate token
73
- B-->>SDK: User data
74
- W->>C: HTTP Response
75
- ```
76
-
77
- ## Performance Characteristics
78
-
79
- ### Execution Limits
80
-
81
- | Limit | Value | Description |
82
- |-------|-------|-------------|
83
- | **Timeout** | 30 seconds | Maximum execution time per invocation |
84
- | **Memory** | Worker default | Depends on Deno worker allocation |
85
- | **Payload Size** | 10MB | Maximum request/response size |
86
- | **Concurrent Workers** | System dependent | Limited by server resources |
87
- | **Cold Start** | ~50-200ms | Time to create new worker |
88
-
89
- ### Optimization Strategies
90
-
91
- 1. **Worker Pooling**: Workers are created on-demand
92
- 2. **Code Caching**: Function code cached in memory
93
- 3. **Secret Caching**: Decrypted secrets cached per execution
94
- 4. **SDK Reuse**: SDK client created once per worker
95
-
96
- ## Best Practices
97
-
98
- 1. **Keep Functions Small**: Single responsibility per function
99
- 2. **Handle Errors Gracefully**: Always return proper HTTP responses
100
- 3. **Validate Input**: Check request data before processing
101
- 4. **Use Caching**: Cache frequently accessed data
102
- 5. **Optimize Queries**: Use efficient database queries
103
- 6. **Monitor Performance**: Track execution times and errors
104
- 7. **Secure Secrets**: Never log sensitive data
105
- 8. **Test Locally**: Test functions before deployment
1
+ ---
2
+ title: Functions Architecture
3
+ description: Serverless JavaScript functions running in isolated Deno runtime
4
+ ---
5
+
6
+ ## Overview
7
+
8
+ InsForge Functions provide a secure, scalable serverless compute platform that runs JavaScript/TypeScript code in isolated Deno workers with full access to the InsForge SDK.
9
+
10
+ ## Technology Stack
11
+
12
+ ```mermaid
13
+ graph TB
14
+ Client[Client Application] --> Backend[Backend API :7130]
15
+ Backend --> Proxy[Proxy Layer]
16
+ Proxy --> Deno[Deno Runtime :7133]
17
+ Deno --> Worker[Web Worker]
18
+ Worker --> Sandbox[Isolated Sandbox]
19
+
20
+ Backend --> DB[(PostgreSQL)]
21
+ Deno --> DB
22
+ Worker --> SDK[InsForge SDK]
23
+ SDK --> Backend
24
+
25
+ style Client fill:#1e293b,stroke:#475569,color:#e2e8f0
26
+ style Backend fill:#166534,stroke:#22c55e,color:#dcfce7
27
+ style Proxy fill:#1e40af,stroke:#3b82f6,color:#dbeafe
28
+ style Deno fill:#c2410c,stroke:#fb923c,color:#fed7aa
29
+ style Worker fill:#4c1d95,stroke:#8b5cf6,color:#ede9fe
30
+ style Sandbox fill:#7c2d12,stroke:#f97316,color:#fed7aa
31
+ style DB fill:#0e7490,stroke:#06b6d4,color:#cffafe
32
+ style SDK fill:#1e40af,stroke:#3b82f6,color:#dbeafe
33
+ ```
34
+
35
+ ## Core Components
36
+
37
+ | Component | Technology | Port | Purpose |
38
+ |-----------|------------|------|---------|
39
+ | **Backend API** | Node.js/Express | 7130 | Function management, authentication, proxy |
40
+ | **Runtime** | Deno v2.0.6 | 7133 | Secure JavaScript/TypeScript execution |
41
+ | **Sandbox** | Web Workers | - | Isolated execution environment |
42
+ | **Database** | PostgreSQL | 5432 | Function code and metadata storage |
43
+ | **SDK** | @insforge/sdk | - | Pre-injected client for backend access |
44
+ | **Secrets** | AES-256-GCM | - | Encrypted environment variables |
45
+
46
+ ## How It Works
47
+
48
+ When a client makes a request to `/functions/{slug}`:
49
+
50
+ 1. The backend API receives and validates the request
51
+ 2. Request is proxied to the Deno runtime
52
+ 3. Function code is executed in an isolated Web Worker
53
+ 4. The function has access to the InsForge SDK and environment variables
54
+ 5. Response is returned to the client
55
+
56
+ ### Authentication Flow
57
+
58
+ ```mermaid
59
+ sequenceDiagram
60
+ participant C as Client
61
+ participant B as Backend API
62
+ participant D as Deno Runtime
63
+ participant W as Worker
64
+ participant SDK as InsForge SDK
65
+
66
+ C->>B: POST /functions/my-api<br/>Authorization: Bearer TOKEN
67
+ B->>D: Proxy request with headers
68
+ D->>D: Fetch function code from DB
69
+ D->>D: Decrypt secrets
70
+ D->>W: Create worker with code + secrets
71
+ W->>SDK: createClient({token})
72
+ SDK->>B: Validate token
73
+ B-->>SDK: User data
74
+ W->>C: HTTP Response
75
+ ```
76
+
77
+ ## Performance Characteristics
78
+
79
+ ### Execution Limits
80
+
81
+ | Limit | Value | Description |
82
+ |-------|-------|-------------|
83
+ | **Timeout** | 30 seconds | Maximum execution time per invocation |
84
+ | **Memory** | Worker default | Depends on Deno worker allocation |
85
+ | **Payload Size** | 10MB | Maximum request/response size |
86
+ | **Concurrent Workers** | System dependent | Limited by server resources |
87
+ | **Cold Start** | ~50-200ms | Time to create new worker |
88
+
89
+ ### Optimization Strategies
90
+
91
+ 1. **Worker Pooling**: Workers are created on-demand
92
+ 2. **Code Caching**: Function code cached in memory
93
+ 3. **Secret Caching**: Decrypted secrets cached per execution
94
+ 4. **SDK Reuse**: SDK client created once per worker
95
+
96
+ ## Best Practices
97
+
98
+ 1. **Keep Functions Small**: Single responsibility per function
99
+ 2. **Handle Errors Gracefully**: Always return proper HTTP responses
100
+ 3. **Validate Input**: Check request data before processing
101
+ 4. **Use Caching**: Cache frequently accessed data
102
+ 5. **Optimize Queries**: Use efficient database queries
103
+ 6. **Monitor Performance**: Track execution times and errors
104
+ 7. **Secure Secrets**: Never log sensitive data
105
+ 8. **Test Locally**: Test functions before deployment