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
@@ -1,159 +1,159 @@
1
- # InsForge Storage SDK
2
-
3
- ## Setup
4
- ```javascript
5
- import { createClient } from '@insforge/sdk';
6
- const client = createClient({ baseUrl: 'http://localhost:7130' });
7
- ```
8
-
9
- ## Bucket Operations
10
-
11
- ### from(bucketName)
12
- ```javascript
13
- const bucket = client.storage.from('avatars') // Returns StorageBucket instance
14
- ```
15
-
16
- ## File Operations
17
-
18
- ### upload
19
- ```javascript
20
- // Upload with specific key
21
- const { data, error } = await client.storage
22
- .from('avatars')
23
- .upload('user-123.jpg', file);
24
-
25
- // data: StorageFileSchema { bucket, key, size, mimeType, uploadedAt, url }
26
- ```
27
-
28
- ### uploadAuto
29
- ```javascript
30
- // Upload with auto-generated key
31
- const { data, error } = await client.storage
32
- .from('avatars')
33
- .uploadAuto(file);
34
-
35
- // Generated key format: filename-timestamp-random.ext
36
- ```
37
-
38
- ### download
39
- ```javascript
40
- const { data: blob, error } = await client.storage
41
- .from('avatars')
42
- .download('user-123.jpg');
43
-
44
- // data: Blob (can convert to URL with URL.createObjectURL(blob))
45
- ```
46
-
47
- ### remove
48
- ```javascript
49
- const { data, error } = await client.storage
50
- .from('avatars')
51
- .remove('user-123.jpg');
52
- ```
53
-
54
- ### list
55
- ```javascript
56
- const { data, error } = await client.storage
57
- .from('avatars')
58
- .list({
59
- prefix: 'users/', // Filter by prefix
60
- search: 'profile', // Search in filenames
61
- limit: 10, // Max results (default: 100)
62
- offset: 0 // Skip results
63
- });
64
-
65
- // data: ListObjectsResponseSchema { bucketName, objects[], pagination }
66
- ```
67
-
68
- ### getPublicUrl
69
- ```javascript
70
- // Get public URL (no API call)
71
- const url = client.storage
72
- .from('avatars')
73
- .getPublicUrl('user-123.jpg');
74
-
75
- // Returns: http://localhost:7130/api/storage/buckets/avatars/objects/user-123.jpg
76
- ```
77
-
78
- ## File Upload Examples
79
-
80
- ### Upload File from Input
81
- ```javascript
82
- // HTML: <input type="file" id="fileInput">
83
- const fileInput = document.getElementById('fileInput');
84
- const file = fileInput.files[0];
85
-
86
- const { data, error } = await client.storage
87
- .from('uploads')
88
- .upload(`photos/${file.name}`, file);
89
- ```
90
-
91
- ### Upload Blob
92
- ```javascript
93
- const blob = new Blob(['Hello World'], { type: 'text/plain' });
94
-
95
- const { data, error } = await client.storage
96
- .from('documents')
97
- .upload('hello.txt', blob);
98
- ```
99
-
100
- ### Upload with Custom Name
101
- ```javascript
102
- // Simple file upload - SDK handles FormData creation
103
- const file = fileInput.files[0];
104
-
105
- const { data, error } = await client.storage
106
- .from('uploads')
107
- .upload('custom-name.jpg', file);
108
- ```
109
-
110
- ## Download & Display
111
-
112
- ### Download and Display Image
113
- ```javascript
114
- const { data: blob, error } = await client.storage
115
- .from('avatars')
116
- .download('user-123.jpg');
117
-
118
- if (blob) {
119
- const url = URL.createObjectURL(blob);
120
- document.getElementById('avatar').src = url;
121
-
122
- // Clean up
123
- URL.revokeObjectURL(url);
124
- }
125
- ```
126
-
127
- ### Direct URL for Public Buckets
128
- ```javascript
129
- // For public buckets, use direct URL
130
- const url = client.storage
131
- .from('public-avatars')
132
- .getPublicUrl('user-123.jpg');
133
-
134
- document.getElementById('avatar').src = url;
135
- ```
136
-
137
- ## Error Handling
138
- ```javascript
139
- const { data, error } = await client.storage
140
- .from('avatars')
141
- .upload('user-123.jpg', file);
142
-
143
- if (error) {
144
- if (error.statusCode === 409) {
145
- console.error('File already exists');
146
- } else if (error.statusCode === 404) {
147
- console.error('Bucket not found');
148
- } else {
149
- console.error(error.message);
150
- }
151
- }
152
- ```
153
-
154
- ## Notes
155
- - Bucket creation/deletion handled via MCP tools, not SDK
156
- - Public buckets allow unauthenticated downloads
157
- - Private buckets require authentication for all operations
158
- - File keys can include paths (e.g., 'folder/subfolder/file.jpg')
1
+ # InsForge Storage SDK
2
+
3
+ ## Setup
4
+ ```javascript
5
+ import { createClient } from '@insforge/sdk';
6
+ const client = createClient({ baseUrl: 'http://localhost:7130' });
7
+ ```
8
+
9
+ ## Bucket Operations
10
+
11
+ ### from(bucketName)
12
+ ```javascript
13
+ const bucket = client.storage.from('avatars') // Returns StorageBucket instance
14
+ ```
15
+
16
+ ## File Operations
17
+
18
+ ### upload
19
+ ```javascript
20
+ // Upload with specific key
21
+ const { data, error } = await client.storage
22
+ .from('avatars')
23
+ .upload('user-123.jpg', file);
24
+
25
+ // data: StorageFileSchema { bucket, key, size, mimeType, uploadedAt, url }
26
+ ```
27
+
28
+ ### uploadAuto
29
+ ```javascript
30
+ // Upload with auto-generated key
31
+ const { data, error } = await client.storage
32
+ .from('avatars')
33
+ .uploadAuto(file);
34
+
35
+ // Generated key format: filename-timestamp-random.ext
36
+ ```
37
+
38
+ ### download
39
+ ```javascript
40
+ const { data: blob, error } = await client.storage
41
+ .from('avatars')
42
+ .download('user-123.jpg');
43
+
44
+ // data: Blob (can convert to URL with URL.createObjectURL(blob))
45
+ ```
46
+
47
+ ### remove
48
+ ```javascript
49
+ const { data, error } = await client.storage
50
+ .from('avatars')
51
+ .remove('user-123.jpg');
52
+ ```
53
+
54
+ ### list
55
+ ```javascript
56
+ const { data, error } = await client.storage
57
+ .from('avatars')
58
+ .list({
59
+ prefix: 'users/', // Filter by prefix
60
+ search: 'profile', // Search in filenames
61
+ limit: 10, // Max results (default: 100)
62
+ offset: 0 // Skip results
63
+ });
64
+
65
+ // data: ListObjectsResponseSchema { bucketName, objects[], pagination }
66
+ ```
67
+
68
+ ### getPublicUrl
69
+ ```javascript
70
+ // Get public URL (no API call)
71
+ const url = client.storage
72
+ .from('avatars')
73
+ .getPublicUrl('user-123.jpg');
74
+
75
+ // Returns: http://localhost:7130/api/storage/buckets/avatars/objects/user-123.jpg
76
+ ```
77
+
78
+ ## File Upload Examples
79
+
80
+ ### Upload File from Input
81
+ ```javascript
82
+ // HTML: <input type="file" id="fileInput">
83
+ const fileInput = document.getElementById('fileInput');
84
+ const file = fileInput.files[0];
85
+
86
+ const { data, error } = await client.storage
87
+ .from('uploads')
88
+ .upload(`photos/${file.name}`, file);
89
+ ```
90
+
91
+ ### Upload Blob
92
+ ```javascript
93
+ const blob = new Blob(['Hello World'], { type: 'text/plain' });
94
+
95
+ const { data, error } = await client.storage
96
+ .from('documents')
97
+ .upload('hello.txt', blob);
98
+ ```
99
+
100
+ ### Upload with Custom Name
101
+ ```javascript
102
+ // Simple file upload - SDK handles FormData creation
103
+ const file = fileInput.files[0];
104
+
105
+ const { data, error } = await client.storage
106
+ .from('uploads')
107
+ .upload('custom-name.jpg', file);
108
+ ```
109
+
110
+ ## Download & Display
111
+
112
+ ### Download and Display Image
113
+ ```javascript
114
+ const { data: blob, error } = await client.storage
115
+ .from('avatars')
116
+ .download('user-123.jpg');
117
+
118
+ if (blob) {
119
+ const url = URL.createObjectURL(blob);
120
+ document.getElementById('avatar').src = url;
121
+
122
+ // Clean up
123
+ URL.revokeObjectURL(url);
124
+ }
125
+ ```
126
+
127
+ ### Direct URL for Public Buckets
128
+ ```javascript
129
+ // For public buckets, use direct URL
130
+ const url = client.storage
131
+ .from('public-avatars')
132
+ .getPublicUrl('user-123.jpg');
133
+
134
+ document.getElementById('avatar').src = url;
135
+ ```
136
+
137
+ ## Error Handling
138
+ ```javascript
139
+ const { data, error } = await client.storage
140
+ .from('avatars')
141
+ .upload('user-123.jpg', file);
142
+
143
+ if (error) {
144
+ if (error.statusCode === 409) {
145
+ console.error('File already exists');
146
+ } else if (error.statusCode === 404) {
147
+ console.error('Bucket not found');
148
+ } else {
149
+ console.error(error.message);
150
+ }
151
+ }
152
+ ```
153
+
154
+ ## Notes
155
+ - Bucket creation/deletion handled via MCP tools, not SDK
156
+ - Public buckets allow unauthenticated downloads
157
+ - Private buckets require authentication for all operations
158
+ - File keys can include paths (e.g., 'folder/subfolder/file.jpg')
159
159
  - Use `uploadAuto()` to prevent filename conflicts
