insforge 0.3.3 → 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 (635) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.dockerignore +60 -57
  3. package/.env.example +84 -49
  4. package/.github/ISSUE_TEMPLATE/bug_report.yml +36 -83
  5. package/.github/ISSUE_TEMPLATE/config.yml +11 -11
  6. package/.github/ISSUE_TEMPLATE/feature_request.yml +26 -79
  7. package/.github/PULL_REQUEST_TEMPLATE.md +7 -0
  8. package/.github/copilot-instructions.md +146 -146
  9. package/.github/workflows/build-image.yml +66 -65
  10. package/.github/workflows/ci-premerge-check.yml +23 -23
  11. package/.github/workflows/e2e.yml +63 -0
  12. package/.github/workflows/lint-and-format.yml +32 -32
  13. package/.prettierignore +64 -64
  14. package/CHANGELOG.md +44 -3
  15. package/CLAUDE_PLUGIN.md +104 -0
  16. package/CODE_OF_CONDUCT.md +128 -0
  17. package/CONTRIBUTING.md +125 -125
  18. package/Dockerfile +30 -27
  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 -134
  23. package/assets/Dark.svg +23 -23
  24. package/assets/mcpInstallv2.png +0 -0
  25. package/assets/sampleResponse.png +0 -0
  26. package/auth/index.html +13 -0
  27. package/auth/package.json +28 -0
  28. package/auth/public/favicon.ico +0 -0
  29. package/auth/src/App.tsx +33 -0
  30. package/auth/src/components/ErrorCard.tsx +37 -0
  31. package/auth/src/components/Layout.tsx +13 -0
  32. package/auth/src/index.css +19 -0
  33. package/auth/src/lib/broadcastService.ts +117 -0
  34. package/auth/src/lib/utils.ts +11 -0
  35. package/auth/src/main.tsx +22 -0
  36. package/auth/src/pages/ForgotPasswordPage.tsx +11 -0
  37. package/auth/src/pages/ResetPasswordPage.tsx +11 -0
  38. package/auth/src/pages/SignInPage.tsx +60 -0
  39. package/auth/src/pages/SignUpPage.tsx +60 -0
  40. package/auth/src/pages/VerifyEmailPage.tsx +20 -0
  41. package/auth/src/vite-env.d.ts +10 -0
  42. package/auth/tsconfig.json +32 -0
  43. package/auth/tsconfig.node.json +11 -0
  44. package/auth/vite.config.ts +25 -0
  45. package/backend/package.json +78 -75
  46. package/backend/src/api/{middleware → middlewares}/auth.ts +8 -9
  47. package/backend/src/api/middlewares/rate-limiters.ts +127 -0
  48. package/backend/src/api/routes/{ai.ts → ai/index.routes.ts} +22 -26
  49. package/backend/src/api/routes/auth/index.routes.ts +667 -0
  50. package/backend/src/api/routes/auth/oauth.routes.ts +473 -0
  51. package/backend/src/api/routes/{database.advance.ts → database/advance.routes.ts} +128 -65
  52. package/backend/src/api/routes/database/index.routes.ts +90 -0
  53. package/backend/src/api/routes/{database.records.ts → database/records.routes.ts} +26 -12
  54. package/backend/src/api/routes/{database.tables.ts → database/tables.routes.ts} +6 -23
  55. package/backend/src/api/routes/docs/index.routes.ts +75 -0
  56. package/backend/src/api/routes/email/index.routes.ts +35 -0
  57. package/backend/src/api/routes/functions/index.routes.ts +194 -0
  58. package/backend/src/api/routes/{logs.ts → logs/index.routes.ts} +25 -30
  59. package/backend/src/api/routes/{metadata.ts → metadata/index.routes.ts} +33 -31
  60. package/backend/src/api/routes/realtime/channels.routes.ts +81 -0
  61. package/backend/src/api/routes/realtime/index.routes.ts +12 -0
  62. package/backend/src/api/routes/realtime/messages.routes.ts +48 -0
  63. package/backend/src/api/routes/realtime/permissions.routes.ts +19 -0
  64. package/backend/src/api/routes/{secrets.ts → secrets/index.routes.ts} +27 -22
  65. package/backend/src/api/routes/{storage.ts → storage/index.routes.ts} +48 -61
  66. package/backend/src/api/routes/usage/index.routes.ts +91 -0
  67. package/backend/src/infra/config/app.config.ts +51 -0
  68. package/backend/src/infra/database/database.manager.ts +182 -0
  69. package/backend/{migrations → src/infra/database/migrations}/000_create-base-tables.sql +141 -141
  70. package/backend/{migrations → src/infra/database/migrations}/001_create-helper-functions.sql +40 -40
  71. package/backend/{migrations → src/infra/database/migrations}/002_rename-auth-tables.sql +29 -29
  72. package/backend/{migrations → src/infra/database/migrations}/003_create-users-table.sql +55 -55
  73. package/backend/{migrations → src/infra/database/migrations}/004_add-reload-postgrest-func.sql +23 -23
  74. package/backend/{migrations → src/infra/database/migrations}/005_enable-project-admin-modify-users.sql +29 -29
  75. package/backend/{migrations → src/infra/database/migrations}/006_modify-ai-usage-table.sql +24 -24
  76. package/backend/{migrations → src/infra/database/migrations}/007_drop-metadata-table.sql +1 -1
  77. package/backend/{migrations → src/infra/database/migrations}/008_add-system-tables.sql +76 -76
  78. package/backend/{migrations → src/infra/database/migrations}/009_add-function-secrets.sql +23 -23
  79. package/backend/{migrations → src/infra/database/migrations}/010_modify-ai-config-modalities.sql +93 -93
  80. package/backend/{migrations → src/infra/database/migrations}/011_refactor-secrets-table.sql +15 -15
  81. package/backend/{migrations → src/infra/database/migrations}/012_add-storage-uploaded-by.sql +7 -7
  82. package/backend/src/infra/database/migrations/013_create-auth-schema-functions.sql +44 -0
  83. package/backend/src/infra/database/migrations/014_add-updated-at-trigger-user-table.sql +8 -0
  84. package/backend/src/infra/database/migrations/015_create-auth-config-and-email-otp-tables.sql +60 -0
  85. package/backend/src/infra/database/migrations/016_update-auth-config-and-email-otp.sql +24 -0
  86. package/backend/src/infra/database/migrations/017_create-realtime-schema.sql +233 -0
  87. package/backend/src/infra/realtime/realtime.manager.ts +246 -0
  88. package/backend/src/infra/realtime/webhook-sender.ts +82 -0
  89. package/backend/src/{core/secrets/encryption.ts → infra/security/encryption.manager.ts} +3 -2
  90. package/backend/src/infra/security/token.manager.ts +219 -0
  91. package/backend/src/infra/socket/socket.manager.ts +522 -0
  92. package/backend/src/providers/ai/openrouter.provider.ts +380 -0
  93. package/backend/src/providers/email/base.provider.ts +38 -0
  94. package/backend/src/providers/email/cloud.provider.ts +271 -0
  95. package/backend/src/{core/logs/providers → providers/logs}/base.provider.ts +11 -11
  96. package/backend/src/{core/logs/providers → providers/logs}/cloudwatch.provider.ts +61 -38
  97. package/backend/src/providers/logs/local.provider.ts +185 -0
  98. package/backend/src/providers/oauth/apple.provider.ts +266 -0
  99. package/backend/src/providers/oauth/base.provider.ts +29 -0
  100. package/backend/src/providers/oauth/discord.provider.ts +195 -0
  101. package/backend/src/providers/oauth/facebook.provider.ts +194 -0
  102. package/backend/src/providers/oauth/github.provider.ts +208 -0
  103. package/backend/src/providers/oauth/google.provider.ts +249 -0
  104. package/backend/src/providers/oauth/index.ts +8 -0
  105. package/backend/src/providers/oauth/linkedin.provider.ts +240 -0
  106. package/backend/src/providers/oauth/microsoft.provider.ts +169 -0
  107. package/backend/src/providers/oauth/x.provider.ts +202 -0
  108. package/backend/src/providers/storage/base.provider.ts +29 -0
  109. package/backend/src/providers/storage/local.provider.ts +103 -0
  110. package/backend/src/providers/storage/s3.provider.ts +313 -0
  111. package/backend/src/server.ts +317 -288
  112. package/backend/src/{core/ai/config.ts → services/ai/ai-config.service.ts} +19 -24
  113. package/backend/src/services/ai/ai-model.service.ts +60 -0
  114. package/backend/src/{core/ai/usage.ts → services/ai/ai-usage.service.ts} +28 -35
  115. package/backend/src/{core/ai/chat.ts → services/ai/chat-completion.service.ts} +37 -24
  116. package/backend/src/services/ai/helpers.ts +64 -0
  117. package/backend/src/{core/ai/image.ts → services/ai/image-generation.service.ts} +17 -19
  118. package/backend/src/services/ai/index.ts +13 -0
  119. package/backend/src/services/auth/auth-config.service.ts +250 -0
  120. package/backend/src/services/auth/auth-otp.service.ts +424 -0
  121. package/backend/src/services/auth/auth.service.ts +1150 -0
  122. package/backend/src/services/auth/index.ts +4 -0
  123. package/backend/src/{core/auth/oauth.ts → services/auth/oauth-config.service.ts} +106 -52
  124. package/backend/src/{core/database/advance.ts → services/database/database-advance.service.ts} +97 -131
  125. package/backend/src/services/database/database-table.service.ts +802 -0
  126. package/backend/src/services/database/database.service.ts +127 -0
  127. package/backend/src/services/email/email.service.ts +73 -0
  128. package/backend/src/{core/functions/functions.ts → services/functions/function.service.ts} +95 -88
  129. package/backend/src/{core/logs/audit.ts → services/logs/audit.service.ts} +92 -75
  130. package/backend/src/services/logs/log.service.ts +73 -0
  131. package/backend/src/services/realtime/index.ts +3 -0
  132. package/backend/src/services/realtime/realtime-auth.service.ts +104 -0
  133. package/backend/src/services/realtime/realtime-channel.service.ts +237 -0
  134. package/backend/src/services/realtime/realtime-message.service.ts +260 -0
  135. package/backend/src/{core/secrets/secrets.ts → services/secrets/secret.service.ts} +48 -66
  136. package/backend/src/services/storage/storage.service.ts +617 -0
  137. package/backend/src/services/usage/usage.service.ts +149 -0
  138. package/backend/src/types/auth.ts +77 -2
  139. package/backend/src/types/email.ts +8 -0
  140. package/backend/src/types/error-constants.ts +4 -0
  141. package/backend/src/types/logs.ts +0 -29
  142. package/backend/src/types/realtime.ts +18 -0
  143. package/backend/src/{core/socket/types.ts → types/socket.ts} +11 -36
  144. package/backend/src/utils/cookies.ts +35 -0
  145. package/backend/src/utils/environment.ts +9 -3
  146. package/backend/src/utils/logger.ts +20 -2
  147. package/backend/src/utils/s3-config-loader.ts +64 -0
  148. package/backend/src/utils/seed.ts +301 -205
  149. package/backend/src/utils/sql-parser.ts +91 -1
  150. package/backend/src/utils/utils.ts +114 -0
  151. package/backend/src/utils/validations.ts +40 -4
  152. package/backend/tests/README.md +133 -133
  153. package/backend/tests/cleanup-all-test-data.sh +230 -230
  154. package/backend/tests/cloud/test-s3-multitenant.sh +131 -131
  155. package/backend/tests/local/comprehensive-curl-tests.sh +155 -155
  156. package/backend/tests/local/test-ai-config.sh +129 -0
  157. package/backend/tests/local/test-ai-usage.sh +80 -0
  158. package/backend/tests/local/test-auth-router.sh +143 -143
  159. package/backend/tests/local/test-database-router.sh +222 -222
  160. package/backend/tests/local/test-e2e.sh +240 -240
  161. package/backend/tests/local/test-fk-errors.sh +96 -96
  162. package/backend/tests/local/test-functions.sh +123 -0
  163. package/backend/tests/local/test-id-field.sh +200 -200
  164. package/backend/tests/local/test-logs.sh +132 -0
  165. package/backend/tests/local/test-public-bucket.sh +264 -264
  166. package/backend/tests/local/test-secrets.sh +249 -247
  167. package/backend/tests/local/test-serverless-functions.sh.disabled +325 -325
  168. package/backend/tests/local/test-traditional-rest.sh +208 -208
  169. package/backend/tests/manual/README.md +50 -50
  170. package/backend/tests/manual/create-large-table-simple.sql +10 -10
  171. package/backend/tests/manual/seed-large-table.sql +100 -100
  172. package/backend/tests/manual/setup-large-table-extras.sql +33 -33
  173. package/backend/tests/manual/test-bulk-upsert.sh +409 -409
  174. package/backend/tests/manual/test-database-advance.sh +296 -296
  175. package/backend/tests/manual/test-postgrest-stability.sh +191 -191
  176. package/backend/tests/manual/test-rawsql-export-import.sh +411 -411
  177. package/backend/tests/manual/test-rawsql-modes.sh +244 -0
  178. package/backend/tests/manual/test-universal-storage.sh +263 -263
  179. package/backend/tests/manual/test-users.sql +17 -17
  180. package/backend/tests/run-all-tests.sh +139 -139
  181. package/backend/tests/setup.ts +0 -0
  182. package/backend/tests/test-config.sh +338 -302
  183. package/backend/tests/unit/analyze-query.test.ts +697 -0
  184. package/backend/tests/unit/cloud-token.test.ts +48 -0
  185. package/backend/tests/unit/constant.test.ts +8 -0
  186. package/backend/tests/unit/email.test.ts +372 -0
  187. package/backend/tests/unit/environment.test.ts +59 -0
  188. package/backend/tests/unit/helpers.test.ts +63 -0
  189. package/backend/tests/unit/logger.test.ts +22 -0
  190. package/backend/tests/unit/rate-limit.test.ts +154 -0
  191. package/backend/tests/unit/response.test.ts +58 -0
  192. package/backend/tests/unit/sql-parser.test.ts +74 -0
  193. package/backend/tests/unit/uuid.test.ts +21 -0
  194. package/backend/tests/unit/validations.test.ts +80 -0
  195. package/backend/tsconfig.json +22 -22
  196. package/backend/vitest.config.ts +11 -0
  197. package/claude-plugin/.claude-plugin/plugin.json +24 -0
  198. package/claude-plugin/README.md +133 -0
  199. package/claude-plugin/skills/insforge-schema-patterns/SKILL.md +270 -0
  200. package/docker-compose.prod.yml +204 -144
  201. package/docker-compose.yml +232 -167
  202. package/docker-init/db/db-init.sql +97 -125
  203. package/docker-init/db/jwt.sql +5 -5
  204. package/docker-init/db/postgresql.conf +16 -16
  205. package/docker-init/logs/vector.yml +236 -0
  206. package/docs/README.md +44 -0
  207. package/docs/agent-docs/real-time.md +269 -0
  208. package/docs/changelog.mdx +119 -0
  209. package/docs/core-concepts/ai/architecture.mdx +373 -0
  210. package/docs/core-concepts/ai/sdk.mdx +213 -0
  211. package/docs/core-concepts/authentication/architecture.mdx +278 -0
  212. package/docs/core-concepts/authentication/sdk.mdx +414 -0
  213. package/docs/core-concepts/authentication/ui-components/customization.mdx +529 -0
  214. package/docs/core-concepts/authentication/ui-components/nextjs.mdx +221 -0
  215. package/docs/core-concepts/authentication/ui-components/react-router.mdx +184 -0
  216. package/docs/core-concepts/authentication/ui-components/react.mdx +129 -0
  217. package/docs/core-concepts/database/architecture.mdx +256 -0
  218. package/docs/core-concepts/database/sdk.mdx +382 -0
  219. package/docs/core-concepts/email/architecture.mdx +101 -0
  220. package/docs/core-concepts/email/sdk.mdx +53 -0
  221. package/docs/core-concepts/functions/architecture.mdx +105 -0
  222. package/docs/core-concepts/functions/sdk.mdx +184 -0
  223. package/docs/core-concepts/realtime/architecture.mdx +446 -0
  224. package/docs/core-concepts/realtime/sdk.mdx +409 -0
  225. package/docs/core-concepts/storage/architecture.mdx +243 -0
  226. package/docs/core-concepts/storage/sdk.mdx +253 -0
  227. package/docs/deployment/README.md +94 -0
  228. package/docs/deployment/deploy-to-aws-ec2.md +565 -0
  229. package/docs/deployment/deploy-to-azure-virtual-machines.md +313 -0
  230. package/docs/deployment/deploy-to-google-cloud-compute-engine.md +613 -0
  231. package/docs/deployment/deploy-to-render.md +441 -0
  232. package/docs/deprecated/insforge-auth-api.md +214 -214
  233. package/docs/deprecated/insforge-auth-sdk.md +99 -99
  234. package/docs/deprecated/insforge-db-api.md +358 -358
  235. package/docs/deprecated/insforge-db-sdk.md +139 -139
  236. package/docs/deprecated/insforge-debug-sdk.md +156 -156
  237. package/docs/deprecated/insforge-debug.md +64 -64
  238. package/docs/deprecated/insforge-instructions.md +123 -123
  239. package/docs/deprecated/insforge-project.md +117 -117
  240. package/docs/deprecated/insforge-storage-api.md +278 -278
  241. package/docs/deprecated/insforge-storage-sdk.md +158 -158
  242. package/docs/docs.json +232 -0
  243. package/docs/examples/framework-guides/nextjs.mdx +131 -0
  244. package/docs/examples/framework-guides/nuxt.mdx +165 -0
  245. package/docs/examples/framework-guides/react.mdx +165 -0
  246. package/docs/examples/framework-guides/svelte.mdx +153 -0
  247. package/docs/examples/framework-guides/vue.mdx +159 -0
  248. package/docs/examples/overview.mdx +67 -0
  249. package/docs/favicon.svg +19 -0
  250. package/docs/images/changelog/dec-2025/ai-integration.png +0 -0
  251. package/docs/images/changelog/dec-2025/ai-models.webp +0 -0
  252. package/docs/images/changelog/dec-2025/alipay-payment.webp +0 -0
  253. package/docs/images/changelog/dec-2025/apple-login.jpg +0 -0
  254. package/docs/images/changelog/dec-2025/mcp-installer.png +0 -0
  255. package/docs/images/changelog/dec-2025/realtime-module.jpg +0 -0
  256. package/docs/images/changelog/nov-2025/auth-components.webp +0 -0
  257. package/docs/images/changelog/nov-2025/database-metadata.webp +0 -0
  258. package/docs/images/changelog/nov-2025/quickstart-prompts.webp +0 -0
  259. package/docs/images/changelog/nov-2025/sql-editor.webp +0 -0
  260. package/docs/images/changelog/nov-2025/usage-page.webp +0 -0
  261. package/docs/images/changelog/october-2025/csv-upload.webp +0 -0
  262. package/docs/images/changelog/october-2025/logs-feature.webp +0 -0
  263. package/docs/images/changelog/october-2025/oauth-providers.webp +0 -0
  264. package/docs/images/checks-passed.png +0 -0
  265. package/docs/images/dashboard-connect-expanded.png +0 -0
  266. package/docs/images/dashboard-connect.png +0 -0
  267. package/docs/images/hero-dark.png +0 -0
  268. package/docs/images/hero-light.png +0 -0
  269. package/docs/images/icons/ai.svg +4 -0
  270. package/docs/images/icons/auth.svg +1 -0
  271. package/docs/images/icons/database.svg +1 -0
  272. package/docs/images/icons/function.svg +1 -0
  273. package/docs/images/icons/storage.svg +1 -0
  274. package/docs/images/logos/nextjs.svg +4 -0
  275. package/docs/images/logos/nuxt.svg +4 -0
  276. package/docs/images/logos/react.svg +5 -0
  277. package/docs/images/logos/svelte.svg +4 -0
  278. package/docs/images/logos/vue.svg +5 -0
  279. package/docs/images/mcp-install.png +0 -0
  280. package/docs/images/onboarding-mcp.png +0 -0
  281. package/docs/insforge-instructions-sdk.md +89 -407
  282. package/docs/introduction.mdx +45 -0
  283. package/docs/logo/dark.svg +22 -0
  284. package/docs/logo/light.svg +20 -0
  285. package/docs/partnership.mdx +652 -0
  286. package/docs/quickstart.mdx +83 -0
  287. package/docs/showcase/2048-arena.png +0 -0
  288. package/docs/showcase/framegen-cloud.png +0 -0
  289. package/docs/showcase/line-connect-race.png +0 -0
  290. package/docs/showcase/moment-vibe.png +0 -0
  291. package/docs/showcase/national-flags.png +0 -0
  292. package/docs/showcase/pokemon-vibe.png +0 -0
  293. package/docs/showcase/pure-browse-buy.png +0 -0
  294. package/docs/showcase.mdx +52 -0
  295. package/docs/snippets/sdk-installation.mdx +22 -0
  296. package/docs/snippets/service-icons.mdx +27 -0
  297. package/eslint.config.js +10 -3
  298. package/examples/oauth/frontend-oauth-example.html +250 -250
  299. package/examples/response-examples.md +443 -443
  300. package/frontend/components.json +17 -17
  301. package/frontend/package.json +69 -63
  302. package/frontend/src/App.tsx +13 -82
  303. package/frontend/src/assets/icons/checkbox_checked.svg +6 -6
  304. package/frontend/src/assets/icons/checkbox_undetermined.svg +6 -6
  305. package/frontend/src/assets/icons/checked.svg +3 -3
  306. package/frontend/src/assets/icons/connected.svg +3 -0
  307. package/frontend/src/assets/icons/error.svg +3 -3
  308. package/frontend/src/assets/icons/loader.svg +9 -0
  309. package/frontend/src/assets/icons/pencil.svg +4 -4
  310. package/frontend/src/assets/icons/refresh.svg +4 -4
  311. package/frontend/src/assets/icons/step_active.svg +3 -3
  312. package/frontend/src/assets/icons/step_inactive.svg +11 -11
  313. package/frontend/src/assets/icons/warning.svg +3 -3
  314. package/frontend/src/assets/logos/apple.svg +4 -0
  315. package/frontend/src/assets/logos/claude_code.svg +3 -3
  316. package/frontend/src/assets/logos/cline.svg +6 -6
  317. package/frontend/src/assets/logos/cursor.svg +20 -20
  318. package/frontend/src/assets/logos/discord.svg +8 -8
  319. package/frontend/src/assets/logos/facebook.svg +3 -0
  320. package/frontend/src/assets/logos/gemini.svg +19 -19
  321. package/frontend/src/assets/logos/github.svg +5 -5
  322. package/frontend/src/assets/logos/google.svg +13 -13
  323. package/frontend/src/assets/logos/grok.svg +10 -10
  324. package/frontend/src/assets/logos/insforge_dark.svg +15 -15
  325. package/frontend/src/assets/logos/insforge_light.svg +15 -15
  326. package/frontend/src/assets/logos/instagram.svg +2 -0
  327. package/frontend/src/assets/logos/linkedin.svg +3 -0
  328. package/frontend/src/assets/logos/microsoft.svg +1 -0
  329. package/frontend/src/assets/logos/openai.svg +10 -10
  330. package/frontend/src/assets/logos/roo_code.svg +9 -9
  331. package/frontend/src/assets/logos/spotify.svg +17 -0
  332. package/frontend/src/assets/logos/tiktok.svg +6 -0
  333. package/frontend/src/assets/logos/trae.svg +3 -3
  334. package/frontend/src/assets/logos/windsurf.svg +10 -10
  335. package/frontend/src/assets/logos/x.svg +3 -0
  336. package/frontend/src/components/Checkbox.tsx +27 -29
  337. package/frontend/src/components/CodeBlock.tsx +55 -2
  338. package/frontend/src/components/CodeEditor.tsx +92 -0
  339. package/frontend/src/components/ConfirmDialog.tsx +1 -1
  340. package/frontend/src/components/ConnectCTA.tsx +38 -0
  341. package/frontend/src/components/CopyButton.tsx +52 -15
  342. package/frontend/src/components/ErrorState.tsx +1 -2
  343. package/frontend/src/components/FeatureSidebar.tsx +6 -6
  344. package/frontend/src/components/FeatureSidebarItem.tsx +2 -2
  345. package/frontend/src/components/JsonHighlight.tsx +21 -9
  346. package/frontend/src/components/ProjectInfoModal.tsx +128 -0
  347. package/frontend/src/components/PromptDialog.tsx +1 -4
  348. package/frontend/src/components/SearchInput.tsx +1 -2
  349. package/frontend/src/components/Stepper.tsx +53 -0
  350. package/frontend/src/components/ThemeToggle.tsx +3 -3
  351. package/frontend/src/components/datagrid/DataGrid.tsx +25 -32
  352. package/frontend/src/components/datagrid/cell-editors/DateCellEditor.tsx +1 -2
  353. package/frontend/src/components/datagrid/cell-editors/JsonCellEditor.tsx +2 -4
  354. package/frontend/src/components/datagrid/index.ts +23 -0
  355. package/frontend/src/components/index.ts +23 -30
  356. package/frontend/src/components/layout/AppHeader.tsx +131 -91
  357. package/frontend/src/components/layout/AppSidebar.tsx +80 -170
  358. package/frontend/src/components/layout/Layout.tsx +12 -23
  359. package/frontend/src/components/layout/PrimaryMenu.tsx +187 -0
  360. package/frontend/src/components/layout/SecondaryMenu.tsx +70 -0
  361. package/frontend/src/components/layout/index.ts +5 -0
  362. package/frontend/src/components/radix/Tooltip.tsx +24 -13
  363. package/frontend/src/components/radix/index.ts +22 -0
  364. package/frontend/src/features/ai/components/AIConfigCard.tsx +129 -83
  365. package/frontend/src/features/ai/components/AIEmptyState.tsx +12 -7
  366. package/frontend/src/features/ai/components/ModalityFilterSidebar.tsx +101 -0
  367. package/frontend/src/features/ai/components/ModelSelectionDialog.tsx +135 -0
  368. package/frontend/src/features/ai/components/ModelSelectionGrid.tsx +51 -0
  369. package/frontend/src/features/ai/components/SystemPromptDialog.tsx +118 -0
  370. package/frontend/src/features/ai/components/index.ts +6 -0
  371. package/frontend/src/features/ai/helpers.ts +57 -71
  372. package/frontend/src/features/ai/hooks/useAIConfigs.ts +39 -113
  373. package/frontend/src/features/ai/hooks/useAIUsage.ts +0 -2
  374. package/frontend/src/features/ai/pages/AIPage.tsx +166 -0
  375. package/frontend/src/features/ai/services/ai.service.ts +5 -5
  376. package/frontend/src/features/auth/components/AuthPreview.tsx +96 -0
  377. package/frontend/src/features/auth/components/OAuthConfigDialog.tsx +54 -30
  378. package/frontend/src/features/auth/components/UserFormDialog.tsx +13 -6
  379. package/frontend/src/features/auth/components/UsersDataGrid.tsx +50 -14
  380. package/frontend/src/features/auth/components/index.ts +5 -0
  381. package/frontend/src/features/auth/helpers.tsx +208 -0
  382. package/frontend/src/features/auth/hooks/useAnonToken.ts +30 -0
  383. package/frontend/src/features/auth/hooks/useAuthConfig.ts +48 -0
  384. package/frontend/src/features/auth/hooks/useOAuthConfig.ts +14 -10
  385. package/frontend/src/features/auth/hooks/useUsers.ts +43 -5
  386. package/frontend/src/features/auth/index.ts +3 -2
  387. package/frontend/src/features/auth/pages/AuthMethodsPage.tsx +275 -0
  388. package/frontend/src/features/auth/pages/ConfigurationPage.tsx +395 -0
  389. package/frontend/src/features/auth/pages/UsersPage.tsx +257 -0
  390. package/frontend/src/features/auth/services/anonToken.service.ts +11 -0
  391. package/frontend/src/features/auth/services/config.service.ts +19 -0
  392. package/frontend/src/features/auth/services/{oauth.service.ts → oauth-config.service.ts} +4 -4
  393. package/frontend/src/features/auth/services/{auth.service.ts → user.service.ts} +7 -53
  394. package/frontend/src/features/dashboard/components/ConnectionSuccessBanner.tsx +35 -0
  395. package/frontend/src/features/dashboard/components/PromptCard.tsx +21 -0
  396. package/frontend/src/features/dashboard/components/PromptDialog.tsx +103 -0
  397. package/frontend/src/features/dashboard/components/StatsCard.tsx +50 -0
  398. package/frontend/src/features/dashboard/components/index.ts +4 -0
  399. package/frontend/src/features/dashboard/pages/DashboardPage.tsx +212 -0
  400. package/frontend/src/features/dashboard/prompts/ai-chatbot.ts +13 -0
  401. package/frontend/src/features/dashboard/prompts/crm-system.ts +13 -0
  402. package/frontend/src/features/dashboard/prompts/ecommerce-platform.ts +12 -0
  403. package/frontend/src/features/dashboard/prompts/index.ts +31 -0
  404. package/frontend/src/features/dashboard/prompts/instagram-clone.ts +11 -0
  405. package/frontend/src/features/dashboard/prompts/notion-clone.ts +14 -0
  406. package/frontend/src/features/dashboard/prompts/reddit-clone.ts +12 -0
  407. package/frontend/src/features/database/components/DatabaseDataGrid.tsx +48 -17
  408. package/frontend/src/features/database/components/ForeignKeyCell.tsx +15 -34
  409. package/frontend/src/features/database/components/ForeignKeyPopover.tsx +19 -20
  410. package/frontend/src/features/database/components/LinkRecordModal.tsx +120 -125
  411. package/frontend/src/features/database/components/RecordFormDialog.tsx +22 -33
  412. package/frontend/src/features/database/components/RecordFormField.tsx +45 -47
  413. package/frontend/src/features/database/components/SQLModal.tsx +75 -0
  414. package/frontend/src/features/database/components/TableEmptyState.tsx +6 -5
  415. package/frontend/src/features/database/components/TableForm.tsx +28 -19
  416. package/frontend/src/features/database/components/TableFormColumn.tsx +2 -3
  417. package/frontend/src/features/database/components/TableSidebar.tsx +1 -1
  418. package/frontend/src/features/database/components/TablesEmptyState.tsx +48 -0
  419. package/frontend/src/features/database/components/TemplateCard.tsx +37 -0
  420. package/frontend/src/features/database/components/TemplatePreview.tsx +92 -0
  421. package/frontend/src/features/database/components/index.ts +19 -0
  422. package/frontend/src/features/database/constants.ts +28 -2
  423. package/frontend/src/features/database/contexts/SQLEditorContext.tsx +188 -0
  424. package/frontend/src/features/database/helpers.ts +2 -2
  425. package/frontend/src/features/database/hooks/useCSVImport.ts +29 -0
  426. package/frontend/src/features/database/hooks/useDatabase.ts +66 -0
  427. package/frontend/src/features/database/hooks/useRawSQL.ts +55 -0
  428. package/frontend/src/features/database/hooks/useRecords.ts +139 -0
  429. package/frontend/src/features/database/hooks/useTables.ts +135 -0
  430. package/frontend/src/features/database/index.ts +7 -1
  431. package/frontend/src/features/database/pages/FunctionsPage.tsx +203 -0
  432. package/frontend/src/features/database/pages/IndexesPage.tsx +228 -0
  433. package/frontend/src/features/database/pages/PoliciesPage.tsx +237 -0
  434. package/frontend/src/features/database/pages/SQLEditorPage.tsx +382 -0
  435. package/frontend/src/features/database/{page/DatabasePage.tsx → pages/TablesPage.tsx} +168 -209
  436. package/frontend/src/features/database/pages/TemplatesPage.tsx +39 -0
  437. package/frontend/src/features/database/pages/TriggersPage.tsx +230 -0
  438. package/frontend/src/features/database/services/advance.service.ts +40 -0
  439. package/frontend/src/features/database/services/database.service.ts +33 -194
  440. package/frontend/src/features/database/services/record.service.ts +219 -0
  441. package/frontend/src/features/database/services/table.service.ts +58 -0
  442. package/frontend/src/features/database/templates/ai-chatbot.ts +402 -0
  443. package/frontend/src/features/database/templates/crm-system.ts +528 -0
  444. package/frontend/src/features/database/templates/ecommerce-platform.ts +553 -0
  445. package/frontend/src/features/database/templates/index.ts +34 -0
  446. package/frontend/src/features/database/templates/instagram-clone.ts +222 -0
  447. package/frontend/src/features/database/templates/notion-clone.ts +483 -0
  448. package/frontend/src/features/database/templates/reddit-clone.ts +526 -0
  449. package/frontend/src/features/functions/components/FunctionRow.tsx +2 -1
  450. package/frontend/src/features/functions/components/FunctionsSidebar.tsx +1 -1
  451. package/frontend/src/features/functions/components/SecretRow.tsx +1 -1
  452. package/frontend/src/features/functions/components/index.ts +5 -0
  453. package/frontend/src/features/functions/hooks/useFunctions.ts +4 -4
  454. package/frontend/src/features/{secrets → functions}/hooks/useSecrets.ts +5 -5
  455. package/frontend/src/features/functions/pages/FunctionsPage.tsx +148 -0
  456. package/frontend/src/features/functions/{components/SecretsContent.tsx → pages/SecretsPage.tsx} +19 -21
  457. package/frontend/src/features/functions/services/{functions.service.ts → function.service.ts} +2 -2
  458. package/frontend/src/features/{secrets/services/secrets.service.ts → functions/services/secret.service.ts} +2 -2
  459. package/frontend/src/features/login/hooks/usePartnerOrigin.ts +27 -0
  460. package/frontend/src/features/login/pages/CloudLoginPage.tsx +118 -0
  461. package/frontend/src/features/login/{page → pages}/LoginPage.tsx +16 -23
  462. package/frontend/src/features/login/services/partnership.service.ts +65 -0
  463. package/frontend/src/features/logs/components/LogsDataGrid.tsx +89 -0
  464. package/frontend/src/features/logs/components/SeverityBadge.tsx +18 -0
  465. package/frontend/src/features/logs/components/index.ts +2 -0
  466. package/frontend/src/features/logs/helpers.ts +24 -0
  467. package/frontend/src/features/logs/hooks/useAuditLogs.ts +4 -4
  468. package/frontend/src/features/logs/hooks/useLogSources.ts +137 -0
  469. package/frontend/src/features/logs/hooks/useLogs.ts +163 -0
  470. package/frontend/src/features/logs/hooks/useMcpUsage.ts +128 -0
  471. package/frontend/src/features/logs/index.ts +8 -2
  472. package/frontend/src/features/logs/{page → pages}/AuditsPage.tsx +91 -38
  473. package/frontend/src/features/logs/pages/LogsPage.tsx +152 -0
  474. package/frontend/src/features/logs/pages/MCPLogsPage.tsx +84 -0
  475. package/frontend/src/features/logs/services/audit.service.ts +63 -0
  476. package/frontend/src/features/logs/services/log.service.ts +15 -110
  477. package/frontend/src/features/logs/services/usage.service.ts +31 -0
  478. package/frontend/src/features/onboard/components/McpConnectionStatus.tsx +68 -0
  479. package/frontend/src/features/onboard/components/OnboardingModal.tsx +267 -0
  480. package/frontend/src/features/onboard/components/VideoDemoModal.tsx +38 -0
  481. package/frontend/src/features/onboard/components/index.ts +4 -0
  482. package/frontend/src/features/onboard/components/mcp/CursorDeeplinkGenerator.tsx +2 -2
  483. package/frontend/src/features/onboard/components/mcp/{mcp-helper.tsx → helpers.tsx} +8 -8
  484. package/frontend/src/features/onboard/components/mcp/index.ts +2 -3
  485. package/frontend/src/features/onboard/index.ts +13 -3
  486. package/frontend/src/features/realtime/components/ChannelRow.tsx +83 -0
  487. package/frontend/src/features/realtime/components/EditChannelModal.tsx +246 -0
  488. package/frontend/src/features/realtime/components/MessageRow.tsx +85 -0
  489. package/frontend/src/features/realtime/components/RealtimeEmptyState.tsx +30 -0
  490. package/frontend/src/features/realtime/hooks/useRealtime.ts +218 -0
  491. package/frontend/src/features/realtime/index.ts +11 -0
  492. package/frontend/src/features/realtime/pages/RealtimeChannelsPage.tsx +172 -0
  493. package/frontend/src/features/realtime/pages/RealtimeMessagesPage.tsx +211 -0
  494. package/frontend/src/features/realtime/pages/RealtimePermissionsPage.tsx +191 -0
  495. package/frontend/src/features/realtime/services/realtime.service.ts +107 -0
  496. package/frontend/src/features/storage/components/BucketEmptyState.tsx +9 -6
  497. package/frontend/src/features/storage/components/BucketFormDialog.tsx +25 -41
  498. package/frontend/src/features/storage/components/FilePreviewDialog.tsx +20 -8
  499. package/frontend/src/features/storage/components/StorageDataGrid.tsx +4 -3
  500. package/frontend/src/features/storage/components/StorageManager.tsx +23 -34
  501. package/frontend/src/features/storage/components/index.ts +12 -0
  502. package/frontend/src/features/storage/hooks/useStorage.ts +208 -0
  503. package/frontend/src/features/storage/{page → pages}/StoragePage.tsx +41 -143
  504. package/frontend/src/features/storage/services/storage.service.ts +22 -1
  505. package/frontend/src/features/visualizer/components/AuthNode.tsx +72 -56
  506. package/frontend/src/features/visualizer/components/BucketNode.tsx +4 -4
  507. package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +108 -80
  508. package/frontend/src/features/visualizer/components/TableNode.tsx +34 -41
  509. package/frontend/src/features/visualizer/components/VisualizerSkeleton.tsx +12 -4
  510. package/frontend/src/features/visualizer/pages/VisualizerPage.tsx +97 -0
  511. package/frontend/src/index.css +1 -0
  512. package/frontend/src/lib/analytics/posthog.tsx +27 -0
  513. package/frontend/src/lib/contexts/AuthContext.tsx +38 -31
  514. package/frontend/src/lib/contexts/SocketContext.tsx +123 -80
  515. package/frontend/src/{features/metadata → lib}/hooks/useMetadata.ts +1 -1
  516. package/frontend/src/lib/hooks/useToast.tsx +6 -2
  517. package/frontend/src/lib/routing/AppRoutes.tsx +99 -0
  518. package/frontend/src/lib/routing/RequireAuth.tsx +27 -0
  519. package/frontend/src/lib/utils/cloudMessaging.ts +20 -0
  520. package/frontend/src/lib/utils/menuItems.ts +207 -0
  521. package/frontend/src/lib/utils/{validation-schemas.ts → schemaValidations.ts} +10 -5
  522. package/frontend/src/lib/utils/utils.ts +32 -1
  523. package/frontend/src/vite-env.d.ts +1 -0
  524. package/frontend/tsconfig.json +25 -25
  525. package/frontend/tsconfig.node.json +9 -9
  526. package/frontend/vite.config.ts +5 -3
  527. package/functions/deno.json +24 -24
  528. package/functions/server.ts +315 -290
  529. package/functions/worker-template.js +15 -4
  530. package/i18n/README.ar.md +130 -0
  531. package/i18n/README.de.md +130 -0
  532. package/i18n/README.es.md +154 -0
  533. package/i18n/README.fr.md +134 -0
  534. package/i18n/README.hi.md +129 -0
  535. package/i18n/README.ja.md +174 -0
  536. package/i18n/README.ko.md +137 -0
  537. package/i18n/README.pt-BR.md +131 -0
  538. package/i18n/README.ru.md +129 -0
  539. package/i18n/README.zh-CN.md +133 -0
  540. package/openapi/ai.yaml +715 -688
  541. package/openapi/auth.yaml +1244 -563
  542. package/openapi/email.yaml +158 -0
  543. package/openapi/functions.yaml +475 -475
  544. package/openapi/health.yaml +29 -29
  545. package/openapi/logs.yaml +223 -223
  546. package/openapi/metadata.yaml +177 -177
  547. package/openapi/realtime.yaml +699 -0
  548. package/openapi/records.yaml +381 -381
  549. package/openapi/secrets.yaml +370 -370
  550. package/openapi/storage.yaml +875 -875
  551. package/openapi/tables.yaml +463 -463
  552. package/package.json +97 -88
  553. package/shared-schemas/package.json +31 -31
  554. package/shared-schemas/src/ai-api.schema.ts +34 -58
  555. package/shared-schemas/src/ai.schema.ts +63 -54
  556. package/shared-schemas/src/auth-api.schema.ts +352 -193
  557. package/shared-schemas/src/auth.schema.ts +43 -7
  558. package/shared-schemas/src/cloud-events.schema.ts +57 -0
  559. package/shared-schemas/src/database-api.schema.ts +35 -4
  560. package/shared-schemas/src/database.schema.ts +40 -1
  561. package/shared-schemas/src/docs.schema.ts +26 -0
  562. package/shared-schemas/src/email-api.schema.ts +30 -0
  563. package/shared-schemas/src/index.ts +5 -0
  564. package/shared-schemas/src/logs-api.schema.ts +7 -1
  565. package/shared-schemas/src/logs.schema.ts +26 -0
  566. package/shared-schemas/src/metadata.schema.ts +18 -4
  567. package/shared-schemas/src/realtime-api.schema.ts +111 -0
  568. package/shared-schemas/src/realtime.schema.ts +143 -0
  569. package/shared-schemas/tsconfig.json +21 -21
  570. package/tsconfig.json +7 -7
  571. package/zeabur/README.md +13 -0
  572. package/zeabur/template.yml +1032 -0
  573. package/.github/workflows/deploy-aws.yml +0 -130
  574. package/backend/src/api/routes/agent.ts +0 -29
  575. package/backend/src/api/routes/auth.oauth.ts +0 -482
  576. package/backend/src/api/routes/auth.ts +0 -386
  577. package/backend/src/api/routes/docs.ts +0 -66
  578. package/backend/src/api/routes/functions.ts +0 -183
  579. package/backend/src/api/routes/openapi.ts +0 -82
  580. package/backend/src/api/routes/usage.ts +0 -96
  581. package/backend/src/core/ai/client.ts +0 -242
  582. package/backend/src/core/ai/model.ts +0 -117
  583. package/backend/src/core/auth/auth.ts +0 -780
  584. package/backend/src/core/database/manager.ts +0 -178
  585. package/backend/src/core/database/table.ts +0 -772
  586. package/backend/src/core/documentation/agent.ts +0 -689
  587. package/backend/src/core/documentation/openapi.ts +0 -856
  588. package/backend/src/core/logs/analytics.ts +0 -76
  589. package/backend/src/core/logs/providers/localdb.provider.ts +0 -246
  590. package/backend/src/core/socket/socket.ts +0 -388
  591. package/backend/src/core/storage/storage.ts +0 -923
  592. package/backend/src/utils/cloud-token.ts +0 -39
  593. package/backend/src/utils/helpers.ts +0 -49
  594. package/backend/src/utils/uuid.ts +0 -9
  595. package/backend/tests/manual/test-better-auth.sh +0 -303
  596. package/docker-init/db/logs.sql +0 -9
  597. package/frontend/README.md +0 -112
  598. package/frontend/src/components/datagrid/index.tsx +0 -20
  599. package/frontend/src/components/layout/CloudLayout.tsx +0 -95
  600. package/frontend/src/features/ai/components/AIConfigDialog.tsx +0 -76
  601. package/frontend/src/features/ai/components/AIConfigForm.tsx +0 -222
  602. package/frontend/src/features/ai/components/fields/ModalityField.tsx +0 -87
  603. package/frontend/src/features/ai/components/fields/ModelSelectionField.tsx +0 -134
  604. package/frontend/src/features/ai/components/fields/SystemPromptField.tsx +0 -33
  605. package/frontend/src/features/ai/page/AIPage.tsx +0 -178
  606. package/frontend/src/features/auth/components/AddOAuthDialog.tsx +0 -106
  607. package/frontend/src/features/auth/components/AuthMethodTab.tsx +0 -238
  608. package/frontend/src/features/auth/components/UsersTab.tsx +0 -114
  609. package/frontend/src/features/auth/page/AuthenticationPage.tsx +0 -169
  610. package/frontend/src/features/dashboard/page/DashboardPage.tsx +0 -194
  611. package/frontend/src/features/database/hooks/UseLinkModal.tsx +0 -78
  612. package/frontend/src/features/functions/components/FunctionViewer.tsx +0 -46
  613. package/frontend/src/features/functions/components/FunctionsContent.tsx +0 -88
  614. package/frontend/src/features/functions/page/FunctionsPage.tsx +0 -28
  615. package/frontend/src/features/login/components/AuthErrorBoundary.tsx +0 -87
  616. package/frontend/src/features/login/components/PrivateRoute.tsx +0 -24
  617. package/frontend/src/features/login/page/CloudLoginPage.tsx +0 -93
  618. package/frontend/src/features/logs/components/AnalyticsLogsTable.tsx +0 -313
  619. package/frontend/src/features/logs/components/LogsTable.tsx +0 -199
  620. package/frontend/src/features/logs/page/AnalyticsLogsPage.tsx +0 -530
  621. package/frontend/src/features/metadata/index.ts +0 -0
  622. package/frontend/src/features/metadata/page/MetadataPage.tsx +0 -136
  623. package/frontend/src/features/onboard/components/CompletionCard.tsx +0 -41
  624. package/frontend/src/features/onboard/components/OnboardButton.tsx +0 -84
  625. package/frontend/src/features/onboard/components/StepContent.tsx +0 -91
  626. package/frontend/src/features/onboard/components/TestConnectionStep.tsx +0 -53
  627. package/frontend/src/features/onboard/components/mcp/McpInstallation.tsx +0 -144
  628. package/frontend/src/features/onboard/page/OnBoardPage.tsx +0 -104
  629. package/frontend/src/features/onboard/types.ts +0 -8
  630. package/frontend/src/features/visualizer/page/VisualizerPage.tsx +0 -127
  631. package/frontend/src/lib/contexts/OnboardStepContext.tsx +0 -68
  632. package/frontend/src/lib/hooks/useOnboardingCompletion.ts +0 -29
  633. /package/backend/src/api/{middleware → middlewares}/error.ts +0 -0
  634. /package/backend/src/api/{middleware → middlewares}/upload.ts +0 -0
  635. /package/frontend/src/{features/metadata → lib}/services/metadata.service.ts +0 -0
