insforge 1.2.10 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/.claude-plugin/marketplace.json +20 -20
  2. package/.dockerignore +60 -60
  3. package/.env.example +83 -77
  4. package/.github/ISSUE_TEMPLATE/bug_report.yml +36 -36
  5. package/.github/ISSUE_TEMPLATE/config.yml +11 -11
  6. package/.github/ISSUE_TEMPLATE/feature_request.yml +26 -26
  7. package/.github/PULL_REQUEST_TEMPLATE.md +7 -7
  8. package/.github/copilot-instructions.md +146 -146
  9. package/.github/workflows/build-image.yml +65 -65
  10. package/.github/workflows/ci-premerge-check.yml +23 -23
  11. package/.github/workflows/e2e.yml +63 -63
  12. package/.github/workflows/lint-and-format.yml +32 -32
  13. package/.prettierignore +64 -64
  14. package/CHANGELOG.md +44 -44
  15. package/CLAUDE_PLUGIN.md +104 -104
  16. package/CODE_OF_CONDUCT.md +128 -128
  17. package/CONTRIBUTING.md +125 -125
  18. package/Dockerfile +30 -30
  19. package/GITHUB_OAUTH_SETUP.md +49 -49
  20. package/GOOGLE_OAUTH_SETUP.md +148 -148
  21. package/LICENSE +201 -201
  22. package/README.md +182 -182
  23. package/assets/Dark.svg +23 -23
  24. package/auth/package.json +28 -28
  25. package/auth/src/lib/broadcastService.ts +117 -115
  26. package/auth/src/pages/SignInPage.tsx +60 -57
  27. package/auth/src/pages/SignUpPage.tsx +60 -57
  28. package/auth/tsconfig.json +32 -32
  29. package/auth/tsconfig.node.json +11 -11
  30. package/backend/package.json +78 -75
  31. package/backend/src/api/routes/ai/index.routes.ts +3 -3
  32. package/backend/src/api/routes/auth/index.routes.ts +667 -570
  33. package/backend/src/api/routes/auth/oauth.routes.ts +473 -448
  34. package/backend/src/api/routes/database/advance.routes.ts +37 -16
  35. package/backend/src/api/routes/database/index.routes.ts +78 -1
  36. package/backend/src/api/routes/database/records.routes.ts +10 -10
  37. package/backend/src/api/routes/database/tables.routes.ts +0 -14
  38. package/backend/src/api/routes/docs/index.routes.ts +75 -76
  39. package/backend/src/api/routes/email/index.routes.ts +35 -0
  40. package/backend/src/api/routes/functions/index.routes.ts +18 -12
  41. package/backend/src/api/routes/metadata/index.routes.ts +12 -0
  42. package/backend/src/api/routes/realtime/channels.routes.ts +81 -0
  43. package/backend/src/api/routes/realtime/index.routes.ts +12 -0
  44. package/backend/src/api/routes/realtime/messages.routes.ts +48 -0
  45. package/backend/src/api/routes/realtime/permissions.routes.ts +19 -0
  46. package/backend/src/api/routes/storage/index.routes.ts +18 -12
  47. package/backend/src/api/routes/usage/index.routes.ts +6 -4
  48. package/backend/src/infra/database/database.manager.ts +14 -1
  49. package/backend/src/infra/database/migrations/000_create-base-tables.sql +141 -141
  50. package/backend/src/infra/database/migrations/001_create-helper-functions.sql +40 -40
  51. package/backend/src/infra/database/migrations/002_rename-auth-tables.sql +29 -29
  52. package/backend/src/infra/database/migrations/003_create-users-table.sql +55 -55
  53. package/backend/src/infra/database/migrations/004_add-reload-postgrest-func.sql +23 -23
  54. package/backend/src/infra/database/migrations/005_enable-project-admin-modify-users.sql +29 -29
  55. package/backend/src/infra/database/migrations/006_modify-ai-usage-table.sql +24 -24
  56. package/backend/src/infra/database/migrations/007_drop-metadata-table.sql +1 -1
  57. package/backend/src/infra/database/migrations/008_add-system-tables.sql +76 -76
  58. package/backend/src/infra/database/migrations/009_add-function-secrets.sql +23 -23
  59. package/backend/src/infra/database/migrations/010_modify-ai-config-modalities.sql +93 -93
  60. package/backend/src/infra/database/migrations/011_refactor-secrets-table.sql +15 -15
  61. package/backend/src/infra/database/migrations/012_add-storage-uploaded-by.sql +7 -7
  62. package/backend/src/infra/database/migrations/013_create-auth-schema-functions.sql +44 -44
  63. package/backend/src/infra/database/migrations/014_add-updated-at-trigger-user-table.sql +7 -7
  64. package/backend/src/infra/database/migrations/015_create-auth-config-and-email-otp-tables.sql +59 -59
  65. package/backend/src/infra/database/migrations/016_update-auth-config-and-email-otp.sql +24 -24
  66. package/backend/src/infra/database/migrations/017_create-realtime-schema.sql +233 -0
  67. package/backend/src/infra/realtime/realtime.manager.ts +246 -0
  68. package/backend/src/infra/realtime/webhook-sender.ts +82 -0
  69. package/backend/src/infra/security/token.manager.ts +219 -125
  70. package/backend/src/infra/socket/socket.manager.ts +198 -64
  71. package/backend/src/providers/ai/openrouter.provider.ts +12 -9
  72. package/backend/src/providers/email/base.provider.ts +4 -7
  73. package/backend/src/providers/email/cloud.provider.ts +84 -0
  74. package/backend/src/providers/oauth/apple.provider.ts +266 -0
  75. package/backend/src/providers/oauth/index.ts +1 -0
  76. package/backend/src/server.ts +317 -284
  77. package/backend/src/services/ai/ai-model.service.ts +5 -5
  78. package/backend/src/services/ai/chat-completion.service.ts +4 -4
  79. package/backend/src/services/ai/image-generation.service.ts +3 -3
  80. package/backend/src/services/auth/auth.service.ts +14 -0
  81. package/backend/src/services/database/database-table.service.ts +0 -9
  82. package/backend/src/services/database/database.service.ts +127 -0
  83. package/backend/src/services/email/email.service.ts +5 -7
  84. package/backend/src/services/realtime/index.ts +3 -0
  85. package/backend/src/services/realtime/realtime-auth.service.ts +104 -0
  86. package/backend/src/services/realtime/realtime-channel.service.ts +237 -0
  87. package/backend/src/services/realtime/realtime-message.service.ts +260 -0
  88. package/backend/src/types/auth.ts +11 -0
  89. package/backend/src/types/realtime.ts +18 -0
  90. package/backend/src/types/socket.ts +7 -31
  91. package/backend/src/utils/cookies.ts +35 -0
  92. package/backend/src/utils/s3-config-loader.ts +64 -0
  93. package/backend/src/utils/seed.ts +301 -298
  94. package/backend/src/utils/sql-parser.ts +90 -0
  95. package/backend/tests/README.md +133 -133
  96. package/backend/tests/cleanup-all-test-data.sh +230 -230
  97. package/backend/tests/cloud/test-s3-multitenant.sh +131 -131
  98. package/backend/tests/local/comprehensive-curl-tests.sh +155 -155
  99. package/backend/tests/local/test-ai-config.sh +129 -129
  100. package/backend/tests/local/test-ai-usage.sh +80 -80
  101. package/backend/tests/local/test-auth-router.sh +143 -143
  102. package/backend/tests/local/test-database-router.sh +222 -222
  103. package/backend/tests/local/test-e2e.sh +240 -240
  104. package/backend/tests/local/test-fk-errors.sh +96 -96
  105. package/backend/tests/local/test-functions.sh +123 -123
  106. package/backend/tests/local/test-id-field.sh +200 -200
  107. package/backend/tests/local/test-logs.sh +132 -132
  108. package/backend/tests/local/test-public-bucket.sh +264 -264
  109. package/backend/tests/local/test-secrets.sh +249 -249
  110. package/backend/tests/local/test-serverless-functions.sh.disabled +325 -325
  111. package/backend/tests/local/test-traditional-rest.sh +208 -208
  112. package/backend/tests/manual/README.md +50 -50
  113. package/backend/tests/manual/create-large-table-simple.sql +10 -10
  114. package/backend/tests/manual/seed-large-table.sql +100 -100
  115. package/backend/tests/manual/setup-large-table-extras.sql +33 -33
  116. package/backend/tests/manual/test-bulk-upsert.sh +409 -409
  117. package/backend/tests/manual/test-database-advance.sh +296 -296
  118. package/backend/tests/manual/test-postgrest-stability.sh +191 -191
  119. package/backend/tests/manual/test-rawsql-export-import.sh +411 -411
  120. package/backend/tests/manual/test-rawsql-modes.sh +244 -244
  121. package/backend/tests/manual/test-universal-storage.sh +263 -263
  122. package/backend/tests/manual/test-users.sql +17 -17
  123. package/backend/tests/run-all-tests.sh +139 -139
  124. package/backend/tests/setup.ts +0 -0
  125. package/backend/tests/test-config.sh +338 -338
  126. package/backend/tests/unit/analyze-query.test.ts +697 -0
  127. package/backend/tsconfig.json +22 -22
  128. package/claude-plugin/.claude-plugin/plugin.json +24 -24
  129. package/claude-plugin/README.md +133 -133
  130. package/claude-plugin/skills/insforge-schema-patterns/SKILL.md +270 -270
  131. package/docker-compose.prod.yml +204 -200
  132. package/docker-compose.yml +232 -228
  133. package/docker-init/db/db-init.sql +97 -97
  134. package/docker-init/db/jwt.sql +5 -5
  135. package/docker-init/db/postgresql.conf +16 -16
  136. package/docker-init/logs/vector.yml +236 -236
  137. package/docs/README.md +44 -44
  138. package/docs/agent-docs/real-time.md +269 -0
  139. package/docs/changelog.mdx +119 -67
  140. package/docs/core-concepts/ai/architecture.mdx +372 -372
  141. package/docs/core-concepts/ai/sdk.mdx +213 -213
  142. package/docs/core-concepts/authentication/architecture.mdx +278 -278
  143. package/docs/core-concepts/authentication/sdk.mdx +414 -414
  144. package/docs/core-concepts/authentication/ui-components/customization.mdx +529 -529
  145. package/docs/core-concepts/authentication/ui-components/nextjs.mdx +221 -221
  146. package/docs/core-concepts/authentication/ui-components/react-router.mdx +184 -184
  147. package/docs/core-concepts/authentication/ui-components/react.mdx +129 -129
  148. package/docs/core-concepts/database/architecture.mdx +255 -255
  149. package/docs/core-concepts/database/sdk.mdx +382 -382
  150. package/docs/core-concepts/email/architecture.mdx +101 -0
  151. package/docs/core-concepts/email/sdk.mdx +53 -0
  152. package/docs/core-concepts/functions/architecture.mdx +105 -105
  153. package/docs/core-concepts/functions/sdk.mdx +184 -184
  154. package/docs/core-concepts/realtime/architecture.mdx +446 -0
  155. package/docs/core-concepts/realtime/sdk.mdx +409 -0
  156. package/docs/core-concepts/storage/architecture.mdx +243 -243
  157. package/docs/core-concepts/storage/sdk.mdx +253 -253
  158. package/docs/deployment/README.md +94 -94
  159. package/docs/deployment/deploy-to-aws-ec2.md +564 -564
  160. package/docs/deployment/deploy-to-azure-virtual-machines.md +312 -312
  161. package/docs/deployment/deploy-to-google-cloud-compute-engine.md +613 -613
  162. package/docs/deployment/deploy-to-render.md +441 -441
  163. package/docs/deprecated/insforge-auth-api.md +214 -214
  164. package/docs/deprecated/insforge-auth-sdk.md +99 -99
  165. package/docs/deprecated/insforge-db-api.md +358 -358
  166. package/docs/deprecated/insforge-db-sdk.md +139 -139
  167. package/docs/deprecated/insforge-debug-sdk.md +156 -156
  168. package/docs/deprecated/insforge-debug.md +64 -64
  169. package/docs/deprecated/insforge-instructions.md +123 -123
  170. package/docs/deprecated/insforge-project.md +117 -117
  171. package/docs/deprecated/insforge-storage-api.md +278 -278
  172. package/docs/deprecated/insforge-storage-sdk.md +158 -158
  173. package/docs/docs.json +232 -210
  174. package/docs/examples/framework-guides/nextjs.mdx +131 -131
  175. package/docs/examples/framework-guides/nuxt.mdx +165 -165
  176. package/docs/examples/framework-guides/react.mdx +165 -165
  177. package/docs/examples/framework-guides/svelte.mdx +153 -153
  178. package/docs/examples/framework-guides/vue.mdx +159 -159
  179. package/docs/examples/overview.mdx +67 -67
  180. package/docs/favicon.svg +19 -19
  181. package/docs/images/changelog/dec-2025/ai-integration.png +0 -0
  182. package/docs/images/changelog/dec-2025/ai-models.webp +0 -0
  183. package/docs/images/changelog/dec-2025/alipay-payment.webp +0 -0
  184. package/docs/images/changelog/dec-2025/apple-login.jpg +0 -0
  185. package/docs/images/changelog/dec-2025/mcp-installer.png +0 -0
  186. package/docs/images/changelog/dec-2025/realtime-module.jpg +0 -0
  187. package/docs/images/icons/ai.svg +4 -4
  188. package/docs/images/logos/nextjs.svg +4 -4
  189. package/docs/images/logos/nuxt.svg +4 -4
  190. package/docs/images/logos/react.svg +5 -5
  191. package/docs/images/logos/svelte.svg +4 -4
  192. package/docs/images/logos/vue.svg +5 -5
  193. package/docs/insforge-instructions-sdk.md +89 -88
  194. package/docs/introduction.mdx +45 -45
  195. package/docs/logo/dark.svg +22 -22
  196. package/docs/logo/light.svg +20 -20
  197. package/docs/partnership.mdx +651 -646
  198. package/docs/quickstart.mdx +82 -82
  199. package/docs/showcase.mdx +52 -52
  200. package/docs/snippets/sdk-installation.mdx +21 -21
  201. package/docs/snippets/service-icons.mdx +27 -27
  202. package/examples/oauth/frontend-oauth-example.html +250 -250
  203. package/examples/response-examples.md +443 -443
  204. package/frontend/components.json +17 -17
  205. package/frontend/package.json +69 -69
  206. package/frontend/src/assets/icons/checkbox_checked.svg +6 -6
  207. package/frontend/src/assets/icons/checkbox_undetermined.svg +6 -6
  208. package/frontend/src/assets/icons/checked.svg +3 -3
  209. package/frontend/src/assets/icons/connected.svg +3 -3
  210. package/frontend/src/assets/icons/error.svg +3 -3
  211. package/frontend/src/assets/icons/loader.svg +9 -9
  212. package/frontend/src/assets/icons/pencil.svg +4 -4
  213. package/frontend/src/assets/icons/refresh.svg +4 -4
  214. package/frontend/src/assets/icons/step_active.svg +3 -3
  215. package/frontend/src/assets/icons/step_inactive.svg +11 -11
  216. package/frontend/src/assets/icons/warning.svg +3 -3
  217. package/frontend/src/assets/logos/apple.svg +3 -3
  218. package/frontend/src/assets/logos/claude_code.svg +3 -3
  219. package/frontend/src/assets/logos/cline.svg +6 -6
  220. package/frontend/src/assets/logos/cursor.svg +20 -20
  221. package/frontend/src/assets/logos/discord.svg +8 -8
  222. package/frontend/src/assets/logos/facebook.svg +3 -3
  223. package/frontend/src/assets/logos/gemini.svg +19 -19
  224. package/frontend/src/assets/logos/github.svg +5 -5
  225. package/frontend/src/assets/logos/google.svg +13 -13
  226. package/frontend/src/assets/logos/grok.svg +10 -10
  227. package/frontend/src/assets/logos/insforge_dark.svg +15 -15
  228. package/frontend/src/assets/logos/insforge_light.svg +15 -15
  229. package/frontend/src/assets/logos/instagram.svg +1 -1
  230. package/frontend/src/assets/logos/linkedin.svg +3 -3
  231. package/frontend/src/assets/logos/openai.svg +10 -10
  232. package/frontend/src/assets/logos/roo_code.svg +9 -9
  233. package/frontend/src/assets/logos/spotify.svg +16 -16
  234. package/frontend/src/assets/logos/tiktok.svg +5 -5
  235. package/frontend/src/assets/logos/trae.svg +3 -3
  236. package/frontend/src/assets/logos/windsurf.svg +10 -10
  237. package/frontend/src/assets/logos/x.svg +3 -3
  238. package/frontend/src/components/layout/AppHeader.tsx +9 -10
  239. package/frontend/src/features/auth/components/OAuthConfigDialog.tsx +1 -0
  240. package/frontend/src/features/auth/components/UsersDataGrid.tsx +6 -0
  241. package/frontend/src/features/auth/helpers.tsx +8 -0
  242. package/frontend/src/features/auth/{page → pages}/UsersPage.tsx +0 -28
  243. package/frontend/src/features/database/components/SQLModal.tsx +75 -0
  244. package/frontend/src/features/database/components/TableForm.tsx +0 -4
  245. package/frontend/src/features/database/hooks/useDatabase.ts +66 -0
  246. package/frontend/src/features/database/hooks/useTables.ts +32 -28
  247. package/frontend/src/features/database/index.ts +1 -0
  248. package/frontend/src/features/database/{page → pages}/FunctionsPage.tsx +29 -37
  249. package/frontend/src/features/database/{page → pages}/IndexesPage.tsx +35 -47
  250. package/frontend/src/features/database/{page → pages}/PoliciesPage.tsx +43 -54
  251. package/frontend/src/features/database/{page → pages}/TablesPage.tsx +0 -42
  252. package/frontend/src/features/database/{page → pages}/TriggersPage.tsx +35 -47
  253. package/frontend/src/features/database/services/advance.service.ts +0 -26
  254. package/frontend/src/features/database/services/database.service.ts +55 -0
  255. package/frontend/src/features/database/services/table.service.ts +0 -6
  256. package/frontend/src/features/functions/{page → pages}/FunctionsPage.tsx +21 -44
  257. package/frontend/src/features/functions/{page → pages}/SecretsPage.tsx +11 -9
  258. package/frontend/src/features/logs/hooks/useMcpUsage.ts +13 -66
  259. package/frontend/src/features/realtime/components/ChannelRow.tsx +83 -0
  260. package/frontend/src/features/realtime/components/EditChannelModal.tsx +246 -0
  261. package/frontend/src/features/realtime/components/MessageRow.tsx +85 -0
  262. package/frontend/src/features/realtime/components/RealtimeEmptyState.tsx +30 -0
  263. package/frontend/src/features/realtime/hooks/useRealtime.ts +218 -0
  264. package/frontend/src/features/realtime/index.ts +11 -0
  265. package/frontend/src/features/realtime/pages/RealtimeChannelsPage.tsx +172 -0
  266. package/frontend/src/features/realtime/pages/RealtimeMessagesPage.tsx +211 -0
  267. package/frontend/src/features/realtime/pages/RealtimePermissionsPage.tsx +191 -0
  268. package/frontend/src/features/realtime/services/realtime.service.ts +107 -0
  269. package/frontend/src/features/storage/{page → pages}/StoragePage.tsx +1 -29
  270. package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +3 -3
  271. package/frontend/src/features/visualizer/{page → pages}/VisualizerPage.tsx +1 -35
  272. package/frontend/src/lib/contexts/SocketContext.tsx +119 -75
  273. package/frontend/src/lib/routing/AppRoutes.tsx +35 -20
  274. package/frontend/src/lib/utils/cloudMessaging.ts +1 -1
  275. package/frontend/src/lib/utils/menuItems.ts +24 -0
  276. package/frontend/src/lib/utils/utils.ts +14 -1
  277. package/frontend/tsconfig.json +25 -25
  278. package/frontend/tsconfig.node.json +9 -9
  279. package/functions/deno.json +24 -24
  280. package/functions/server.ts +315 -315
  281. package/i18n/README.ar.md +130 -130
  282. package/i18n/README.de.md +130 -130
  283. package/i18n/README.es.md +154 -154
  284. package/i18n/README.fr.md +134 -134
  285. package/i18n/README.hi.md +129 -129
  286. package/i18n/README.ja.md +174 -174
  287. package/i18n/README.ko.md +136 -136
  288. package/i18n/README.pt-BR.md +131 -131
  289. package/i18n/README.ru.md +129 -129
  290. package/i18n/README.zh-CN.md +133 -133
  291. package/openapi/ai.yaml +715 -715
  292. package/openapi/auth.yaml +1244 -1244
  293. package/openapi/email.yaml +158 -0
  294. package/openapi/functions.yaml +475 -475
  295. package/openapi/health.yaml +29 -29
  296. package/openapi/logs.yaml +223 -223
  297. package/openapi/metadata.yaml +177 -177
  298. package/openapi/realtime.yaml +699 -0
  299. package/openapi/records.yaml +381 -381
  300. package/openapi/secrets.yaml +370 -370
  301. package/openapi/storage.yaml +875 -875
  302. package/openapi/tables.yaml +463 -463
  303. package/package.json +97 -97
  304. package/shared-schemas/package.json +31 -31
  305. package/shared-schemas/src/ai.schema.ts +63 -59
  306. package/shared-schemas/src/auth-api.schema.ts +352 -339
  307. package/shared-schemas/src/auth.schema.ts +1 -1
  308. package/shared-schemas/src/database-api.schema.ts +32 -1
  309. package/shared-schemas/src/database.schema.ts +39 -0
  310. package/shared-schemas/src/docs.schema.ts +26 -0
  311. package/shared-schemas/src/email-api.schema.ts +30 -0
  312. package/shared-schemas/src/index.ts +4 -0
  313. package/shared-schemas/src/metadata.schema.ts +9 -0
  314. package/shared-schemas/src/realtime-api.schema.ts +111 -0
  315. package/shared-schemas/src/realtime.schema.ts +143 -0
  316. package/shared-schemas/tsconfig.json +21 -21
  317. package/tsconfig.json +7 -7
  318. package/zeabur/README.md +13 -13
  319. package/zeabur/template.yml +1032 -1032
  320. package/.cursor/rules/cursor-rules.mdc +0 -94
  321. package/frontend/src/features/database/hooks/useFullMetadata.ts +0 -18
  322. package/test-gemini.sh +0 -35
  323. package/test-usage-admin.sh +0 -57
  324. package/test-usage.sh +0 -50
  325. /package/frontend/src/features/ai/{page → pages}/AIPage.tsx +0 -0
  326. /package/frontend/src/features/auth/{page → pages}/AuthMethodsPage.tsx +0 -0
  327. /package/frontend/src/features/auth/{page → pages}/ConfigurationPage.tsx +0 -0
  328. /package/frontend/src/features/dashboard/{page → pages}/DashboardPage.tsx +0 -0
  329. /package/frontend/src/features/database/{page → pages}/SQLEditorPage.tsx +0 -0
  330. /package/frontend/src/features/database/{page → pages}/TemplatesPage.tsx +0 -0
  331. /package/frontend/src/features/login/{page → pages}/CloudLoginPage.tsx +0 -0
  332. /package/frontend/src/features/login/{page → pages}/LoginPage.tsx +0 -0
  333. /package/frontend/src/features/logs/{page → pages}/AuditsPage.tsx +0 -0
  334. /package/frontend/src/features/logs/{page → pages}/LogsPage.tsx +0 -0
  335. /package/frontend/src/features/logs/{page → pages}/MCPLogsPage.tsx +0 -0
