insforge 0.3.3 → 1.2.10

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 (507) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.cursor/rules/cursor-rules.mdc +94 -0
  3. package/.dockerignore +3 -0
  4. package/.env.example +33 -4
  5. package/.github/ISSUE_TEMPLATE/bug_report.yml +13 -60
  6. package/.github/ISSUE_TEMPLATE/config.yml +2 -2
  7. package/.github/ISSUE_TEMPLATE/feature_request.yml +10 -63
  8. package/.github/PULL_REQUEST_TEMPLATE.md +7 -0
  9. package/.github/workflows/build-image.yml +2 -1
  10. package/.github/workflows/e2e.yml +63 -0
  11. package/CHANGELOG.md +41 -0
  12. package/CLAUDE_PLUGIN.md +104 -0
  13. package/CODE_OF_CONDUCT.md +128 -0
  14. package/CONTRIBUTING.md +1 -1
  15. package/Dockerfile +4 -1
  16. package/README.md +66 -18
  17. package/assets/mcpInstallv2.png +0 -0
  18. package/assets/sampleResponse.png +0 -0
  19. package/auth/index.html +13 -0
  20. package/auth/package.json +28 -0
  21. package/auth/public/favicon.ico +0 -0
  22. package/auth/src/App.tsx +33 -0
  23. package/auth/src/components/ErrorCard.tsx +37 -0
  24. package/auth/src/components/Layout.tsx +13 -0
  25. package/auth/src/index.css +19 -0
  26. package/auth/src/lib/broadcastService.ts +115 -0
  27. package/auth/src/lib/utils.ts +11 -0
  28. package/auth/src/main.tsx +22 -0
  29. package/auth/src/pages/ForgotPasswordPage.tsx +11 -0
  30. package/auth/src/pages/ResetPasswordPage.tsx +11 -0
  31. package/auth/src/pages/SignInPage.tsx +57 -0
  32. package/auth/src/pages/SignUpPage.tsx +57 -0
  33. package/auth/src/pages/VerifyEmailPage.tsx +20 -0
  34. package/auth/src/vite-env.d.ts +10 -0
  35. package/auth/tsconfig.json +32 -0
  36. package/auth/tsconfig.node.json +11 -0
  37. package/auth/vite.config.ts +25 -0
  38. package/backend/package.json +9 -9
  39. package/backend/src/api/{middleware → middlewares}/auth.ts +8 -9
  40. package/backend/src/api/middlewares/rate-limiters.ts +127 -0
  41. package/backend/src/api/routes/{ai.ts → ai/index.routes.ts} +20 -24
  42. package/backend/src/api/routes/auth/index.routes.ts +570 -0
  43. package/backend/src/api/routes/auth/oauth.routes.ts +448 -0
  44. package/backend/src/api/routes/{database.advance.ts → database/advance.routes.ts} +107 -65
  45. package/backend/src/api/routes/database/index.routes.ts +13 -0
  46. package/backend/src/api/routes/{database.records.ts → database/records.routes.ts} +22 -8
  47. package/backend/src/api/routes/{database.tables.ts → database/tables.routes.ts} +20 -23
  48. package/backend/src/api/routes/docs/index.routes.ts +76 -0
  49. package/backend/src/api/routes/functions/index.routes.ts +188 -0
  50. package/backend/src/api/routes/{logs.ts → logs/index.routes.ts} +25 -30
  51. package/backend/src/api/routes/{metadata.ts → metadata/index.routes.ts} +21 -31
  52. package/backend/src/api/routes/{secrets.ts → secrets/index.routes.ts} +27 -22
  53. package/backend/src/api/routes/{storage.ts → storage/index.routes.ts} +34 -53
  54. package/backend/src/api/routes/usage/index.routes.ts +89 -0
  55. package/backend/src/infra/config/app.config.ts +51 -0
  56. package/backend/src/{core/database/manager.ts → infra/database/database.manager.ts} +76 -85
  57. package/backend/src/infra/database/migrations/013_create-auth-schema-functions.sql +44 -0
  58. package/backend/src/infra/database/migrations/014_add-updated-at-trigger-user-table.sql +8 -0
  59. package/backend/src/infra/database/migrations/015_create-auth-config-and-email-otp-tables.sql +60 -0
  60. package/backend/src/infra/database/migrations/016_update-auth-config-and-email-otp.sql +24 -0
  61. package/backend/src/{core/secrets/encryption.ts → infra/security/encryption.manager.ts} +3 -2
  62. package/backend/src/infra/security/token.manager.ts +125 -0
  63. package/backend/src/{core/socket/socket.ts → infra/socket/socket.manager.ts} +15 -15
  64. package/backend/src/providers/ai/openrouter.provider.ts +377 -0
  65. package/backend/src/providers/email/base.provider.ts +41 -0
  66. package/backend/src/providers/email/cloud.provider.ts +187 -0
  67. package/backend/src/{core/logs/providers → providers/logs}/base.provider.ts +11 -11
  68. package/backend/src/{core/logs/providers → providers/logs}/cloudwatch.provider.ts +61 -38
  69. package/backend/src/providers/logs/local.provider.ts +185 -0
  70. package/backend/src/providers/oauth/base.provider.ts +29 -0
  71. package/backend/src/providers/oauth/discord.provider.ts +195 -0
  72. package/backend/src/providers/oauth/facebook.provider.ts +194 -0
  73. package/backend/src/providers/oauth/github.provider.ts +208 -0
  74. package/backend/src/providers/oauth/google.provider.ts +249 -0
  75. package/backend/src/providers/oauth/index.ts +7 -0
  76. package/backend/src/providers/oauth/linkedin.provider.ts +240 -0
  77. package/backend/src/providers/oauth/microsoft.provider.ts +169 -0
  78. package/backend/src/providers/oauth/x.provider.ts +202 -0
  79. package/backend/src/providers/storage/base.provider.ts +29 -0
  80. package/backend/src/providers/storage/local.provider.ts +103 -0
  81. package/backend/src/providers/storage/s3.provider.ts +313 -0
  82. package/backend/src/server.ts +70 -74
  83. package/backend/src/{core/ai/config.ts → services/ai/ai-config.service.ts} +19 -24
  84. package/backend/src/services/ai/ai-model.service.ts +60 -0
  85. package/backend/src/{core/ai/usage.ts → services/ai/ai-usage.service.ts} +28 -35
  86. package/backend/src/{core/ai/chat.ts → services/ai/chat-completion.service.ts} +37 -24
  87. package/backend/src/services/ai/helpers.ts +64 -0
  88. package/backend/src/{core/ai/image.ts → services/ai/image-generation.service.ts} +17 -19
  89. package/backend/src/services/ai/index.ts +13 -0
  90. package/backend/src/services/auth/auth-config.service.ts +250 -0
  91. package/backend/src/services/auth/auth-otp.service.ts +424 -0
  92. package/backend/src/services/auth/auth.service.ts +1136 -0
  93. package/backend/src/services/auth/index.ts +4 -0
  94. package/backend/src/{core/auth/oauth.ts → services/auth/oauth-config.service.ts} +106 -52
  95. package/backend/src/{core/database/advance.ts → services/database/database-advance.service.ts} +97 -131
  96. package/backend/src/services/database/database-table.service.ts +811 -0
  97. package/backend/src/services/email/email.service.ts +75 -0
  98. package/backend/src/{core/functions/functions.ts → services/functions/function.service.ts} +95 -88
  99. package/backend/src/{core/logs/audit.ts → services/logs/audit.service.ts} +92 -75
  100. package/backend/src/services/logs/log.service.ts +73 -0
  101. package/backend/src/{core/secrets/secrets.ts → services/secrets/secret.service.ts} +48 -66
  102. package/backend/src/services/storage/storage.service.ts +617 -0
  103. package/backend/src/services/usage/usage.service.ts +149 -0
  104. package/backend/src/types/auth.ts +66 -2
  105. package/backend/src/types/email.ts +8 -0
  106. package/backend/src/types/error-constants.ts +4 -0
  107. package/backend/src/types/logs.ts +0 -29
  108. package/backend/src/{core/socket/types.ts → types/socket.ts} +5 -6
  109. package/backend/src/utils/environment.ts +9 -3
  110. package/backend/src/utils/logger.ts +20 -2
  111. package/backend/src/utils/seed.ts +150 -57
  112. package/backend/src/utils/sql-parser.ts +1 -1
  113. package/backend/src/utils/utils.ts +114 -0
  114. package/backend/src/utils/validations.ts +40 -4
  115. package/backend/tests/local/test-ai-config.sh +129 -0
  116. package/backend/tests/local/test-ai-usage.sh +80 -0
  117. package/backend/tests/local/test-auth-router.sh +1 -1
  118. package/backend/tests/local/test-e2e.sh +1 -1
  119. package/backend/tests/local/test-functions.sh +123 -0
  120. package/backend/tests/local/test-logs.sh +132 -0
  121. package/backend/tests/local/test-public-bucket.sh +3 -3
  122. package/backend/tests/local/test-secrets.sh +14 -12
  123. package/backend/tests/local/test-traditional-rest.sh +2 -2
  124. package/backend/tests/manual/test-rawsql-modes.sh +244 -0
  125. package/backend/tests/test-config.sh +37 -1
  126. package/backend/tests/unit/cloud-token.test.ts +48 -0
  127. package/backend/tests/unit/constant.test.ts +8 -0
  128. package/backend/tests/unit/email.test.ts +372 -0
  129. package/backend/tests/unit/environment.test.ts +59 -0
  130. package/backend/tests/unit/helpers.test.ts +63 -0
  131. package/backend/tests/unit/logger.test.ts +22 -0
  132. package/backend/tests/unit/rate-limit.test.ts +154 -0
  133. package/backend/tests/unit/response.test.ts +58 -0
  134. package/backend/tests/unit/sql-parser.test.ts +74 -0
  135. package/backend/tests/unit/uuid.test.ts +21 -0
  136. package/backend/tests/unit/validations.test.ts +80 -0
  137. package/backend/tsconfig.json +1 -1
  138. package/backend/vitest.config.ts +11 -0
  139. package/claude-plugin/.claude-plugin/plugin.json +24 -0
  140. package/claude-plugin/README.md +133 -0
  141. package/claude-plugin/skills/insforge-schema-patterns/SKILL.md +270 -0
  142. package/docker-compose.prod.yml +60 -4
  143. package/docker-compose.yml +65 -4
  144. package/docker-init/db/db-init.sql +6 -34
  145. package/docker-init/logs/vector.yml +236 -0
  146. package/docs/README.md +44 -0
  147. package/docs/changelog.mdx +67 -0
  148. package/docs/core-concepts/ai/architecture.mdx +373 -0
  149. package/docs/core-concepts/ai/sdk.mdx +213 -0
  150. package/docs/core-concepts/authentication/architecture.mdx +278 -0
  151. package/docs/core-concepts/authentication/sdk.mdx +414 -0
  152. package/docs/core-concepts/authentication/ui-components/customization.mdx +529 -0
  153. package/docs/core-concepts/authentication/ui-components/nextjs.mdx +221 -0
  154. package/docs/core-concepts/authentication/ui-components/react-router.mdx +184 -0
  155. package/docs/core-concepts/authentication/ui-components/react.mdx +129 -0
  156. package/docs/core-concepts/database/architecture.mdx +256 -0
  157. package/docs/core-concepts/database/sdk.mdx +382 -0
  158. package/docs/core-concepts/functions/architecture.mdx +105 -0
  159. package/docs/core-concepts/functions/sdk.mdx +184 -0
  160. package/docs/core-concepts/storage/architecture.mdx +243 -0
  161. package/docs/core-concepts/storage/sdk.mdx +253 -0
  162. package/docs/deployment/README.md +94 -0
  163. package/docs/deployment/deploy-to-aws-ec2.md +565 -0
  164. package/docs/deployment/deploy-to-azure-virtual-machines.md +313 -0
  165. package/docs/deployment/deploy-to-google-cloud-compute-engine.md +613 -0
  166. package/docs/deployment/deploy-to-render.md +441 -0
  167. package/docs/docs.json +210 -0
  168. package/docs/examples/framework-guides/nextjs.mdx +131 -0
  169. package/docs/examples/framework-guides/nuxt.mdx +165 -0
  170. package/docs/examples/framework-guides/react.mdx +165 -0
  171. package/docs/examples/framework-guides/svelte.mdx +153 -0
  172. package/docs/examples/framework-guides/vue.mdx +159 -0
  173. package/docs/examples/overview.mdx +67 -0
  174. package/docs/favicon.svg +19 -0
  175. package/docs/images/changelog/nov-2025/auth-components.webp +0 -0
  176. package/docs/images/changelog/nov-2025/database-metadata.webp +0 -0
  177. package/docs/images/changelog/nov-2025/quickstart-prompts.webp +0 -0
  178. package/docs/images/changelog/nov-2025/sql-editor.webp +0 -0
  179. package/docs/images/changelog/nov-2025/usage-page.webp +0 -0
  180. package/docs/images/changelog/october-2025/csv-upload.webp +0 -0
  181. package/docs/images/changelog/october-2025/logs-feature.webp +0 -0
  182. package/docs/images/changelog/october-2025/oauth-providers.webp +0 -0
  183. package/docs/images/checks-passed.png +0 -0
  184. package/docs/images/dashboard-connect-expanded.png +0 -0
  185. package/docs/images/dashboard-connect.png +0 -0
  186. package/docs/images/hero-dark.png +0 -0
  187. package/docs/images/hero-light.png +0 -0
  188. package/docs/images/icons/ai.svg +4 -0
  189. package/docs/images/icons/auth.svg +1 -0
  190. package/docs/images/icons/database.svg +1 -0
  191. package/docs/images/icons/function.svg +1 -0
  192. package/docs/images/icons/storage.svg +1 -0
  193. package/docs/images/logos/nextjs.svg +4 -0
  194. package/docs/images/logos/nuxt.svg +4 -0
  195. package/docs/images/logos/react.svg +5 -0
  196. package/docs/images/logos/svelte.svg +4 -0
  197. package/docs/images/logos/vue.svg +5 -0
  198. package/docs/images/mcp-install.png +0 -0
  199. package/docs/images/onboarding-mcp.png +0 -0
  200. package/docs/insforge-instructions-sdk.md +55 -374
  201. package/docs/introduction.mdx +45 -0
  202. package/docs/logo/dark.svg +22 -0
  203. package/docs/logo/light.svg +20 -0
  204. package/docs/partnership.mdx +647 -0
  205. package/docs/quickstart.mdx +83 -0
  206. package/docs/showcase/2048-arena.png +0 -0
  207. package/docs/showcase/framegen-cloud.png +0 -0
  208. package/docs/showcase/line-connect-race.png +0 -0
  209. package/docs/showcase/moment-vibe.png +0 -0
  210. package/docs/showcase/national-flags.png +0 -0
  211. package/docs/showcase/pokemon-vibe.png +0 -0
  212. package/docs/showcase/pure-browse-buy.png +0 -0
  213. package/docs/showcase.mdx +52 -0
  214. package/docs/snippets/sdk-installation.mdx +22 -0
  215. package/docs/snippets/service-icons.mdx +27 -0
  216. package/eslint.config.js +10 -3
  217. package/frontend/package.json +10 -4
  218. package/frontend/src/App.tsx +13 -82
  219. package/frontend/src/assets/icons/connected.svg +3 -0
  220. package/frontend/src/assets/icons/loader.svg +9 -0
  221. package/frontend/src/assets/logos/apple.svg +4 -0
  222. package/frontend/src/assets/logos/discord.svg +1 -1
  223. package/frontend/src/assets/logos/facebook.svg +3 -0
  224. package/frontend/src/assets/logos/instagram.svg +2 -0
  225. package/frontend/src/assets/logos/linkedin.svg +3 -0
  226. package/frontend/src/assets/logos/microsoft.svg +1 -0
  227. package/frontend/src/assets/logos/spotify.svg +17 -0
  228. package/frontend/src/assets/logos/tiktok.svg +6 -0
  229. package/frontend/src/assets/logos/x.svg +3 -0
  230. package/frontend/src/components/Checkbox.tsx +27 -29
  231. package/frontend/src/components/CodeBlock.tsx +55 -2
  232. package/frontend/src/components/CodeEditor.tsx +92 -0
  233. package/frontend/src/components/ConfirmDialog.tsx +1 -1
  234. package/frontend/src/components/ConnectCTA.tsx +38 -0
  235. package/frontend/src/components/CopyButton.tsx +52 -15
  236. package/frontend/src/components/ErrorState.tsx +1 -2
  237. package/frontend/src/components/FeatureSidebar.tsx +6 -6
  238. package/frontend/src/components/FeatureSidebarItem.tsx +2 -2
  239. package/frontend/src/components/JsonHighlight.tsx +21 -9
  240. package/frontend/src/components/ProjectInfoModal.tsx +128 -0
  241. package/frontend/src/components/PromptDialog.tsx +1 -4
  242. package/frontend/src/components/SearchInput.tsx +1 -2
  243. package/frontend/src/components/Stepper.tsx +53 -0
  244. package/frontend/src/components/ThemeToggle.tsx +3 -3
  245. package/frontend/src/components/datagrid/DataGrid.tsx +25 -32
  246. package/frontend/src/components/datagrid/cell-editors/DateCellEditor.tsx +1 -2
  247. package/frontend/src/components/datagrid/cell-editors/JsonCellEditor.tsx +2 -4
  248. package/frontend/src/components/datagrid/index.ts +23 -0
  249. package/frontend/src/components/index.ts +23 -30
  250. package/frontend/src/components/layout/AppHeader.tsx +133 -92
  251. package/frontend/src/components/layout/AppSidebar.tsx +80 -170
  252. package/frontend/src/components/layout/Layout.tsx +12 -23
  253. package/frontend/src/components/layout/PrimaryMenu.tsx +187 -0
  254. package/frontend/src/components/layout/SecondaryMenu.tsx +70 -0
  255. package/frontend/src/components/layout/index.ts +5 -0
  256. package/frontend/src/components/radix/Tooltip.tsx +24 -13
  257. package/frontend/src/components/radix/index.ts +22 -0
  258. package/frontend/src/features/ai/components/AIConfigCard.tsx +129 -83
  259. package/frontend/src/features/ai/components/AIEmptyState.tsx +12 -7
  260. package/frontend/src/features/ai/components/ModalityFilterSidebar.tsx +101 -0
  261. package/frontend/src/features/ai/components/ModelSelectionDialog.tsx +135 -0
  262. package/frontend/src/features/ai/components/ModelSelectionGrid.tsx +51 -0
  263. package/frontend/src/features/ai/components/SystemPromptDialog.tsx +118 -0
  264. package/frontend/src/features/ai/components/index.ts +6 -0
  265. package/frontend/src/features/ai/helpers.ts +57 -71
  266. package/frontend/src/features/ai/hooks/useAIConfigs.ts +39 -113
  267. package/frontend/src/features/ai/hooks/useAIUsage.ts +0 -2
  268. package/frontend/src/features/ai/page/AIPage.tsx +67 -79
  269. package/frontend/src/features/ai/services/ai.service.ts +5 -5
  270. package/frontend/src/features/auth/components/AuthPreview.tsx +96 -0
  271. package/frontend/src/features/auth/components/OAuthConfigDialog.tsx +53 -30
  272. package/frontend/src/features/auth/components/UserFormDialog.tsx +13 -6
  273. package/frontend/src/features/auth/components/UsersDataGrid.tsx +44 -14
  274. package/frontend/src/features/auth/components/index.ts +5 -0
  275. package/frontend/src/features/auth/helpers.tsx +200 -0
  276. package/frontend/src/features/auth/hooks/useAnonToken.ts +30 -0
  277. package/frontend/src/features/auth/hooks/useAuthConfig.ts +48 -0
  278. package/frontend/src/features/auth/hooks/useOAuthConfig.ts +14 -10
  279. package/frontend/src/features/auth/hooks/useUsers.ts +43 -5
  280. package/frontend/src/features/auth/index.ts +3 -2
  281. package/frontend/src/features/auth/page/AuthMethodsPage.tsx +275 -0
  282. package/frontend/src/features/auth/page/ConfigurationPage.tsx +395 -0
  283. package/frontend/src/features/auth/page/UsersPage.tsx +285 -0
  284. package/frontend/src/features/auth/services/anonToken.service.ts +11 -0
  285. package/frontend/src/features/auth/services/config.service.ts +19 -0
  286. package/frontend/src/features/auth/services/{oauth.service.ts → oauth-config.service.ts} +4 -4
  287. package/frontend/src/features/auth/services/{auth.service.ts → user.service.ts} +7 -53
  288. package/frontend/src/features/dashboard/components/ConnectionSuccessBanner.tsx +35 -0
  289. package/frontend/src/features/dashboard/components/PromptCard.tsx +21 -0
  290. package/frontend/src/features/dashboard/components/PromptDialog.tsx +103 -0
  291. package/frontend/src/features/dashboard/components/StatsCard.tsx +50 -0
  292. package/frontend/src/features/dashboard/components/index.ts +4 -0
  293. package/frontend/src/features/dashboard/page/DashboardPage.tsx +187 -169
  294. package/frontend/src/features/dashboard/prompts/ai-chatbot.ts +13 -0
  295. package/frontend/src/features/dashboard/prompts/crm-system.ts +13 -0
  296. package/frontend/src/features/dashboard/prompts/ecommerce-platform.ts +12 -0
  297. package/frontend/src/features/dashboard/prompts/index.ts +31 -0
  298. package/frontend/src/features/dashboard/prompts/instagram-clone.ts +11 -0
  299. package/frontend/src/features/dashboard/prompts/notion-clone.ts +14 -0
  300. package/frontend/src/features/dashboard/prompts/reddit-clone.ts +12 -0
  301. package/frontend/src/features/database/components/DatabaseDataGrid.tsx +48 -17
  302. package/frontend/src/features/database/components/ForeignKeyCell.tsx +15 -34
  303. package/frontend/src/features/database/components/ForeignKeyPopover.tsx +19 -20
  304. package/frontend/src/features/database/components/LinkRecordModal.tsx +120 -125
  305. package/frontend/src/features/database/components/RecordFormDialog.tsx +22 -33
  306. package/frontend/src/features/database/components/RecordFormField.tsx +45 -47
  307. package/frontend/src/features/database/components/TableEmptyState.tsx +6 -5
  308. package/frontend/src/features/database/components/TableForm.tsx +28 -15
  309. package/frontend/src/features/database/components/TableFormColumn.tsx +2 -3
  310. package/frontend/src/features/database/components/TableSidebar.tsx +1 -1
  311. package/frontend/src/features/database/components/TablesEmptyState.tsx +48 -0
  312. package/frontend/src/features/database/components/TemplateCard.tsx +37 -0
  313. package/frontend/src/features/database/components/TemplatePreview.tsx +92 -0
  314. package/frontend/src/features/database/components/index.ts +19 -0
  315. package/frontend/src/features/database/constants.ts +28 -2
  316. package/frontend/src/features/database/contexts/SQLEditorContext.tsx +188 -0
  317. package/frontend/src/features/database/helpers.ts +2 -2
  318. package/frontend/src/features/database/hooks/useCSVImport.ts +29 -0
  319. package/frontend/src/features/database/hooks/useFullMetadata.ts +18 -0
  320. package/frontend/src/features/database/hooks/useRawSQL.ts +55 -0
  321. package/frontend/src/features/database/hooks/useRecords.ts +139 -0
  322. package/frontend/src/features/database/hooks/useTables.ts +131 -0
  323. package/frontend/src/features/database/index.ts +6 -1
  324. package/frontend/src/features/database/page/FunctionsPage.tsx +211 -0
  325. package/frontend/src/features/database/page/IndexesPage.tsx +240 -0
  326. package/frontend/src/features/database/page/PoliciesPage.tsx +248 -0
  327. package/frontend/src/features/database/page/SQLEditorPage.tsx +382 -0
  328. package/frontend/src/features/database/page/{DatabasePage.tsx → TablesPage.tsx} +186 -185
  329. package/frontend/src/features/database/page/TemplatesPage.tsx +39 -0
  330. package/frontend/src/features/database/page/TriggersPage.tsx +242 -0
  331. package/frontend/src/features/database/services/advance.service.ts +66 -0
  332. package/frontend/src/features/database/services/{database.service.ts → record.service.ts} +67 -64
  333. package/frontend/src/features/database/services/table.service.ts +64 -0
  334. package/frontend/src/features/database/templates/ai-chatbot.ts +402 -0
  335. package/frontend/src/features/database/templates/crm-system.ts +528 -0
  336. package/frontend/src/features/database/templates/ecommerce-platform.ts +553 -0
  337. package/frontend/src/features/database/templates/index.ts +34 -0
  338. package/frontend/src/features/database/templates/instagram-clone.ts +222 -0
  339. package/frontend/src/features/database/templates/notion-clone.ts +483 -0
  340. package/frontend/src/features/database/templates/reddit-clone.ts +526 -0
  341. package/frontend/src/features/functions/components/FunctionRow.tsx +2 -1
  342. package/frontend/src/features/functions/components/FunctionsSidebar.tsx +1 -1
  343. package/frontend/src/features/functions/components/SecretRow.tsx +1 -1
  344. package/frontend/src/features/functions/components/index.ts +5 -0
  345. package/frontend/src/features/functions/hooks/useFunctions.ts +4 -4
  346. package/frontend/src/features/{secrets → functions}/hooks/useSecrets.ts +5 -5
  347. package/frontend/src/features/functions/page/FunctionsPage.tsx +160 -17
  348. package/frontend/src/features/functions/{components/SecretsContent.tsx → page/SecretsPage.tsx} +8 -12
  349. package/frontend/src/features/functions/services/{functions.service.ts → function.service.ts} +2 -2
  350. package/frontend/src/features/{secrets/services/secrets.service.ts → functions/services/secret.service.ts} +2 -2
  351. package/frontend/src/features/login/hooks/usePartnerOrigin.ts +27 -0
  352. package/frontend/src/features/login/page/CloudLoginPage.tsx +79 -54
  353. package/frontend/src/features/login/page/LoginPage.tsx +16 -23
  354. package/frontend/src/features/login/services/partnership.service.ts +65 -0
  355. package/frontend/src/features/logs/components/LogsDataGrid.tsx +89 -0
  356. package/frontend/src/features/logs/components/SeverityBadge.tsx +18 -0
  357. package/frontend/src/features/logs/components/index.ts +2 -0
  358. package/frontend/src/features/logs/helpers.ts +24 -0
  359. package/frontend/src/features/logs/hooks/useAuditLogs.ts +4 -4
  360. package/frontend/src/features/logs/hooks/useLogSources.ts +137 -0
  361. package/frontend/src/features/logs/hooks/useLogs.ts +163 -0
  362. package/frontend/src/features/logs/hooks/useMcpUsage.ts +181 -0
  363. package/frontend/src/features/logs/index.ts +8 -2
  364. package/frontend/src/features/logs/page/AuditsPage.tsx +91 -38
  365. package/frontend/src/features/logs/page/LogsPage.tsx +152 -0
  366. package/frontend/src/features/logs/page/MCPLogsPage.tsx +84 -0
  367. package/frontend/src/features/logs/services/audit.service.ts +63 -0
  368. package/frontend/src/features/logs/services/log.service.ts +15 -110
  369. package/frontend/src/features/logs/services/usage.service.ts +31 -0
  370. package/frontend/src/features/onboard/components/McpConnectionStatus.tsx +68 -0
  371. package/frontend/src/features/onboard/components/OnboardingModal.tsx +267 -0
  372. package/frontend/src/features/onboard/components/VideoDemoModal.tsx +38 -0
  373. package/frontend/src/features/onboard/components/index.ts +4 -0
  374. package/frontend/src/features/onboard/components/mcp/CursorDeeplinkGenerator.tsx +2 -2
  375. package/frontend/src/features/onboard/components/mcp/{mcp-helper.tsx → helpers.tsx} +8 -8
  376. package/frontend/src/features/onboard/components/mcp/index.ts +2 -3
  377. package/frontend/src/features/onboard/index.ts +13 -3
  378. package/frontend/src/features/storage/components/BucketEmptyState.tsx +9 -6
  379. package/frontend/src/features/storage/components/BucketFormDialog.tsx +25 -41
  380. package/frontend/src/features/storage/components/FilePreviewDialog.tsx +20 -8
  381. package/frontend/src/features/storage/components/StorageDataGrid.tsx +4 -3
  382. package/frontend/src/features/storage/components/StorageManager.tsx +23 -34
  383. package/frontend/src/features/storage/components/index.ts +12 -0
  384. package/frontend/src/features/storage/hooks/useStorage.ts +208 -0
  385. package/frontend/src/features/storage/page/StoragePage.tsx +41 -115
  386. package/frontend/src/features/storage/services/storage.service.ts +22 -1
  387. package/frontend/src/features/visualizer/components/AuthNode.tsx +72 -56
  388. package/frontend/src/features/visualizer/components/BucketNode.tsx +4 -4
  389. package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +108 -80
  390. package/frontend/src/features/visualizer/components/TableNode.tsx +34 -41
  391. package/frontend/src/features/visualizer/components/VisualizerSkeleton.tsx +12 -4
  392. package/frontend/src/features/visualizer/page/VisualizerPage.tsx +33 -29
  393. package/frontend/src/index.css +1 -0
  394. package/frontend/src/lib/analytics/posthog.tsx +27 -0
  395. package/frontend/src/lib/contexts/AuthContext.tsx +38 -31
  396. package/frontend/src/lib/contexts/SocketContext.tsx +5 -6
  397. package/frontend/src/{features/metadata → lib}/hooks/useMetadata.ts +1 -1
  398. package/frontend/src/lib/hooks/useToast.tsx +6 -2
  399. package/frontend/src/lib/routing/AppRoutes.tsx +84 -0
  400. package/frontend/src/lib/routing/RequireAuth.tsx +27 -0
  401. package/frontend/src/lib/utils/cloudMessaging.ts +20 -0
  402. package/frontend/src/lib/utils/menuItems.ts +183 -0
  403. package/frontend/src/lib/utils/{validation-schemas.ts → schemaValidations.ts} +10 -5
  404. package/frontend/src/lib/utils/utils.ts +19 -1
  405. package/frontend/src/vite-env.d.ts +1 -0
  406. package/frontend/vite.config.ts +5 -3
  407. package/functions/server.ts +28 -3
  408. package/functions/worker-template.js +15 -4
  409. package/i18n/README.ar.md +130 -0
  410. package/i18n/README.de.md +130 -0
  411. package/i18n/README.es.md +154 -0
  412. package/i18n/README.fr.md +134 -0
  413. package/i18n/README.hi.md +129 -0
  414. package/i18n/README.ja.md +174 -0
  415. package/i18n/README.ko.md +137 -0
  416. package/i18n/README.pt-BR.md +131 -0
  417. package/i18n/README.ru.md +129 -0
  418. package/i18n/README.zh-CN.md +133 -0
  419. package/openapi/ai.yaml +31 -4
  420. package/openapi/auth.yaml +827 -146
  421. package/package.json +16 -7
  422. package/shared-schemas/package.json +1 -1
  423. package/shared-schemas/src/ai-api.schema.ts +34 -58
  424. package/shared-schemas/src/ai.schema.ts +5 -0
  425. package/shared-schemas/src/auth-api.schema.ts +154 -8
  426. package/shared-schemas/src/auth.schema.ts +42 -6
  427. package/shared-schemas/src/cloud-events.schema.ts +57 -0
  428. package/shared-schemas/src/database-api.schema.ts +3 -3
  429. package/shared-schemas/src/database.schema.ts +1 -1
  430. package/shared-schemas/src/index.ts +1 -0
  431. package/shared-schemas/src/logs-api.schema.ts +7 -1
  432. package/shared-schemas/src/logs.schema.ts +26 -0
  433. package/shared-schemas/src/metadata.schema.ts +9 -4
  434. package/test-gemini.sh +35 -0
  435. package/test-usage-admin.sh +57 -0
  436. package/test-usage.sh +50 -0
  437. package/zeabur/README.md +13 -0
  438. package/zeabur/template.yml +1032 -0
  439. package/.github/workflows/deploy-aws.yml +0 -130
  440. package/backend/src/api/routes/agent.ts +0 -29
  441. package/backend/src/api/routes/auth.oauth.ts +0 -482
  442. package/backend/src/api/routes/auth.ts +0 -386
  443. package/backend/src/api/routes/docs.ts +0 -66
  444. package/backend/src/api/routes/functions.ts +0 -183
  445. package/backend/src/api/routes/openapi.ts +0 -82
  446. package/backend/src/api/routes/usage.ts +0 -96
  447. package/backend/src/core/ai/client.ts +0 -242
  448. package/backend/src/core/ai/model.ts +0 -117
  449. package/backend/src/core/auth/auth.ts +0 -780
  450. package/backend/src/core/database/table.ts +0 -772
  451. package/backend/src/core/documentation/agent.ts +0 -689
  452. package/backend/src/core/documentation/openapi.ts +0 -856
  453. package/backend/src/core/logs/analytics.ts +0 -76
  454. package/backend/src/core/logs/providers/localdb.provider.ts +0 -246
  455. package/backend/src/core/storage/storage.ts +0 -923
  456. package/backend/src/utils/cloud-token.ts +0 -39
  457. package/backend/src/utils/helpers.ts +0 -49
  458. package/backend/src/utils/uuid.ts +0 -9
  459. package/backend/tests/manual/test-better-auth.sh +0 -303
  460. package/docker-init/db/logs.sql +0 -9
  461. package/frontend/README.md +0 -112
  462. package/frontend/src/components/datagrid/index.tsx +0 -20
  463. package/frontend/src/components/layout/CloudLayout.tsx +0 -95
  464. package/frontend/src/features/ai/components/AIConfigDialog.tsx +0 -76
  465. package/frontend/src/features/ai/components/AIConfigForm.tsx +0 -222
  466. package/frontend/src/features/ai/components/fields/ModalityField.tsx +0 -87
  467. package/frontend/src/features/ai/components/fields/ModelSelectionField.tsx +0 -134
  468. package/frontend/src/features/ai/components/fields/SystemPromptField.tsx +0 -33
  469. package/frontend/src/features/auth/components/AddOAuthDialog.tsx +0 -106
  470. package/frontend/src/features/auth/components/AuthMethodTab.tsx +0 -238
  471. package/frontend/src/features/auth/components/UsersTab.tsx +0 -114
  472. package/frontend/src/features/auth/page/AuthenticationPage.tsx +0 -169
  473. package/frontend/src/features/database/hooks/UseLinkModal.tsx +0 -78
  474. package/frontend/src/features/functions/components/FunctionViewer.tsx +0 -46
  475. package/frontend/src/features/functions/components/FunctionsContent.tsx +0 -88
  476. package/frontend/src/features/login/components/AuthErrorBoundary.tsx +0 -87
  477. package/frontend/src/features/login/components/PrivateRoute.tsx +0 -24
  478. package/frontend/src/features/logs/components/AnalyticsLogsTable.tsx +0 -313
  479. package/frontend/src/features/logs/components/LogsTable.tsx +0 -199
  480. package/frontend/src/features/logs/page/AnalyticsLogsPage.tsx +0 -530
  481. package/frontend/src/features/metadata/index.ts +0 -0
  482. package/frontend/src/features/metadata/page/MetadataPage.tsx +0 -136
  483. package/frontend/src/features/onboard/components/CompletionCard.tsx +0 -41
  484. package/frontend/src/features/onboard/components/OnboardButton.tsx +0 -84
  485. package/frontend/src/features/onboard/components/StepContent.tsx +0 -91
  486. package/frontend/src/features/onboard/components/TestConnectionStep.tsx +0 -53
  487. package/frontend/src/features/onboard/components/mcp/McpInstallation.tsx +0 -144
  488. package/frontend/src/features/onboard/page/OnBoardPage.tsx +0 -104
  489. package/frontend/src/features/onboard/types.ts +0 -8
  490. package/frontend/src/lib/contexts/OnboardStepContext.tsx +0 -68
  491. package/frontend/src/lib/hooks/useOnboardingCompletion.ts +0 -29
  492. /package/backend/src/api/{middleware → middlewares}/error.ts +0 -0
  493. /package/backend/src/api/{middleware → middlewares}/upload.ts +0 -0
  494. /package/backend/{migrations → src/infra/database/migrations}/000_create-base-tables.sql +0 -0
  495. /package/backend/{migrations → src/infra/database/migrations}/001_create-helper-functions.sql +0 -0
  496. /package/backend/{migrations → src/infra/database/migrations}/002_rename-auth-tables.sql +0 -0
  497. /package/backend/{migrations → src/infra/database/migrations}/003_create-users-table.sql +0 -0
  498. /package/backend/{migrations → src/infra/database/migrations}/004_add-reload-postgrest-func.sql +0 -0
  499. /package/backend/{migrations → src/infra/database/migrations}/005_enable-project-admin-modify-users.sql +0 -0
  500. /package/backend/{migrations → src/infra/database/migrations}/006_modify-ai-usage-table.sql +0 -0
  501. /package/backend/{migrations → src/infra/database/migrations}/007_drop-metadata-table.sql +0 -0
  502. /package/backend/{migrations → src/infra/database/migrations}/008_add-system-tables.sql +0 -0
  503. /package/backend/{migrations → src/infra/database/migrations}/009_add-function-secrets.sql +0 -0
  504. /package/backend/{migrations → src/infra/database/migrations}/010_modify-ai-config-modalities.sql +0 -0
  505. /package/backend/{migrations → src/infra/database/migrations}/011_refactor-secrets-table.sql +0 -0
  506. /package/backend/{migrations → src/infra/database/migrations}/012_add-storage-uploaded-by.sql +0 -0
  507. /package/frontend/src/{features/metadata → lib}/services/metadata.service.ts +0 -0