@@ -0,0 +1,19 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M9.06145 23.1079C5.26816 22.3769 -3.39077 20.6274 1.4173 5.06384C9.6344 6.09939 16.9728 14.0644 9.06145 23.1079Z" fill="url(#paint0_linear_17557_2021)"/>
3
+ <path d="M8.91928 23.0939C5.27642 21.2223 0.78371 4.20891 17.0071 0C20.7569 7.19341 19.6212 16.5452 8.91928 23.0939Z" fill="url(#paint1_linear_17557_2021)"/>
4
+ <path d="M8.91388 23.0788C8.73534 19.8817 10.1585 9.08525 23.5699 13.1107C23.1812 20.1229 18.984 26.4182 8.91388 23.0788Z" fill="url(#paint2_linear_17557_2021)"/>
5
+ <defs>
6
+ <linearGradient id="paint0_linear_17557_2021" x1="3.77557" y1="5.91571" x2="5.23185" y2="21.5589" gradientUnits="userSpaceOnUse">
7
+ <stop stop-color="#18E299"/>
8
+ <stop offset="1" stop-color="#15803D"/>
9
+ </linearGradient>
10
+ <linearGradient id="paint1_linear_17557_2021" x1="12.1711" y1="-0.718425" x2="10.1897" y2="22.9832" gradientUnits="userSpaceOnUse">
11
+ <stop stop-color="#16A34A"/>
12
+ <stop offset="1" stop-color="#4ADE80"/>
13
+ </linearGradient>
14
+ <linearGradient id="paint2_linear_17557_2021" x1="23.1327" y1="15.353" x2="9.33841" y2="18.5196" gradientUnits="userSpaceOnUse">
15
+ <stop stop-color="#4ADE80"/>
16
+ <stop offset="1" stop-color="#0D9373"/>
17
+ </linearGradient>
18
+ </defs>
19
+ </svg>
Binary file
Binary file
Binary file
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M11.8121 3.04199C11.8641 2.85054 12.1361 2.85051 12.1881 3.04199L13.8687 9.28613C13.9794 9.69726 14.3014 10.0182 14.7125 10.1289L20.9557 11.8105C21.1477 11.8623 21.1477 12.1348 20.9557 12.1865L14.7125 13.8672C14.3014 13.9779 13.9794 14.2998 13.8687 14.7109L12.1881 20.9541C12.1364 21.1461 11.8638 21.1461 11.8121 20.9541L10.1305 14.7109C10.0198 14.2998 9.69881 13.9779 9.28769 13.8672L3.04355 12.1865C2.85206 12.1346 2.8521 11.8625 3.04355 11.8105L9.28769 10.1289C9.69881 10.0182 10.0198 9.69726 10.1305 9.28613L11.8121 3.04199Z" stroke="white"/>
3
+ <path d="M19.5904 2.55907C19.648 2.34489 19.9519 2.34489 20.0096 2.55907L20.535 4.5103C20.5551 4.585 20.6134 4.64335 20.6881 4.66347L22.6394 5.18883C22.8535 5.2465 22.8535 5.55038 22.6394 5.60804L20.6881 6.13341C20.6134 6.15352 20.5551 6.21187 20.535 6.28658L20.0096 8.2378C19.9519 8.45198 19.648 8.45198 19.5904 8.2378L19.065 6.28658C19.0449 6.21187 18.9866 6.15352 18.9118 6.13341L16.9606 5.60804C16.7464 5.55038 16.7464 5.2465 16.9606 5.18883L18.9118 4.66347C18.9866 4.64335 19.0449 4.585 19.065 4.5103L19.5904 2.55907Z" fill="white"/>
4
+ </svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M252.31-100q-29.92 0-51.12-21.19Q180-142.39 180-172.31v-375.38q0-29.92 21.19-51.12Q222.39-620 252.31-620H300v-80q0-74.92 52.54-127.46Q405.08-880 480-880q74.92 0 127.46 52.54Q660-774.92 660-700v80h47.69q29.92 0 51.12 21.19Q780-577.61 780-547.69v375.38q0 29.92-21.19 51.12Q737.61-100 707.69-100H252.31Zm0-60h455.38q5.39 0 8.85-3.46t3.46-8.85v-375.38q0-5.39-3.46-8.85t-8.85-3.46H252.31q-5.39 0-8.85 3.46t-3.46 8.85v375.38q0 5.39 3.46 8.85t8.85 3.46ZM480-290q29.15 0 49.58-20.42Q550-330.85 550-360t-20.42-49.58Q509.15-430 480-430t-49.58 20.42Q410-389.15 410-360t20.42 49.58Q450.85-290 480-290ZM360-620h240v-80q0-50-35-85t-85-35q-50 0-85 35t-35 85v80ZM240-160v-400 400Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M480-140q-145.61 0-242.81-41.12Q140-222.23 140-283.85V-680q0-57.92 99.54-98.96Q339.08-820 480-820q140.92 0 240.46 41.04Q820-737.92 820-680v396.15q0 61.62-97.19 102.73Q625.61-140 480-140Zm0-461.69q87.46 0 176.12-24.73 88.65-24.73 102.73-53.35-13.7-29.38-101.66-54.81Q569.23-760 480-760q-89.08 0-176.58 24.73-87.5 24.73-103.04 53.96 15.16 30 102.27 54.81 87.12 24.81 177.35 24.81Zm0 200.15q41.62 0 81-4t75.27-11.69q35.88-7.69 67.19-19.08 31.31-11.38 56.54-25.77V-604q-25.23 14.38-56.54 25.77-31.31 11.38-67.19 19.07-35.89 7.7-75.27 11.7-39.38 4-81 4-42.38 0-82.58-4.2-40.19-4.19-75.88-11.88t-66.5-18.88Q224.23-589.62 200-604v141.92q24.23 14.39 55.04 25.58 30.81 11.19 66.5 18.88 35.69 7.7 75.88 11.89 40.2 4.19 82.58 4.19ZM480-200q48.69 0 95.62-6.42 46.92-6.43 85.38-17.54 38.46-11.12 64.88-25.81 26.43-14.69 34.12-30.85v-121.46q-25.23 14.39-56.54 25.77-31.31 11.39-67.19 19.08-35.89 7.69-75.27 11.69-39.38 4-81 4-42.38 0-82.58-4.19-40.19-4.19-75.88-11.89-35.69-7.69-66.5-18.88-30.81-11.19-55.04-25.58V-280q7.69 16.54 33.81 30.73 26.11 14.19 64.57 25.31 38.47 11.11 85.7 17.54Q431.31-200 480-200Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M320-240 80-480l240-240 57 57-184 184 183 183-56 56Zm320 0-57-57 184-184-183-183 56-56 240 240-240 240Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M212.31-140Q182-140 161-161q-21-21-21-51.31v-535.38Q140-778 161-799q21-21 51.31-21h535.38Q778-820 799-799q21 21 21 51.31v535.38Q820-182 799-161q-21 21-51.31 21H212.31ZM200-613.54h560v-134.15q0-4.62-3.85-8.46-3.84-3.85-8.46-3.85H212.31q-4.62 0-8.46 3.85-3.85 3.84-3.85 8.46v134.15Zm0 207.08h560v-147.08H200v147.08ZM212.31-200h535.38q4.62 0 8.46-3.85 3.85-3.84 3.85-8.46v-134.15H200v134.15q0 4.62 3.85 8.46 3.84 3.85 8.46 3.85Zm43.08-450.92v-72.31h72.3v72.31h-72.3Zm0 207.07v-72.3h72.3v72.3h-72.3Zm0 207.08v-72.31h72.3v72.31h-72.3Z"/></svg>
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="-2" y="-2" width="28" height="28" fill="#0a0a0a"/>
3
+ <path d="M17.3255 21.9996C17.2425 22.0435 17.2471 22.0612 17.3302 22.0192C17.3545 22.0088 17.3767 21.9939 17.3955 21.9753C17.3955 21.9604 17.3937 21.9623 17.3255 21.9996ZM17.4917 21.9119C17.4525 21.9427 17.4525 21.9445 17.5001 21.9203C17.5262 21.9072 17.5486 21.8923 17.5486 21.8876C17.5486 21.8699 17.5374 21.8745 17.4917 21.9119ZM17.6009 21.8456C17.5617 21.8764 17.5617 21.8783 17.6093 21.854C17.6354 21.8409 17.6578 21.826 17.6578 21.8213C17.6578 21.8036 17.6466 21.8083 17.6009 21.8456ZM17.7101 21.7803C17.6709 21.8111 17.6709 21.8129 17.7185 21.7887C17.7446 21.7756 17.767 21.7607 17.767 21.756C17.767 21.7383 17.7558 21.7429 17.7101 21.7803ZM17.8613 21.6823C17.7847 21.7308 17.7605 21.7635 17.8286 21.7261C17.8771 21.6981 17.9555 21.6384 17.9425 21.6365C17.9138 21.6488 17.8866 21.6642 17.8613 21.6823ZM11.1665 1.00333C11.1179 1.008 10.9649 1.02293 10.8267 1.03413C7.64593 1.32066 4.6658 3.03706 2.7786 5.6756C1.73528 7.1238 1.05713 8.80254 0.8018 10.569C0.7122 11.1841 0.7001 11.3661 0.7001 12.2005C0.7001 13.0349 0.7122 13.216 0.8018 13.832C1.41033 18.0376 4.40353 21.5712 8.4626 22.8807C9.18967 23.1149 9.95593 23.2745 10.8267 23.3707C11.1665 23.408 12.6327 23.408 12.9725 23.3707C14.4761 23.2045 15.751 22.8321 17.0073 22.1909C17.1995 22.092 17.2369 22.0659 17.2107 22.0444C16.5971 21.2336 15.9892 20.4185 15.387 19.5991L13.5959 17.1799L11.3522 13.8591C10.6062 12.7479 9.85296 11.6416 9.0926 10.5401C9.0842 10.5383 9.07487 12.0139 9.07113 13.8152C9.0646 16.9699 9.06273 17.0968 9.0226 17.1715C8.9845 17.2587 8.91625 17.3293 8.83033 17.3703C8.76033 17.4057 8.69873 17.4123 8.36833 17.4123H7.9894L7.8886 17.3488C7.82641 17.3096 7.77582 17.2545 7.74207 17.1892L7.69633 17.0903L7.701 12.7008L7.70753 8.30946L7.77567 8.22453C7.82144 8.17075 7.87644 8.12555 7.93807 8.09106C8.02767 8.0472 8.06313 8.04253 8.44207 8.04253C8.88913 8.04253 8.96286 8.06026 9.07953 8.1872C9.9878 9.53889 10.8885 10.8957 11.7815 12.2575C13.2357 14.462 15.2227 17.472 16.1999 18.9504L17.9733 21.6365L18.0629 21.5777C18.9162 21.0102 19.6899 20.3312 20.3635 19.5589C21.7747 17.944 22.6899 15.9561 22.9993 13.8339C23.0889 13.2188 23.1001 13.0368 23.1001 12.2024C23.1001 11.368 23.0889 11.1869 22.9993 10.5709C22.3907 6.36533 19.3975 2.83173 15.3385 1.52226C14.5799 1.28076 13.7987 1.11721 13.007 1.03413C12.797 1.01266 11.3494 0.988397 11.1683 1.00613L11.1665 1.00333ZM15.751 7.77746C15.8032 7.8037 15.8496 7.84007 15.8876 7.88446C15.9256 7.92885 15.9544 7.98037 15.9722 8.036C15.99 8.09293 15.9937 9.31 15.99 12.0531L15.9834 15.9899L15.289 14.9259L14.5927 13.8619V11.0003C14.5927 9.1504 14.6011 8.11066 14.6142 8.06026C14.63 8.0021 14.6573 7.94769 14.6945 7.90024C14.7317 7.85279 14.778 7.81327 14.8307 7.784C14.9203 7.73826 14.953 7.7336 15.2974 7.7336C15.6213 7.7336 15.6782 7.73826 15.751 7.77746Z" fill="#6EE7B7"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="-2" y="-2" width="28" height="28" fill="#0a0a0a"/>
3
+ <path d="M13.79 17.0515H18.594C18.907 17.0515 19.206 16.9415 19.477 16.7865C19.748 16.6314 20.027 16.4367 20.184 16.1681C20.34 15.8995 20.449 15.5948 20.449 15.2847C20.449 14.9746 20.34 14.67 20.184 14.4015L16.559 9.00645C16.402 8.73789 16.211 8.54314 15.941 8.38808C15.67 8.23308 15.282 8.12308 14.969 8.12308C14.656 8.12308 14.356 8.23308 14.086 8.38808C13.815 8.54314 13.624 8.73789 13.467 9.00645L13.79 9.92145L11.432 6.26789C11.276 5.99939 11.085 5.71645 10.814 5.56145C10.543 5.40639 10.243 5.38477 9.931 5.38477C9.618 5.38477 9.318 5.40639 9.047 5.56145C8.776 5.71645 8.497 5.99939 8.341 6.26789L3.126 14.4015C2.969 14.67 2.949 14.9746 2.949 15.2847C2.949 15.5948 2.969 15.8995 3.126 16.1681C3.282 16.4366 3.561 16.6314 3.832 16.7865C4.103 16.9415 4.403 17.0515 4.716 17.0515H8.899C10.349 17.0515 11.132 16.9524 11.376 15.8715L12.379 13.6598L13.969 10.9215L16.827 15.2248H12.379L13.79 17.0515ZM8.811 15.2248H5.482L9.931 8.09477L11.199 10.6598L10.034 12.4338C9.208 13.784 8.267 15.2248 8.811 15.2248Z" fill="#6EE7B7"/>
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="-2" y="-2" width="28" height="28" fill="#0a0a0a"/>
3
+ <path d="M14.1431 10.3804C14.1431 9.23289 13.1837 8.30249 12 8.30249C10.8165 8.30249 9.85687 9.23289 9.85687 10.3804C9.85687 11.5281 10.8165 12.4584 12 12.4584C13.1837 12.4584 14.1431 11.5281 14.1431 10.3804Z" fill="#6EE7B7"/>
4
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M18.9603 6.52296C19.4129 4.73982 19.9818 1.43318 17.9763 0.312127C15.9802 -0.804041 13.3827 1.33474 12.0111 2.61854C10.6435 1.34754 7.97304 -0.782105 5.9693 0.342511C3.97401 1.46242 4.58931 4.71424 5.05192 6.50856C3.19065 7.02112 0 8.12512 0 10.3807C0 12.6299 3.18733 13.831 5.03758 14.3431C4.57326 16.1474 3.98877 19.3527 5.98662 20.4702C7.99784 21.5946 10.66 19.5156 12.0443 18.2178C13.4247 19.5091 15.9973 21.6017 17.9938 20.4811C19.9965 19.357 19.4749 16.0947 19.0122 14.29C20.8058 13.7768 24 12.6018 24 10.3807C24 8.1468 20.7922 7.03384 18.9603 6.52296ZM18.733 13.3336C18.4292 12.4013 18.0192 11.4098 17.5177 10.3857C17.9964 9.38568 18.3905 8.40704 18.6858 7.48072C20.0287 7.85824 22.9748 8.72104 22.9748 10.3807C22.9748 12.056 20.1477 12.927 18.733 13.3336ZM17.48 19.6208C15.9904 20.4568 13.7777 18.4557 12.7582 17.5047C13.4346 16.7875 14.1104 15.9538 14.77 15.0279C15.9303 14.9282 17.0264 14.765 18.0205 14.5422C18.3461 15.8187 18.9762 18.781 17.48 19.6208ZM6.4989 19.6089C5.00914 18.776 5.69006 15.9157 6.03166 14.5866C7.01467 14.7975 8.10288 14.9492 9.26592 15.0406C9.92984 15.9466 10.6253 16.7793 11.3261 17.5086C10.4602 18.3206 7.9956 20.4456 6.4989 19.6089ZM1.02519 10.3807C1.02519 8.6992 3.95366 7.84264 5.32723 7.46608C5.62761 8.4132 6.02156 9.40352 6.49698 10.405C6.0154 11.4213 5.61582 12.4273 5.31268 13.3856C4.00295 13.0221 1.02519 12.0633 1.02519 10.3807ZM6.48296 1.20283C7.9788 0.363327 10.2998 2.40786 11.2927 3.3281C10.5955 4.05403 9.90648 4.88048 9.24824 5.7812C8.11952 5.88264 7.039 6.04552 6.04567 6.26376C5.673 4.81657 4.98874 2.04143 6.48296 1.20283ZM15.5034 6.86168C16.2692 6.95536 17.0029 7.08 17.6918 7.23248C17.485 7.8752 17.2272 8.54728 16.9236 9.23624C16.4835 8.42664 16.0111 7.63328 15.5034 6.86168ZM12.0114 4.03848C12.4843 4.53518 12.9579 5.08984 13.4238 5.6916C12.4788 5.64824 11.5322 5.64808 10.5872 5.69096C11.0535 5.09478 11.5312 4.54094 12.0114 4.03848ZM7.0852 9.23552C6.78663 8.54896 6.53118 7.87392 6.32258 7.222C7.00734 7.07344 7.7376 6.952 8.4984 6.85984C7.98928 7.62976 7.51768 8.4228 7.0852 9.23552ZM8.52024 13.9726C7.73432 13.8875 6.99301 13.7722 6.30845 13.6278C6.52035 12.9644 6.78142 12.2748 7.08637 11.5734C7.5248 12.3946 8.0036 13.1954 8.52024 13.9726ZM12.0398 16.7932C11.5539 16.2848 11.0692 15.7225 10.5958 15.1177C11.5462 15.1538 12.4985 15.1539 13.4488 15.1128C12.9814 15.7286 12.5095 16.2918 12.0398 16.7932ZM16.9334 11.5378C17.2542 12.2467 17.5246 12.9326 17.7394 13.5847C17.0434 13.7387 16.2922 13.8627 15.5006 13.9548C16.012 13.1686 16.4919 12.3629 16.9334 11.5378ZM14.1978 14.0753C12.7441 14.176 11.2813 14.1749 9.82704 14.0835C9.00072 12.9132 8.26512 11.6824 7.63016 10.4046C8.26208 9.12952 8.99232 7.90112 9.81472 6.73264C11.27 6.626 12.7342 6.62568 14.1895 6.73328C15.0049 7.90168 15.734 9.12688 16.3806 10.3905C15.7417 11.665 15.0076 12.8958 14.1978 14.0753ZM17.4642 1.17328C18.9605 2.01003 18.2945 4.98181 17.9676 6.27408C16.9719 6.05128 15.8906 5.88552 14.7586 5.78248C14.0991 4.87203 13.4158 4.04414 12.7299 3.32759C13.7356 2.38753 15.9825 0.344711 17.4642 1.17328Z" fill="#6EE7B7"/>
5
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="-2" y="-2" width="28" height="28" fill="#0a0a0a"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M18.1327 6.67366C18.7462 7.61835 18.8096 8.64263 18.4961 9.41843C17.9177 8.87197 17.2247 8.48048 16.4975 8.28788C16.5061 8.12730 16.4657 7.96260 16.3715 7.81740C16.1346 7.45265 15.6469 7.34898 15.2822 7.58588L13.5224 8.72865C13.5219 8.72895 13.5214 8.72925 13.5209 8.72963L10.8791 10.4452C10.5143 10.6821 10.4107 11.1698 10.6475 11.5346C10.8844 11.8994 11.3722 12.003 11.7369 11.7662L14.3795 10.05C14.3792 10.0502 14.3797 10.0499 14.3795 10.05C15.3820 9.39968 16.9500 9.74918 17.9327 11.1854C18.9157 12.6221 18.5265 14.2428 17.5241 14.8938L12.2404 18.3251C11.238 18.9761 9.66935 18.6267 8.6864 17.1901C8.07281 16.2454 8.00952 15.2211 8.32306 14.4453C8.90139 14.9918 9.59444 15.3833 10.3216 15.5759C10.313 15.7365 10.3533 15.9012 10.4475 16.0464C10.6845 16.4111 11.1722 16.5148 11.5369 16.2779L16.4401 13.4186C16.8047 13.1817 16.9084 12.694 16.6716 12.3292C16.4347 11.9645 15.9469 11.8608 15.5822 12.0977L12.9402 13.8134C12.94 13.8135 12.9404 13.8133 12.9402 13.8134C11.9377 14.4642 10.3692 14.1149 9.38636 12.6783C8.40341 11.2417 8.79265 9.62093 9.79505 8.96994L15.0788 5.53871C16.0811 4.88773 17.6497 5.23703 18.1327 6.67366ZM19.5279 10.8058C20.5307 9.42090 20.4769 7.39157 19.4537 5.81585C18.1757 3.84808 15.6366 2.97377 13.7209 4.21781L8.43726 7.64904C6.67284 8.79488 6.33499 11.1549 7.29119 13.0580C6.28842 14.4428 6.34222 16.4722 7.3655 18.0479C8.64336 20.0157 11.1826 20.89 13.0982 19.646L18.3818 16.2147C20.1462 15.0689 20.4841 12.7089 19.5279 10.8058Z" fill="#6EE7B7"/>
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="-2" y="-2" width="28" height="28" fill="#0a0a0a"/>
3
+ <path d="M12 8.1015L10.5723 5.89673H8.59717L12 11.1207L15.4027 5.89673H13.4277L12 8.1015Z" fill="#6EE7B7"/>
4
+ <path d="M16.7113 5.89697L12 13.5209L7.28877 5.89697H4.98865L12 17.604L19.0114 5.89697H16.7113Z" fill="#6EE7B7"/>
5
+ </svg>
Binary file
Binary file
@@ -1,407 +1,89 @@
1
- # InsForge SDK Documentation
2
-
3
- ## What Insforge OSS Does
4
-
5
- Backend-as-a-service with database, authentication, file storage, out of box AI abilities
6
-
7
- **Key Concept**: InsForge replaces your traditional backend - implement business logic by calling database operations directly. Instead of building API endpoints, use our database API as your application's backend.
8
-
9
- ## Critical Rule: Check Metadata First
10
-
11
- Before ANY operation, call `get-backend-metadata` to get the current backend state.
12
-
13
- ## When to Use SDK vs MCP Tools
14
-
15
- ### Use SDK for:
16
- - Authentication (register, login, logout)
17
- - Database CRUD operations (select, insert, update, delete)
18
- - User profile management
19
- - AI operations (chat completions, image generation)
20
- - Storage operations (upload, download, list files)
21
- - Application logic
22
-
23
- ### Use MCP Tools for:
24
- - Getting started & documentation (`get-instructions`)
25
- - Database operations (`run-raw-sql` for CREATE/ALTER/DROP tables, `get-table-schema` for inspection)
26
- - Backend metadata (`get-backend-metadata`)
27
- - Storage bucket creation (`create-bucket`, `list-buckets`, `delete-bucket`)
28
- - Edge Functions Creation and Upload (`create-function`, `get-function`, `update-function`, `delete-function`)
29
- - **Important**: Edge functions should only be used for backend API services
30
- - **CRITICAL**: Edge functions do NOT support subpaths - single endpoint only per function
31
- - ❌ **Will NOT work**: `/functions/my-api/users`, `/functions/my-api/posts/123`, `/functions/my-api/admin/stats`
32
- - ✅ **Will work**: `/functions/my-api` with `{ "action": "getUsers" }`, `/functions/my-api` with `{ "action": "getPost", "id": 123 }`
33
- - Use request method + body to route: `GET /functions/task-api?action=list`, `POST /functions/task-api {"action": "create", "title": "New"}`
34
-
35
- ### Edge Functions Pattern
36
-
37
- **Create secure edge functions using Insforge SDK:**
38
-
39
- ```javascript
40
- // No import needed - createClient is injected by the worker template
41
- module.exports = async function(request) {
42
- // CORS headers
43
- const corsHeaders = {
44
- 'Access-Control-Allow-Origin': '*',
45
- 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
46
- 'Access-Control-Allow-Headers': 'Content-Type, Authorization'
47
- };
48
-
49
- // Handle OPTIONS
50
- if (request.method === 'OPTIONS') {
51
- return new Response(null, { status: 204, headers: corsHeaders });
52
- }
53
-
54
- // Extract token from request headers
55
- const authHeader = request.headers.get('Authorization');
56
- const userToken = authHeader ? authHeader.replace('Bearer ', '') : null;
57
-
58
- // Create client with the edge function token
59
- // Use BACKEND_INTERNAL_URL environment variable for internal Docker communication
60
- const client = createClient({
61
- baseUrl: Deno.env.get('BACKEND_INTERNAL_URL') || 'http://insforge:7130',
62
- edgeFunctionToken: userToken
63
- });
64
-
65
- // Example: Get authenticated user for database operations
66
- const { data: userData } = await client.auth.getCurrentUser();
67
- if (userData?.user?.id) {
68
- // Use userData.user.id for foreign key constraints
69
- await client.database.from('table').insert([{ user_id: userData.user.id }]);
70
- }
71
- }
72
- ```
73
-
74
- ## Setup
75
-
76
- ```bash
77
- npm install @insforge/sdk
78
- ```
79
-
80
- ```javascript
81
- import { createClient } from '@insforge/sdk';
82
- const client = createClient({ baseUrl: 'http://localhost:7130' });
83
- ```
84
-
85
- ## Authentication
86
-
87
- ```javascript
88
- // Sign Up
89
- const { data, error } = await client.auth.signUp({
90
- email: 'user@example.com',
91
- password: 'password123'
92
- });
93
- // Returns: { user: {...}, accessToken: 'jwt...' }
94
- // Backend auto-creates user profile in 'users' table
95
-
96
- // Sign In
97
- const { data, error } = await client.auth.signInWithPassword({
98
- email: 'user@example.com',
99
- password: 'password123'
100
- });
101
- // Token stored automatically for all requests
102
-
103
- // Sign In with OAuth
104
- const { data, error } = await client.auth.signInWithOAuth({
105
- provider: 'google'|'github',
106
- redirectTo: window.location.origin,
107
- skipBrowserRedirect: true
108
- })
109
- // Returns: { data: { url, provider }, error }
110
-
111
- // Manual redirect required
112
- if (data?.url) {
113
- window.location.href = data.url
114
- }
115
-
116
- // ⚠️ IMPORTANT: No callback handling needed!
117
- // After OAuth, user returns to redirectTo URL already authenticated
118
- // The SDK automatically:
119
- // - Handles the OAuth callback
120
- // - Stores the JWT token
121
- // - Makes user available via getCurrentUser()
122
-
123
- // ❌ DON'T DO THIS (not needed):
124
- // const accessToken = urlParams.get('access_token')
125
- // const userId = urlParams.get('user_id')
126
-
127
- // ✅ DO THIS INSTEAD (after redirect back):
128
- const { data, error } = await client.auth.getCurrentUser()
129
-
130
- // Get Current User (with profile)
131
- const { data, error } = await client.auth.getCurrentUser();
132
- // Returns: {
133
- // user: {id, email, role}, // Auth data
134
- // profile: {id, nickname, ...} // Users table data (object, not array!)
135
- // }
136
-
137
- // Update Profile
138
- const { data, error } = await client.auth.setProfile({
139
- nickname: 'John',
140
- bio: 'Developer',
141
- avatar_url: 'https://...'
142
- });
143
- // Returns: {id, nickname, bio, ...} // Single object, not array!
144
-
145
- // Get Any User's Profile
146
- const { data, error } = await client.auth.getProfile(userId);
147
- // Returns: {id, nickname, bio, ...} // Single object, not array!
148
-
149
- // Get Session (local storage only, no API call)
150
- const { data } = await client.auth.getCurrentSession();
151
- // Returns: { session: { accessToken: 'jwt...', user: {...} } }
152
-
153
- // Sign Out
154
- await client.auth.signOut();
155
- ```
156
-
157
- ## Database Operations
158
-
159
- Before ANY operation, call `get-backend-metadata` to get the current backend state.
160
-
161
- ```javascript
162
- // Select with filters
163
- const { data, error } = await client.database
164
- .from('posts')
165
- .select('*, users!inner(*)')
166
- .eq('user_id', userId)
167
- .order('created_at', { ascending: false })
168
- .limit(10);
169
-
170
- // Insert (array required, but use .single() for one record)
171
- const { data, error } = await client.database
172
- .from('posts')
173
- .insert([{
174
- title: 'My Post',
175
- user_id: userId,
176
- image_url: 'https://...'
177
- }])
178
- .select()
179
- .single(); // Returns single object!
180
-
181
- // Update (returns single object with .single())
182
- const { data, error } = await client.database
183
- .from('users')
184
- .update({ nickname: 'John', bio: 'Developer' })
185
- .eq('id', userId)
186
- .select()
187
- .single(); // Returns single object!
188
-
189
- // Delete
190
- const { data, error } = await client.database
191
- .from('posts')
192
- .delete()
193
- .eq('id', postId);
194
- ```
195
-
196
- ## Edge Functions Invocation
197
-
198
- Invoke deployed edge functions from the SDK (similar to Supabase):
199
-
200
- ```javascript
201
- // Basic invocation with JSON body (POST by default)
202
- const { data, error } = await client.functions.invoke('hello-world', {
203
- body: { name: 'World' }
204
- });
205
-
206
- // GET request (no body)
207
- const { data, error } = await client.functions.invoke('my-function', {
208
- method: 'GET'
209
- });
210
-
211
- // With custom headers
212
- const { data, error } = await client.functions.invoke('my-function', {
213
- body: { action: 'create', item: 'task' },
214
- headers: { 'x-custom-header': 'value' }
215
- });
216
-
217
- // Different HTTP methods
218
- const { data, error } = await client.functions.invoke('api-endpoint', {
219
- method: 'PUT',
220
- body: { id: '123', status: 'active' }
221
- });
222
-
223
- // Error handling
224
- if (error) {
225
- console.error('Function error:', error.message);
226
- } else {
227
- console.log('Success:', data);
228
- }
229
- ```
230
-
231
- ## Storage Operations
232
-
233
- Before ANY operation, call `get-backend-metadata` to get the current backend state.
234
-
235
- ```javascript
236
- // Upload file with auto-generated key
237
- const { data, error } = await client.storage
238
- .from('images')
239
- .uploadAuto(fileObject);
240
-
241
- // data.url = "http://localhost:7130/api/storage/buckets/images/objects/file-timestamp-random.jpg"
242
-
243
- // Or upload with specific key
244
- const { data, error } = await client.storage
245
- .from('images')
246
- .upload('custom-name.jpg', fileObject);
247
-
248
- // Download file
249
- const { data: blob, error } = await client.storage
250
- .from('images')
251
- .download('file.jpg');
252
-
253
- // Get public URL (no API call)
254
- const url = client.storage
255
- .from('images')
256
- .getPublicUrl('file.jpg');
257
- ```
258
-
259
- ## AI Operations
260
-
261
- Before ANY operation, call `get-backend-metadata` to get the current backend state.
262
-
263
- ### Chat Completions (OpenAI-compatible response)
264
-
265
- ```javascript
266
- // Non-streaming chat completion (OpenAI-compatible response)
267
- const completion = await client.ai.chat.completions.create({
268
- model: 'openai/gpt-4o',
269
- messages: [
270
- {
271
- role: 'system',
272
- content: 'You are a helpful assistant'
273
- },
274
- {
275
- role: 'user',
276
- content: 'What is the capital of France?',
277
- images: [ // Optional: attach images for vision models
278
- { url: 'https://example.com/image.jpg' },
279
- { url: 'data:image/jpeg;base64,...' } // Base64 also supported
280
- ]
281
- }
282
- ],
283
- temperature: 0.7, // Optional: 0-2
284
- maxTokens: 1000, // Optional: max completion tokens
285
- topP: 0.9, // Optional: 0-1
286
- stream: false // Optional: enable streaming
287
- });
288
-
289
- // Access response - OpenAI format
290
- console.log(completion.choices[0].message.content); // "The capital of France is Paris"
291
- console.log(completion.usage.total_tokens); // Token usage
292
- ```
293
-
294
- ### Image + Chat Completions Generation
295
-
296
- ```javascript
297
- // Image + chat completion generation request
298
- // This model can generate images AND provide text responses
299
- const response = await client.ai.images.generate({
300
- model: 'google/gemini-2.5-flash-image-preview',
301
- prompt: 'A serene landscape with mountains at sunset',
302
- images: [ // Optional: input images for image-to-image models
303
- { url: 'https://example.com/reference.jpg' }
304
- ]
305
- });
306
-
307
- // Access response - OpenAI format
308
- console.log(response.data[0].b64_json); // Base64 encoded image string (OpenAI format)
309
- console.log(response.data[0].content); // AI's text response about the image or prompt
310
- ```
311
-
312
- ## Complete Example
313
-
314
- ```javascript
315
- import { createClient } from '@insforge/sdk';
316
-
317
- const client = new createClient({ baseUrl: 'http://localhost:7130' });
318
-
319
- // 1. Sign up new user
320
- const { data: auth, error } = await client.auth.signUp({
321
- email: 'user@example.com',
322
- password: 'password123'
323
- });
324
-
325
- // 2. Update profile (returns object, not array!)
326
- const { data: profile } = await client.auth.setProfile({
327
- nickname: 'JohnDoe',
328
- bio: 'Full-stack developer'
329
- });
330
- console.log(profile.nickname); // 'JohnDoe' - direct access!
331
-
332
- // 3. Get current user with profile
333
- const { data: userData } = await client.auth.getCurrentUser();
334
- console.log(userData.user.email); // 'user@example.com'
335
- console.log(userData.profile.nickname); // 'JohnDoe'
336
-
337
- // 4. Create a post
338
- const { data: post } = await client.database
339
- .from('posts')
340
- .insert([{
341
- user_id: userData.user.id,
342
- caption: 'Hello World',
343
- image_url: 'https://example.com/image.jpg'
344
- }])
345
- .select()
346
- .single(); // Returns single object!
347
-
348
- // 5. Get another user's profile (returns object!)
349
- const { data: otherUser } = await client.auth.getProfile('other-user-id');
350
- console.log(otherUser.nickname); // Direct access to properties
351
- ```
352
-
353
- ## Key Points
354
-
355
- ### Edge Functions
356
- - **SDK Availability**: `createClient` is globally available - no import needed
357
- - **Token Handling**: Extract from `Authorization` header, use as `edgeFunctionToken` parameter
358
- - **Flexible Auth**: Can use user token or anon token (from `ACCESS_API_KEY` env var)
359
- - **Backend Validation**: Tokens are validated by backend on each SDK request
360
- - **Internal Networking**: Use `BACKEND_INTERNAL_URL` environment variable (defaults to `http://insforge:7130` for Docker container communication)
361
-
362
- ### Edge Functions Invocation (SDK)
363
- - **Simple API**: `client.functions.invoke(slug, options)
364
- - **Auto-authentication**: SDK automatically includes auth token from logged-in user
365
- - **Flexible body**: Accepts any JSON-serializable data
366
- - **HTTP methods**: Supports GET, POST, PUT, PATCH, DELETE (default: POST)
367
- - **Returns**: `{ data, error }` structure consistent with other SDK methods
368
-
369
- ### AI Operations - OpenAI Compatibility
370
- - **Request Format**: Consistent structure across chat and image generation
371
- - `model`: Model identifier (provider/model-name format)
372
- - `messages` for chat, `prompt` for images
373
- - Optional `images` array for multimodal inputs
374
- - **Response Format**: AI module returns OpenAI-compatible response structures for Chat Completion
375
- - **Multimodal Support**: Both endpoints accept image inputs via `images` array
376
- - **Streaming**: Chat completions support streaming with `stream: true`
377
-
378
- ### Profile Management
379
- - **Auto-creation**: When users sign up/sign in, backend automatically creates a record in `users` table
380
- - **Profile methods return objects**: `setProfile()` and `getProfile()` return single objects, not arrays!
381
- - **Two data sources**:
382
- - `user` = auth data (id, email, role)
383
- - `profile` = users table data (id, nickname, avatar_url, bio, etc.)
384
-
385
- ### SDK Behavior
386
- - Tokens stored and managed automatically after login
387
- - All operations return `{data, error}` structure
388
- - Database insert requires array format: `[{...}]` even for single records
389
- - Use `.single()` to get object instead of array from queries
390
- - Raw SQL is NOT available in SDK
391
-
392
- ### When to Use What
393
- - **SDK**: Authentication, database CRUD, profile management, AI operations, storage
394
- - **MCP Tools**: Table creation/modification, schema management
395
-
396
- ### Storage Best Practices
397
- - **ALWAYS use Storage for**:
398
- - Images (URLs, base64, binary data)
399
- - Files and documents
400
- - Large text content (>1KB)
401
- - AI-generated images
402
- - Chat message attachments
403
- - **Store in Database**:
404
- - Storage URLs only (not the actual data)
405
- - Small text fields (<1KB)
406
- - Metadata and references
407
- - **Example**: For chat with images, store image in storage bucket, save only the URL in database
1
+ # InsForge SDK Documentation - Overview
2
+
3
+ ## What is InsForge?
4
+
5
+ Backend-as-a-service (BaaS) platform providing:
6
+
7
+ - **Database**: PostgreSQL with PostgREST API
8
+ - **Authentication**: Email/password + OAuth (Google, GitHub)
9
+ - **Storage**: File upload/download
10
+ - **AI**: Chat completions and image generation (OpenAI-compatible)
11
+ - **Functions**: Serverless function deployment
12
+
13
+ ## Installation
14
+
15
+ ### 🚨 CRITICAL: Follow these steps in order
16
+
17
+ ### Step 1: Download Template
18
+
19
+ Use the `download-template` MCP tool to create a new project with your backend URL and anon key pre-configured.
20
+
21
+ ### Step 2: Install SDK
22
+
23
+ ```bash
24
+ npm install @insforge/sdk@latest
25
+ ```
26
+
27
+ ### Step 3: Create SDK Client
28
+
29
+ You must create a client instance using `createClient()` with your base URL and anon key:
30
+
31
+ ```javascript
32
+ import { createClient } from '@insforge/sdk';
33
+
34
+ const client = createClient({
35
+ baseUrl: 'https://your-app.region.insforge.app', // Your InsForge backend URL
36
+ anonKey: 'your-anon-key-here' // Get this from backend metadata
37
+ });
38
+
39
+ ```
40
+
41
+ **API BASE URL**: Your API base URL is `https://your-app.region.insforge.app`.
42
+
43
+ ## Getting Detailed Documentation
44
+
45
+ ### 🚨 CRITICAL: Always Fetch Documentation Before Writing Code
46
+
47
+ Before writing or editing any InsForge integration code, you **MUST** call the `fetch-docs` MCP tool to get the latest SDK documentation. This ensures you have accurate, up-to-date implementation patterns.
48
+
49
+ ### Use the InsForge `fetch-docs` MCP tool to get specific SDK documentation:
50
+
51
+ Available documentation types:
52
+
53
+ - `"instructions"` - Essential backend setup (START HERE)
54
+ - `"db-sdk"` - Database operations with SDK
55
+ - **Authentication** - Choose based on implementation:
56
+ - `"auth-components-react"` - Frontend auth for React+Vite (singlepage App)
57
+ - `"auth-components-react-router"` - Frontend auth for React(Vite+React Router) (Multipage App)
58
+ - `"storage-sdk"` - File storage operations
59
+ - `"functions-sdk"` - Serverless functions invocation
60
+ - `"ai-integration-sdk"` - AI chat and image generation
61
+ - `"real-time"` - Real-time pub/sub (database + client events) via WebSockets
62
+
63
+ ## When to Use SDK vs MCP Tools
64
+
65
+ ### Always SDK for Application Logic:
66
+
67
+ - Authentication (register, login, logout, profiles)
68
+ - Database CRUD (select, insert, update, delete)
69
+ - Storage operations (upload, download files)
70
+ - AI operations (chat, image generation)
71
+ - Serverless function invocation
72
+
73
+ ### Use MCP Tools for Infrastructure:
74
+
75
+ - Project scaffolding (`download-template`) - Download starter templates with InsForge integration
76
+ - Backend setup and metadata (`get-backend-metadata`)
77
+ - Database schema management (`run-raw-sql`, `get-table-schema`)
78
+ - Storage bucket creation (`create-bucket`, `list-buckets`, `delete-bucket`)
79
+ - Serverless function deployment (`create-function`, `update-function`, `delete-function`)
80
+
81
+ ## Important Notes
82
+
83
+ - Use the right framework-specific component package for production-ready auth
84
+ - SDK returns `{data, error}` structure for all operations
85
+ - Database inserts require array format: `[{...}]`
86
+ - Serverless functions have single endpoint (no subpaths)
87
+ - Storage: Upload files to buckets, store URLs in database
88
+ - AI operations are OpenAI-compatible
89
+ - **EXTRA IMPORTANT**: Use Tailwind CSS 3.4 (do not upgrade to v4). Lock these dependencies in `package.json`