@@ -0,0 +1,101 @@
1
+ ---
2
+ title: Architecture
3
+ description: Transactional email delivery powered by AWS SES
4
+ ---
5
+
6
+ <Note>**Private Preview** - This feature is currently in private preview.</Note>
7
+
8
+ ## Overview
9
+
10
+ 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.
11
+
12
+ ## Technology Stack
13
+
14
+ ```mermaid
15
+ graph TB
16
+ Client[Client Application] --> SDK[InsForge SDK]
17
+ SDK --> API[Email API]
18
+ API --> Cloud[InsForge Cloud]
19
+ Cloud --> SES[AWS SES]
20
+ SES --> Inbox[Recipient Inbox]
21
+
22
+ style Client fill:#1e293b,stroke:#475569,color:#e2e8f0
23
+ style SDK fill:#1e40af,stroke:#3b82f6,color:#dbeafe
24
+ style API fill:#166534,stroke:#22c55e,color:#dcfce7
25
+ style Cloud fill:#7c3aed,stroke:#a78bfa,color:#ede9fe
26
+ style SES fill:#ea580c,stroke:#f97316,color:#fed7aa
27
+ style Inbox fill:#0e7490,stroke:#06b6d4,color:#cffafe
28
+ ```
29
+
30
+ ## How It Works
31
+
32
+ 1. **SDK Call** - Your application calls `emails.send()` with recipients and HTML content
33
+ 2. **API Processing** - Request is validated and authenticated
34
+ 3. **Cloud Delivery** - InsForge Cloud queues and sends via AWS SES
35
+ 4. **Delivery** - Email is delivered to recipient inboxes
36
+
37
+ ```mermaid
38
+ sequenceDiagram
39
+ participant App as Your App
40
+ participant SDK as InsForge SDK
41
+ participant API as Email API
42
+ participant SES as AWS SES
43
+
44
+ App->>SDK: emails.send({to, subject, html})
45
+ SDK->>API: POST /api/email/send-raw
46
+ API->>SES: Queue for delivery
47
+ SES-->>API: Accepted
48
+ API-->>SDK: Success
49
+ SDK-->>App: {data, error}
50
+ ```
51
+
52
+ ## Key Features
53
+
54
+ <CardGroup cols={2}>
55
+ <Card title="High Deliverability" icon="inbox">
56
+ AWS SES infrastructure with optimized sending reputation
57
+ </Card>
58
+
59
+ <Card title="Multiple Recipients" icon="users">
60
+ Send to up to 50 recipients per request with CC/BCC support
61
+ </Card>
62
+
63
+ <Card title="Custom Sender" icon="signature">
64
+ Customize the sender display name for your brand
65
+ </Card>
66
+
67
+ <Card title="HTML Content" icon="code">
68
+ Full HTML email support for rich formatting
69
+ </Card>
70
+ </CardGroup>
71
+
72
+ ## Rate Limits
73
+
74
+ | Plan | Limit |
75
+ |------|-------|
76
+ | **Starter** | 10 emails per hour |
77
+ | **Pro** | 50 emails per hour |
78
+
79
+ <Note>
80
+ Custom transactional emails require a paid plan. Authentication emails (verification, password reset) are included in all plans.
81
+ </Note>
82
+
83
+ ## Best Practices
84
+
85
+ <CardGroup cols={2}>
86
+ <Card title="Validate Recipients" icon="at">
87
+ Verify email addresses before sending to maintain deliverability
88
+ </Card>
89
+
90
+ <Card title="Meaningful Content" icon="envelope-open-text">
91
+ Send relevant, expected emails to avoid spam reports
92
+ </Card>
93
+
94
+ <Card title="Handle Errors" icon="triangle-exclamation">
95
+ Always check the error response and handle failures gracefully
96
+ </Card>
97
+
98
+ <Card title="Respect Limits" icon="gauge">
99
+ Implement queuing for bulk sends to stay within rate limits
100
+ </Card>
101
+ </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: 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