@@ -0,0 +1,647 @@
1
+ ---
2
+ title: Partner Integration
3
+ description: Learn how to integrate InsForge as a partner platform through co-branded or white-label partnerships
4
+ ---
5
+
6
+ ## Overview
7
+
8
+ InsForge provides two partnership models that enable seamless integration of our Backend-as-a-Service platform into your applications. Whether you're looking for a co-branded solution or a fully white-labeled experience, we have the right partnership model for you.
9
+
10
+ ## Partnership Models
11
+
12
+ <CardGroup cols={2}>
13
+ <Card title="Co-Branded Partnership" icon="handshake">
14
+ Perfect for platforms that want to offer InsForge alongside their services.
15
+ The integration process is remarkably simple - developers can connect to the InsForge platform with just one click, without complicated OAuth flows.
16
+ </Card>
17
+ <Card title="White-Label Partnership" icon="tag">
18
+ Ideal for platforms seeking complete control over the user experience.
19
+ Offers full project lifecycle management, including project dashboard integration. Developers can complete all operations without ever leaving your partner platform.
20
+ </Card>
21
+ </CardGroup>
22
+
23
+ ## Partnership Benefits
24
+
25
+ <CardGroup cols={2}>
26
+ <Card title="Scalable Infrastructure" icon="server">
27
+ Leverage our robust backend infrastructure without the overhead of maintenance and scaling
28
+ </Card>
29
+ <Card title="Flexible Integration" icon="plug">
30
+ Choose from multiple integration options that best suit your application needs
31
+ </Card>
32
+ <Card title="Revenue Sharing" icon="handshake">
33
+ Benefit from our competitive revenue sharing model for partner applications
34
+ </Card>
35
+ <Card title="Technical Support" icon="headset">
36
+ Get dedicated technical support and resources to ensure smooth integration
37
+ </Card>
38
+ </CardGroup>
39
+
40
+ ## Getting Started
41
+
42
+ <Steps>
43
+ <Step title="Apply for Partnership">
44
+ Submit your partnership application through our [partner email](mailto:partnerships@insforge.dev).
45
+ Specify whether you're interested in co-branded or white-label partnership.
46
+ </Step>
47
+
48
+ <Step title="Receive Partner Credentials">
49
+ Once approved, you'll receive:
50
+ - **Partner ID**: Your unique partner identifier
51
+ - **Secret Key**: Your authentication key for API access
52
+ - Integration documentation and support
53
+ </Step>
54
+
55
+ <Step title="Configure Authentication">
56
+ All API requests must include your secret key for authentication:
57
+
58
+ ```bash
59
+ curl -X POST https://api.insforge.dev/partnership/v1/YOUR_PARTNER_ID/endpoint \
60
+ -H "Content-Type: application/json" \
61
+ -H "X-Partnership-Secret: YOUR_SECRET_KEY"
62
+ ```
63
+ </Step>
64
+
65
+ <Step title="Start Integration">
66
+ Begin integrating based on your partnership model using our API endpoints.
67
+ </Step>
68
+ </Steps>
69
+
70
+ ## Features by Partnership Type
71
+
72
+ ### Co-Branded Features
73
+ In co-branded mode, developers explicitly know they are InsForge platform users (linked through the same email address). After logging into the InsForge platform, developers have full management rights for projects created through partners and need to pay according to InsForge's billing plans.
74
+
75
+ Partner platforms can:
76
+ - ✅ Sync user accounts (name, email) with InsForge
77
+ - ✅ Sync projects to InsForge
78
+ - ✅ Query project connection information to leverage the completed backend capabilities.
79
+
80
+ ### White-Label Features
81
+ In white-label mode, developers are not aware of InsForge's existence and cannot see partner-created projects on the InsForge platform.
82
+
83
+ Partner platforms can:
84
+ - ✅ Create embedded projects
85
+ - ✅ Query project metadata to leverage the completed backend capabilities.
86
+ - ✅ Pause projects
87
+ - ✅ Restore projects
88
+ - ✅ Delete projects
89
+ - ✅ Get project's authorization token for access
90
+ - ✅ Get project's usage
91
+
92
+ ## API Reference
93
+
94
+ <Tabs>
95
+ <Tab title="Co-Branded APIs">
96
+
97
+ ### Connect User Account
98
+ Synchronize user account information with InsForge.
99
+
100
+ ```bash
101
+ POST /partnership/v1/:partnerId/connect-user
102
+ ```
103
+
104
+ **Request Body:**
105
+ ```json
106
+ {
107
+ "name": "John Doe", // required
108
+ "email": "john@example.com" // required
109
+ }
110
+ ```
111
+
112
+ **Response:**
113
+ ```json
114
+ {
115
+ "account": {
116
+ "id": "uuid-string"
117
+ }
118
+ }
119
+ ```
120
+
121
+ ### Sync Project
122
+ Create or synchronize a project for a specific user.
123
+
124
+ ```bash
125
+ POST /partnership/v1/:partnerId/:userId/sync-project
126
+ ```
127
+
128
+ **Request Body:**
129
+ ```json
130
+ {
131
+ "project_name": "my-project", // required
132
+ "region": "us-east", // optional
133
+ "instance_type": "nano" // optional
134
+ }
135
+ ```
136
+
137
+ **Response:**
138
+ ```json
139
+ {
140
+ "success": true,
141
+ "project": {
142
+ "id": "uuid-string",
143
+ "access_host": "https://project.us-east.insforge.app",
144
+ "api_key": "project-api-key",
145
+ "status": "active"
146
+ }
147
+ }
148
+ ```
149
+
150
+ #### Handling Project Limits
151
+ Note: Due to project limits on the InsForge free plan, project synchronization from partner platforms may fail. In such cases, the response will be:
152
+
153
+ ```json
154
+ {
155
+ "success": false,
156
+ "message": "Free plan allows up to 2 active projects. Please upgrade your plan to create more projects.",
157
+ "candidate_projects": [
158
+ {
159
+ "id": "uuid-string",
160
+ "access_host": "https://project2.us-east.insforge.app",
161
+ "api_key": "project-api-key",
162
+ "status": "active"
163
+ }
164
+ ]
165
+ }
166
+ ```
167
+
168
+ Partners can guide users to select existing projects for connection rather than always creating new ones.
169
+
170
+ ### Get Project Metadata
171
+ Retrieve connection information for a specific project.
172
+
173
+ ```bash
174
+ GET /partnership/v1/:partnerId/:userId/:projectId/metadata
175
+ ```
176
+
177
+ **Response:**
178
+ ```json
179
+ {
180
+ "project": {
181
+ "id": "uuid-string",
182
+ "access_host": "https://project.us-east.insforge.app",
183
+ "api_key": "project-api-key",
184
+ "status": "active"
185
+ }
186
+ }
187
+ ```
188
+
189
+ </Tab>
190
+ <Tab title="White-Label APIs">
191
+
192
+ ### Sync Embedded Project
193
+ Create an embedded project for white-label partners.
194
+
195
+ ```bash
196
+ POST /partnership/v1/:partnerId/sync-embedded-project
197
+ ```
198
+
199
+ **Request Body:**
200
+ ```json
201
+ {
202
+ "project_name": "embedded-project", // required
203
+ "region": "us-east", // optional
204
+ "instance_type": "nano" // optional
205
+ }
206
+ ```
207
+
208
+ **Response:**
209
+ ```json
210
+ {
211
+ "success": true,
212
+ "project": {
213
+ "id": "uuid-string",
214
+ "access_host": "https://project.us-east.insforge.app",
215
+ "api_key": "project-api-key",
216
+ "status": "active"
217
+ }
218
+ }
219
+ ```
220
+
221
+ ### Get Project Metadata
222
+ Retrieve metadata for a specific project.
223
+
224
+ ```bash
225
+ GET /partnership/v1/:partnerId/:projectId/metadata
226
+ ```
227
+
228
+ **Response:**
229
+ ```json
230
+ {
231
+ "project": {
232
+ "id": "uuid-string",
233
+ "access_host": "https://project.us-east.insforge.app",
234
+ "api_key": "project-api-key",
235
+ "status": "active"
236
+ }
237
+ }
238
+ ```
239
+
240
+ ### Pause Project
241
+ Pause an active project to save resources.
242
+
243
+ ```bash
244
+ POST /partnership/v1/:partnerId/:projectId/pause
245
+ ```
246
+
247
+ **Request Body:**
248
+ ```json
249
+ {
250
+ "wait_for_completion": true // optional
251
+ }
252
+ ```
253
+
254
+ **Response:**
255
+ ```json
256
+ {
257
+ "project": {
258
+ "id": "uuid-string",
259
+ "status": "paused"
260
+ }
261
+ }
262
+ ```
263
+
264
+ ### Restore Project
265
+ Restore a paused project back to active state.
266
+
267
+ ```bash
268
+ POST /partnership/v1/:partnerId/:projectId/restore
269
+ ```
270
+
271
+ **Request Body:**
272
+ ```json
273
+ {
274
+ "wait_for_completion": true // optional
275
+ }
276
+ ```
277
+
278
+ **Response:**
279
+ ```json
280
+ {
281
+ "project": {
282
+ "id": "uuid-string",
283
+ "status": "active"
284
+ }
285
+ }
286
+ ```
287
+
288
+ ### Delete Project
289
+ Permanently delete a project. This operation cannot be undone.
290
+
291
+ ```bash
292
+ DELETE /partnership/v1/:partnerId/:projectId
293
+ ```
294
+
295
+ **Response (200 OK):**
296
+ ```json
297
+ {
298
+ "message": "Project deleted successfully",
299
+ "requestId": "xhiahif-fehfe-feae"
300
+ }
301
+ ```
302
+
303
+ ### Generate Project Authorization
304
+ Generate a short-lived asymmetric JWT token for project access. The token is signed with RSA private key and can be verified using the public JWKS endpoint. Token expires in 10 minutes.
305
+
306
+ ```bash
307
+ POST /partnership/v1/:partnerId/:projectId/authorization
308
+ ```
309
+
310
+ **Response:**
311
+ ```json
312
+ {
313
+ "code": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Imluc2ZvcmdlLWtleS0yMDI1LTA4LTEzIn0...",
314
+ "expires_in": 600,
315
+ "type": "Bearer"
316
+ }
317
+ ```
318
+
319
+ ### Get Project Usage
320
+ Retrieve usage metrics for a specific project over a date range. Returns both summary statistics and daily breakdown of usage metrics. If dates are not specified, returns data for the last 7 days.
321
+
322
+ ```bash
323
+ GET /partnership/v1/:partnerId/:projectId/usage?start_date=2025-11-10&end_date=2025-11-18
324
+ ```
325
+
326
+ **Query Parameters:**
327
+ - `start_date` (optional): Start date in YYYY-MM-DD format (defaults to 7 days ago)
328
+ - `end_date` (optional): End date in YYYY-MM-DD format (defaults to today)
329
+
330
+ **Response:**
331
+ ```json
332
+ {
333
+ "project": {
334
+ "id": "uuid-string",
335
+ "name": "project-name",
336
+ "status": "active"
337
+ },
338
+ "period": {
339
+ "start": "2025-11-10T00:00:00Z",
340
+ "end": "2025-11-18T23:59:59Z"
341
+ },
342
+ "summary": {
343
+ "max_database_size_bytes": 1048576,
344
+ "max_file_storage_bytes": 5242880,
345
+ "total_ai_tokens": 15000,
346
+ "total_mcp_calls": 120,
347
+ "total_egress_bytes": 2097152,
348
+ "total_ai_credits": 1.5,
349
+ "total_email_requests": 50,
350
+ "total_function_calls": 300,
351
+ "total_ec2_compute": 3600
352
+ },
353
+ "daily_usage": [
354
+ {
355
+ "usage_date": "2025-11-10",
356
+ "database_size_bytes": 1048576,
357
+ "file_storage_bytes": 5242880,
358
+ "ai_tokens": 1500,
359
+ "mcp_calls": 12,
360
+ "egress_bytes": 204800,
361
+ "ai_credits": 0.15,
362
+ "email_requests": 5,
363
+ "function_calls": 30,
364
+ "ec2_compute": 3600
365
+ }
366
+ ]
367
+ }
368
+ ```
369
+
370
+ </Tab>
371
+ </Tabs>
372
+
373
+ ## Integration Examples
374
+
375
+ ### Co-Branded Integration Flow
376
+
377
+ The following sequence diagram illustrates the integration flow for co-branded partnerships:
378
+
379
+ ```mermaid
380
+ sequenceDiagram
381
+ participant User as End User
382
+ participant Partner as Partner Platform
383
+ participant InsForge as InsForge API
384
+ participant Dashboard as InsForge Dashboard
385
+
386
+ User->>Partner: Sign up/Login
387
+ Partner->>InsForge: POST /connect-user<br/>(name, email)
388
+ InsForge-->>Partner: Return user account ID
389
+
390
+ User->>Partner: Create new project
391
+ Partner->>InsForge: POST /sync-project<br/>(userId, project_name)
392
+
393
+ alt Success
394
+ InsForge-->>Partner: Return project details<br/>(id, access_host, api_key)
395
+ Partner->>Partner: Store project credentials
396
+ Partner->>User: Show project ready
397
+ else Project Limit Reached
398
+ InsForge-->>Partner: Return error + candidate projects
399
+ Partner->>User: Show existing projects to choose
400
+ User->>Partner: Select existing project
401
+ Partner->>InsForge: GET /metadata<br/>(projectId)
402
+ InsForge-->>Partner: Return project details
403
+ end
404
+
405
+ User->>Partner: Use application features
406
+ Partner->>InsForge: API calls using project credentials
407
+ InsForge-->>Partner: Return data
408
+ Partner-->>User: Display results
409
+
410
+ Note over User,Dashboard: User can also access InsForge Dashboard directly
411
+ User->>Dashboard: Login with same email
412
+ Dashboard->>User: Full project management access
413
+ ```
414
+
415
+ ```typescript
416
+ // 1. Connect user account
417
+ const connectUser = async (name: string, email: string) => {
418
+ const response = await fetch(
419
+ `https://api.insforge.dev/partnership/v1/${PARTNER_ID}/connect-user`,
420
+ {
421
+ method: 'POST',
422
+ headers: {
423
+ 'X-Partnership-Secret': `${SECRET_KEY}`,
424
+ 'Content-Type': 'application/json'
425
+ },
426
+ body: JSON.stringify({ name, email })
427
+ }
428
+ );
429
+
430
+ const { account } = await response.json();
431
+ return account.id;
432
+ };
433
+
434
+ // 2. Create project for user
435
+ const createProject = async (userId: string, projectName: string) => {
436
+ const response = await fetch(
437
+ `https://api.insforge.dev/partnership/v1/${PARTNER_ID}/${userId}/sync-project`,
438
+ {
439
+ method: 'POST',
440
+ headers: {
441
+ 'X-Partnership-Secret': `${SECRET_KEY}`,
442
+ 'Content-Type': 'application/json'
443
+ },
444
+ body: JSON.stringify({
445
+ project_name: projectName,
446
+ region: 'us-east',
447
+ instance_type: 'nano'
448
+ })
449
+ }
450
+ );
451
+
452
+ const data = await response.json();
453
+ if (data.success) {
454
+ return data.project;
455
+ }
456
+ throw new Error(data.message);
457
+ };
458
+
459
+ // 3. Use project credentials
460
+ const useProject = async (project: any) => {
461
+ // Connect to InsForge project using returned credentials
462
+ const insForgeClient = new InsForgeClient({
463
+ baseUrl: project.access_host,
464
+ apiKey: project.api_key
465
+ });
466
+
467
+ // Now you can use all InsForge features
468
+ await insForgeClient.database.query('SELECT * FROM users');
469
+ };
470
+ ```
471
+
472
+ ### White-Label Integration Flow
473
+
474
+ The following sequence diagram illustrates the integration flow for white-label partnerships:
475
+
476
+ ```mermaid
477
+ sequenceDiagram
478
+ participant User as End User
479
+ participant Partner as Partner Platform
480
+ participant InsForge as InsForge API
481
+
482
+ Note over User,InsForge: User never interacts with InsForge directly
483
+
484
+ User->>Partner: Sign up/Login to partner platform
485
+
486
+ User->>Partner: Create new project
487
+ Partner->>InsForge: POST /sync-embedded-project<br/>(project_name, region, instance_type)
488
+ InsForge-->>Partner: Return project details<br/>(id, access_host, api_key, status)
489
+ Partner->>Partner: Store project credentials
490
+ Partner->>User: Show project ready
491
+
492
+ User->>Partner: Use application features
493
+ Partner->>InsForge: API calls using project credentials
494
+ InsForge-->>Partner: Return data
495
+ Partner-->>User: Display results
496
+
497
+ User->>Partner: Request to pause project
498
+ Partner->>InsForge: POST /pause<br/>(projectId)
499
+ InsForge-->>Partner: Return status: paused
500
+ Partner->>User: Confirm project paused
501
+
502
+ User->>Partner: Request to restore project
503
+ Partner->>InsForge: POST /restore<br/>(projectId)
504
+ InsForge-->>Partner: Return status: active
505
+ Partner->>User: Confirm project active
506
+
507
+ Partner->>InsForge: GET /metadata<br/>(projectId)
508
+ InsForge-->>Partner: Return current project status
509
+ ```
510
+
511
+ ```typescript
512
+ // 1. Create embedded project
513
+ const createEmbeddedProject = async (projectName: string) => {
514
+ const response = await fetch(
515
+ `https://api.insforge.dev/partnership/v1/${PARTNER_ID}/sync-embedded-project`,
516
+ {
517
+ method: 'POST',
518
+ headers: {
519
+ 'X-Partnership-Secret': `${SECRET_KEY}`,
520
+ 'Content-Type': 'application/json'
521
+ },
522
+ body: JSON.stringify({
523
+ project_name: projectName,
524
+ region: 'eu-west',
525
+ instance_type: 'small'
526
+ })
527
+ }
528
+ );
529
+
530
+ const data = await response.json();
531
+ if (data.success) {
532
+ return data.project;
533
+ }
534
+ throw new Error(data.message);
535
+ };
536
+
537
+ // 2. Manage project lifecycle
538
+ const pauseProject = async (projectId: string) => {
539
+ const response = await fetch(
540
+ `https://api.insforge.dev/partnership/v1/${PARTNER_ID}/${projectId}/pause`,
541
+ {
542
+ method: 'POST',
543
+ headers: {
544
+ 'X-Partnership-Secret': `${SECRET_KEY}`,
545
+ 'Content-Type': 'application/json'
546
+ },
547
+ body: JSON.stringify({
548
+ wait_for_completion: true
549
+ })
550
+ }
551
+ );
552
+
553
+ const { project } = await response.json();
554
+ console.log(`Project ${project.id} status: ${project.status}`);
555
+ };
556
+
557
+ const restoreProject = async (projectId: string) => {
558
+ const response = await fetch(
559
+ `https://api.insforge.dev/partnership/v1/${PARTNER_ID}/${projectId}/restore`,
560
+ {
561
+ method: 'POST',
562
+ headers: {
563
+ 'X-Partnership-Secret': `${SECRET_KEY}`,
564
+ 'Content-Type': 'application/json'
565
+ },
566
+ body: JSON.stringify({
567
+ wait_for_completion: true
568
+ })
569
+ }
570
+ );
571
+
572
+ const { project } = await response.json();
573
+ console.log(`Project ${project.id} status: ${project.status}`);
574
+ };
575
+
576
+ // 3. Delete project
577
+ const deleteProject = async (projectId: string) => {
578
+ const response = await fetch(
579
+ `https://api.insforge.dev/partnership/v1/${PARTNER_ID}/${projectId}`,
580
+ {
581
+ method: 'DELETE',
582
+ headers: {
583
+ 'X-Partnership-Secret': `${SECRET_KEY}`
584
+ }
585
+ }
586
+ );
587
+
588
+ if (response.ok) {
589
+ const data = await response.json();
590
+ console.log(data.message); // "Project deleted successfully"
591
+ console.log(`Request ID: ${data.requestId}`);
592
+ } else {
593
+ throw new Error(`Failed to delete project: ${response.status}`);
594
+ }
595
+ };
596
+ ```
597
+
598
+ ## Parameter and Response Reference
599
+
600
+ ### Project Region Values
601
+ InsForge provides global deployment capabilities. Each project can be deployed to different regions:
602
+ - `us-east` - United States East Coast
603
+ - `us-west` - United States West Coast
604
+ - `ca-central` - Canada Central
605
+ - `eu-central` - Europe Central
606
+
607
+ Additional regions will be added based on demand.
608
+
609
+ ### Project Instance Type Values
610
+ Based on your project's business requirements, InsForge offers the following resource types:
611
+ - `nano` - Minimal resources for development
612
+ - `small` - Light workloads
613
+ - `medium` - Standard applications
614
+ - `large` - Production workloads
615
+ - `xl` - High-performance applications
616
+ - `2xl` - Enterprise applications
617
+ - `4xl` - Large-scale operations
618
+ - `8xl` - Mission-critical systems
619
+ - `16xl` - Maximum performance
620
+
621
+ ### Project Status Values
622
+
623
+ Projects can have the following status values:
624
+
625
+ - **active**: Project is running and accessible
626
+ - **paused**: Project is paused (white-label only)
627
+
628
+ ## Error Handling
629
+
630
+ All API endpoints return consistent error responses:
631
+
632
+ ```json
633
+ {
634
+ "success": false,
635
+ "message": "Detailed error message describing what went wrong"
636
+ }
637
+ ```
638
+
639
+ Common error scenarios:
640
+ - Invalid authentication credentials
641
+ - Project not found
642
+ - Insufficient permissions for requested operation
643
+ - Invalid request parameters
644
+
645
+ ## Next Steps
646
+
647
+ - Schedule a [technical review](https://calendly.com/tony-chang-insforge/45min) with our team