package/docs/docs.json ADDED
@@ -0,0 +1,232 @@
1
+ {
2
+ "$schema": "https://mintlify.com/docs.json",
3
+ "theme": "mint",
4
+ "name": "InsForge Docs",
5
+ "colors": {
6
+ "primary": "#16A34A",
7
+ "light": "#07C983",
8
+ "dark": "#15803D"
9
+ },
10
+ "appearance": {
11
+ "default": "dark"
12
+ },
13
+ "styling": {
14
+ "eyebrows": "section"
15
+ },
16
+ "seo": {
17
+ "metatags": {
18
+ "og:site_name": "InsForge Docs"
19
+ },
20
+ "indexing": "navigable"
21
+ },
22
+ "search": {
23
+ "prompt": "Search InsForge docs..."
24
+ },
25
+ "favicon": "/favicon.svg",
26
+ "navigation": {
27
+ "tabs": [
28
+ {
29
+ "tab": "Docs",
30
+ "groups": [
31
+ {
32
+ "group": "Getting Started",
33
+ "pages": ["introduction", "quickstart", "partnership"]
34
+ },
35
+ {
36
+ "group": "Core Concepts",
37
+ "pages": [
38
+ {
39
+ "group": "Database",
40
+ "pages": [
41
+ "core-concepts/database/architecture",
42
+ "core-concepts/database/sdk"
43
+ ]
44
+ },
45
+ {
46
+ "group": "Authentication",
47
+ "pages": [
48
+ "core-concepts/authentication/architecture",
49
+ "core-concepts/authentication/sdk",
50
+ {
51
+ "group": "UI Components",
52
+ "pages": [
53
+ "core-concepts/authentication/ui-components/nextjs",
54
+ "core-concepts/authentication/ui-components/react",
55
+ "core-concepts/authentication/ui-components/react-router",
56
+ "core-concepts/authentication/ui-components/customization"
57
+ ]
58
+ }
59
+ ]
60
+ },
61
+ {
62
+ "group": "Storage",
63
+ "pages": [
64
+ "core-concepts/storage/architecture",
65
+ "core-concepts/storage/sdk"
66
+ ]
67
+ },
68
+ {
69
+ "group": "AI Integration",
70
+ "pages": [
71
+ "core-concepts/ai/architecture",
72
+ "core-concepts/ai/sdk"
73
+ ]
74
+ },
75
+ {
76
+ "group": "Functions",
77
+ "pages": [
78
+ "core-concepts/functions/architecture",
79
+ "core-concepts/functions/sdk"
80
+ ]
81
+ },
82
+ {
83
+ "group": "Realtime",
84
+ "pages": [
85
+ "core-concepts/realtime/architecture",
86
+ "core-concepts/realtime/sdk"
87
+ ]
88
+ },
89
+ {
90
+ "group": "Email (Private Preview)",
91
+ "pages": [
92
+ "core-concepts/email/architecture",
93
+ "core-concepts/email/sdk"
94
+ ]
95
+ }
96
+ ]
97
+ },
98
+ {
99
+ "group": "Changelog",
100
+ "pages": ["changelog"]
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "tab": "Examples",
106
+ "groups": [
107
+ {
108
+ "group": "Getting Started",
109
+ "pages": ["examples/overview"]
110
+ },
111
+ {
112
+ "group": "Framework Guides",
113
+ "pages": [
114
+ "examples/framework-guides/nextjs",
115
+ "examples/framework-guides/react",
116
+ "examples/framework-guides/vue",
117
+ "examples/framework-guides/nuxt",
118
+ "examples/framework-guides/svelte"
119
+ ]
120
+ },
121
+ {
122
+ "group": "Community Showcase",
123
+ "pages": ["showcase"]
124
+ }
125
+ ]
126
+ },
127
+ {
128
+ "tab": "API Reference",
129
+ "groups": [
130
+ {
131
+ "group": "Tables",
132
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/tables.yaml"
133
+ },
134
+ {
135
+ "group": "Authentication",
136
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/auth.yaml"
137
+ },
138
+ {
139
+ "group": "Records",
140
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/records.yaml"
141
+ },
142
+ {
143
+ "group": "Storage",
144
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/storage.yaml"
145
+ },
146
+ {
147
+ "group": "AI Integration",
148
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/ai.yaml"
149
+ },
150
+ {
151
+ "group": "Functions",
152
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/functions.yaml"
153
+ },
154
+ {
155
+ "group": "Realtime",
156
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/realtime.yaml"
157
+ },
158
+ {
159
+ "group": "Email",
160
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/email.yaml"
161
+ },
162
+ {
163
+ "group": "Secrets",
164
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/secrets.yaml"
165
+ },
166
+ {
167
+ "group": "Logs",
168
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/logs.yaml"
169
+ },
170
+ {
171
+ "group": "Metadata",
172
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/metadata.yaml"
173
+ },
174
+ {
175
+ "group": "Health",
176
+ "openapi": "https://raw.githubusercontent.com/InsForge/InsForge/main/openapi/health.yaml"
177
+ }
178
+ ]
179
+ }
180
+ ],
181
+ "global": {
182
+ "anchors": [
183
+ {
184
+ "anchor": "Community",
185
+ "href": "https://discord.gg/MPxwj5xVvW",
186
+ "icon": "discord"
187
+ },
188
+ {
189
+ "anchor": "Blog",
190
+ "href": "https://insforge.dev/blog",
191
+ "icon": "newspaper"
192
+ },
193
+ {
194
+ "anchor": "Roadmap",
195
+ "href": "https://feedback.insforge.dev/roadmap",
196
+ "icon": "route"
197
+ }
198
+ ]
199
+ }
200
+ },
201
+ "logo": {
202
+ "light": "/logo/light.svg",
203
+ "dark": "/logo/dark.svg",
204
+ "href": "https://insforge.dev"
205
+ },
206
+ "navbar": {
207
+ "primary": {
208
+ "type": "button",
209
+ "label": "Get Started",
210
+ "href": "https://insforge.dev/auth/sign-up"
211
+ }
212
+ },
213
+ "contextual": {
214
+ "options": [
215
+ "copy",
216
+ "view",
217
+ "chatgpt",
218
+ "claude",
219
+ "perplexity",
220
+ "mcp",
221
+ "cursor",
222
+ "vscode"
223
+ ]
224
+ },
225
+ "footer": {
226
+ "socials": {
227
+ "x": "https://x.com/InsForge_dev",
228
+ "github": "https://github.com/insforge",
229
+ "linkedin": "https://linkedin.com/company/insforge"
230
+ }
231
+ }
232
+ }
@@ -0,0 +1,131 @@
1
+ ---
2
+ title: Next.js
3
+ description: Learn how to create an InsForge project and build a Next.js app using AI
4
+ ---
5
+
6
+ Learn how to create an InsForge project and build a Next.js app using AI tools like Cursor.
7
+
8
+ ## 1. Create an InsForge project
9
+
10
+ Create a new InsForge project at [insforge.dev](https://insforge.dev).
11
+
12
+ ## 2. Connect InsForge MCP
13
+
14
+ Follow the [quickstart guide](/quickstart) to connect your AI assistant to your InsForge backend. This allows AI tools like Claude and Cursor to directly interact with your database, storage, and other InsForge services.
15
+
16
+ ## 3. Build your app with one prompt
17
+
18
+ In Cursor or your AI assistant, use this prompt:
19
+
20
+ ```
21
+ Create a new Next.js app with TypeScript and Tailwind CSS 3.4.
22
+ Install the InsForge SDK and set up the client configuration.
23
+
24
+ In my InsForge database, create a sports table with id and name columns.
25
+ Add sample data: basketball, soccer, and tennis. Make it publicly readable.
26
+
27
+ Create a page at /sports that fetches and displays all sports from the database.
28
+ ```
29
+
30
+ Your AI will generate the complete application including database setup and UI. No need to write code manually - the AI creates everything for you.
31
+
32
+ ## 4. What the AI generates
33
+
34
+ Your AI assistant will automatically create files like these. You don't need to touch them manually.
35
+
36
+ **InsForge client** at `lib/insforge.ts`:
37
+
38
+ ```typescript lib/insforge.ts
39
+ import { createClient } from '@insforge/sdk';
40
+
41
+ export const insforge = createClient({
42
+ baseUrl: 'https://your-project.us-east.insforge.app',
43
+ anonKey: 'your-anon-key',
44
+ });
45
+ ```
46
+
47
+ **Sports page** at `app/sports/page.tsx`:
48
+
49
+ ```typescript app/sports/page.tsx
50
+ import { insforge } from '@/lib/insforge';
51
+
52
+ export default async function SportsPage() {
53
+ const { data: sports, error } = await insforge.database
54
+ .from('sports')
55
+ .select();
56
+
57
+ if (error) {
58
+ return (
59
+ <div className="min-h-screen flex items-center justify-center">
60
+ <div className="text-red-600">
61
+ <h1 className="text-2xl font-bold mb-2">Error</h1>
62
+ <p>{error.message}</p>
63
+ </div>
64
+ </div>
65
+ );
66
+ }
67
+
68
+ return (
69
+ <div className="min-h-screen p-8">
70
+ <div className="max-w-4xl mx-auto">
71
+ <h1 className="text-4xl font-bold mb-8">Sports</h1>
72
+
73
+ {sports && sports.length > 0 ? (
74
+ <div className="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
75
+ {sports.map((sport: { id: string; name: string }) => (
76
+ <div
77
+ key={sport.id}
78
+ className="p-6 bg-white rounded-lg shadow-md border border-gray-200 hover:shadow-lg transition-shadow"
79
+ >
80
+ <h2 className="text-xl font-semibold text-gray-800 capitalize">
81
+ {sport.name}
82
+ </h2>
83
+ <p className="text-sm text-gray-500 mt-2">ID: {sport.id}</p>
84
+ </div>
85
+ ))}
86
+ </div>
87
+ ) : (
88
+ <p className="text-gray-600">No sports found.</p>
89
+ )}
90
+ </div>
91
+ </div>
92
+ );
93
+ }
94
+ ```
95
+
96
+ ## 5. Start the app
97
+
98
+ Run the development server, go to [http://localhost:3000/sports](http://localhost:3000/sports) in a browser and you should see the list of sports.
99
+
100
+ ```bash
101
+ npm run dev
102
+ ```
103
+
104
+ ## Next: Extend your app with more prompts
105
+
106
+ Try these prompts to add more features to your app:
107
+
108
+ ```
109
+ Add a form to create new sports and save them to the database.
110
+ Include validation and error handling.
111
+ ```
112
+
113
+ ```
114
+ Add user authentication with sign up and login pages.
115
+ Only allow authenticated users to add new sports.
116
+ ```
117
+
118
+ ```
119
+ Add a favorites feature where users can mark their favorite sports.
120
+ Store favorites in a user_favorites table with user_id and sport_id.
121
+ ```
122
+
123
+ ```
124
+ Add images to each sport using InsForge Storage.
125
+ Allow users to upload sport images and display them in the grid.
126
+ ```
127
+
128
+ ```
129
+ Add an AI chat feature that can answer questions about sports.
130
+ Use InsForge AI with streaming responses.
131
+ ```