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,39 +0,0 @@
1
- import { createRemoteJWKSet, JWTPayload, jwtVerify } from 'jose';
2
- import { AppError } from '@/api/middleware/error.js';
3
- import { ERROR_CODES, NEXT_ACTION } from '@/types/error-constants.js';
4
-
5
- /**
6
- * Helper function to verify cloud backend JWT token
7
- * Validates JWT tokens from api.insforge.dev using JWKS
8
- */
9
- export async function verifyCloudToken(
10
- token: string
11
- ): Promise<{ projectId: string; payload: JWTPayload }> {
12
- // Create JWKS endpoint for remote key set
13
- const JWKS = createRemoteJWKSet(
14
- new URL((process.env.CLOUD_API_HOST || 'https://api.insforge.dev') + '/.well-known/jwks.json')
15
- );
16
-
17
- // Verify the token with jose
18
- const { payload } = await jwtVerify(token, JWKS, {
19
- algorithms: ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512'],
20
- });
21
-
22
- // Verify project_id matches if configured
23
- const tokenProjectId = payload['projectId'] as string;
24
- const expectedProjectId = process.env.PROJECT_ID;
25
-
26
- if (expectedProjectId && tokenProjectId !== expectedProjectId) {
27
- throw new AppError(
28
- 'Project ID mismatch',
29
- 403,
30
- ERROR_CODES.AUTH_UNAUTHORIZED,
31
- NEXT_ACTION.CHECK_TOKEN
32
- );
33
- }
34
-
35
- return {
36
- projectId: tokenProjectId || expectedProjectId || 'local',
37
- payload,
38
- };
39
- }
@@ -1,49 +0,0 @@
1
- import { ColumnType } from '@insforge/shared-schemas';
2
-
3
- export const convertSqlTypeToColumnType = (sqlType: string): ColumnType | string => {
4
- switch (sqlType.toLowerCase()) {
5
- case 'uuid':
6
- return ColumnType.UUID;
7
- case 'timestamptz':
8
- case 'timestamp with time zone':
9
- return ColumnType.DATETIME;
10
- case 'date':
11
- return ColumnType.DATE;
12
- case 'integer':
13
- case 'bigint':
14
- case 'smallint':
15
- case 'int':
16
- case 'int2':
17
- case 'int4':
18
- case 'serial':
19
- case 'serial2':
20
- case 'serial4':
21
- case 'serial8':
22
- case 'smallserial':
23
- case 'bigserial':
24
- return ColumnType.INTEGER;
25
- case 'double precision':
26
- case 'real':
27
- case 'numeric':
28
- case 'float':
29
- case 'float4':
30
- case 'float8':
31
- case 'decimal':
32
- return ColumnType.FLOAT;
33
- case 'boolean':
34
- case 'bool':
35
- return ColumnType.BOOLEAN;
36
- case 'json':
37
- case 'jsonb':
38
- case 'array':
39
- return ColumnType.JSON;
40
- case 'text':
41
- case 'varchar':
42
- case 'char':
43
- case 'character varying':
44
- case 'character':
45
- return ColumnType.STRING;
46
- default:
47
- return sqlType.slice(0, 5);
48
- }
49
- };
@@ -1,9 +0,0 @@
1
- import crypto from 'crypto';
2
-
3
- /**
4
- * Generate a UUID v4
5
- * @returns A UUID v4 string
6
- */
7
- export function generateUUID(): string {
8
- return crypto.randomUUID();
9
- }
@@ -1,303 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Better Auth test script
4
- # Tests the Better Auth v2 endpoints including admin functionality
5
-
6
- # Get the directory where this script is located
7
- SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
8
-
9
- # Test configuration
10
- TEST_API_BASE="${TEST_API_BASE:-http://localhost:7130/api}"
11
- TEST_ADMIN_EMAIL="${TEST_ADMIN_EMAIL:-${ADMIN_EMAIL:-admin@example.com}}"
12
- TEST_ADMIN_PASSWORD="${TEST_ADMIN_PASSWORD:-${ADMIN_PASSWORD:-change-this-password}}"
13
- TEST_USER_EMAIL_PREFIX="${TEST_USER_EMAIL_PREFIX:-testuser_}"
14
-
15
- # Colors for output
16
- RED='\033[0;31m'
17
- GREEN='\033[0;32m'
18
- YELLOW='\033[1;33m'
19
- BLUE='\033[0;34m'
20
- NC='\033[0m' # No Color
21
-
22
- # Utility functions
23
- print_success() {
24
- echo -e "${GREEN}✅ $1${NC}"
25
- }
26
-
27
- print_fail() {
28
- echo -e "${RED}❌ $1${NC}"
29
- }
30
-
31
- print_info() {
32
- echo -e "${YELLOW}$1${NC}"
33
- }
34
-
35
- # Simple cleanup tracking
36
- declare -a TEST_USERS_CREATED=()
37
-
38
- register_test_user() {
39
- local user_email=$1
40
- TEST_USERS_CREATED+=("$user_email")
41
- }
42
-
43
- echo "🧪 Testing Better Auth v2..."
44
-
45
- # Use configuration from test-config.sh
46
- API_BASE="$TEST_API_BASE"
47
- BETTER_AUTH_BASE="${API_BASE}/auth/v2"
48
- ADMIN_TOKEN=""
49
- USER_TOKEN=""
50
-
51
- # Test function
52
- # $1: method, $2: endpoint, $3: data, $4: description, $5: expected status (optional)
53
- test_endpoint() {
54
- local method=$1
55
- local endpoint=$2
56
- local data=$3
57
- local description=$4
58
- local expected_status=${5:-200}
59
- local token=${6:-""}
60
-
61
- print_info "Test: $description"
62
-
63
- local response
64
- if [ "$method" = "GET" ]; then
65
- if [ -n "$token" ]; then
66
- response=$(curl -s -w "\n%{http_code}" -X GET "$endpoint" \
67
- -H "Content-Type: application/json" \
68
- -H "Authorization: Bearer $token")
69
- else
70
- response=$(curl -s -w "\n%{http_code}" -X GET "$endpoint" \
71
- -H "Content-Type: application/json")
72
- fi
73
- elif [ "$method" = "POST" ]; then
74
- if [ -n "$token" ]; then
75
- response=$(curl -s -w "\n%{http_code}" -X POST "$endpoint" \
76
- -H "Content-Type: application/json" \
77
- -H "Authorization: Bearer $token" \
78
- -d "$data")
79
- else
80
- response=$(curl -s -w "\n%{http_code}" -X POST "$endpoint" \
81
- -H "Content-Type: application/json" \
82
- -d "$data")
83
- fi
84
- elif [ "$method" = "DELETE" ]; then
85
- if [ -n "$token" ]; then
86
- response=$(curl -s -w "\n%{http_code}" -X DELETE "$endpoint" \
87
- -H "Content-Type: application/json" \
88
- -H "Authorization: Bearer $token")
89
- else
90
- response=$(curl -s -w "\n%{http_code}" -X DELETE "$endpoint" \
91
- -H "Content-Type: application/json")
92
- fi
93
- fi
94
-
95
- # Split response into body and status code
96
- # Use sed instead of head -n -1 for better compatibility
97
- body=$(echo "$response" | sed '$d')
98
- status=$(echo "$response" | tail -n 1)
99
-
100
- if [ "$status" = "$expected_status" ]; then
101
- print_success "Success ($status)"
102
- if [ -n "$body" ]; then
103
- echo "Response: $body" | head -c 200
104
- echo ""
105
- fi
106
- else
107
- print_fail "Failed - Expected $expected_status, got $status"
108
- echo "Error: $body"
109
- fi
110
- echo ""
111
- }
112
-
113
- echo "=== Admin Authentication Tests ==="
114
- echo ""
115
-
116
- # 1. Test admin sign-in with correct credentials
117
- print_info "1. Admin sign-in with correct credentials"
118
- admin_response=$(curl -s -X POST "$BETTER_AUTH_BASE/admin/sign-in" \
119
- -H "Content-Type: application/json" \
120
- -d "{\"email\":\"$TEST_ADMIN_EMAIL\",\"password\":\"$TEST_ADMIN_PASSWORD\"}")
121
-
122
- if echo "$admin_response" | grep -q '"token"'; then
123
- print_success "Admin sign-in successful"
124
- ADMIN_TOKEN=$(echo "$admin_response" | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
125
- admin_user=$(echo "$admin_response" | grep -o '"user":{[^}]*}' || echo "")
126
- echo "Admin info: $admin_user"
127
- else
128
- print_fail "Admin sign-in failed"
129
- echo "Response: $admin_response"
130
- fi
131
- echo ""
132
-
133
- # 2. Test admin sign-in with wrong password
134
- test_endpoint "POST" "$BETTER_AUTH_BASE/admin/sign-in" \
135
- "{\"email\":\"$TEST_ADMIN_EMAIL\",\"password\":\"wrong-password\"}" \
136
- "Admin sign-in with wrong password (should fail)" \
137
- "401"
138
-
139
- # 3. Test admin sign-in with non-admin email
140
- test_endpoint "POST" "$BETTER_AUTH_BASE/admin/sign-in" \
141
- "{\"email\":\"notadmin@example.com\",\"password\":\"$TEST_ADMIN_PASSWORD\"}" \
142
- "Admin sign-in with non-admin email (should fail)" \
143
- "403"
144
-
145
- # 4. Test admin register (should fail - already exists)
146
- test_endpoint "POST" "$BETTER_AUTH_BASE/admin/register" \
147
- "{\"email\":\"$TEST_ADMIN_EMAIL\",\"password\":\"$TEST_ADMIN_PASSWORD\",\"name\":\"Admin\"}" \
148
- "Admin register when already exists (should fail)" \
149
- "409"
150
-
151
- echo "=== Regular User Registration Tests ==="
152
- echo ""
153
-
154
- # 5. Register a regular user
155
- USER_EMAIL="${TEST_USER_EMAIL_PREFIX}betterauth_$(date +%s)@example.com"
156
- USER_PASS="testpass123"
157
- USER_NAME="Better Auth Test User"
158
-
159
- register_test_user "$USER_EMAIL"
160
-
161
- print_info "5. Registering new user: $USER_EMAIL"
162
- register_response=$(curl -s -X POST "$BETTER_AUTH_BASE/sign-up/email" \
163
- -H "Content-Type: application/json" \
164
- -d "{\"email\":\"$USER_EMAIL\",\"password\":\"$USER_PASS\",\"name\":\"$USER_NAME\"}")
165
-
166
- if echo "$register_response" | grep -q '"user"'; then
167
- print_success "User registration successful"
168
- user_info=$(echo "$register_response" | grep -o '"user":{[^}]*}' || echo "")
169
- echo "User info: $user_info"
170
- else
171
- print_fail "User registration failed"
172
- echo "Response: $register_response"
173
- fi
174
- echo ""
175
-
176
- # 6. Sign in as regular user
177
- print_info "6. Sign in as regular user"
178
- signin_response=$(curl -s -X POST "$BETTER_AUTH_BASE/sign-in/email" \
179
- -H "Content-Type: application/json" \
180
- -d "{\"email\":\"$USER_EMAIL\",\"password\":\"$USER_PASS\"}")
181
-
182
- if echo "$signin_response" | grep -q '"token"'; then
183
- print_success "User sign-in successful"
184
- USER_TOKEN=$(echo "$signin_response" | grep -o '"token":"[^"]*"' | cut -d'"' -f4)
185
- else
186
- print_fail "User sign-in failed"
187
- echo "Response: $signin_response"
188
- fi
189
- echo ""
190
-
191
- # 7. Test duplicate registration
192
- test_endpoint "POST" "$BETTER_AUTH_BASE/sign-up/email" \
193
- "{\"email\":\"$USER_EMAIL\",\"password\":\"$USER_PASS\",\"name\":\"Duplicate\"}" \
194
- "Duplicate user registration (should fail)" \
195
- "422"
196
-
197
- echo "=== Admin User Management Tests ==="
198
- echo ""
199
-
200
- # 8. List users with admin token
201
- print_info "8. List all users (admin only)"
202
- if [ -n "$ADMIN_TOKEN" ]; then
203
- users_response=$(curl -s -X GET "$BETTER_AUTH_BASE/admin/users" \
204
- -H "Authorization: Bearer $ADMIN_TOKEN")
205
-
206
- if echo "$users_response" | grep -q '"users"'; then
207
- print_success "List users successful"
208
- user_count=$(echo "$users_response" | grep -o '"total":[0-9]*' | cut -d':' -f2 || echo "0")
209
- echo "Total non-admin users: $user_count"
210
-
211
- # Verify admin is not in the list
212
- if echo "$users_response" | grep -q "$TEST_ADMIN_EMAIL"; then
213
- print_fail "Admin user should not be in regular user list!"
214
- else
215
- print_success "Admin correctly excluded from user list"
216
- fi
217
- else
218
- print_fail "List users failed"
219
- echo "Response: $users_response"
220
- fi
221
- else
222
- print_fail "No admin token available"
223
- fi
224
- echo ""
225
-
226
- # 9. List users with pagination
227
- test_endpoint "GET" "$BETTER_AUTH_BASE/admin/users?limit=5&offset=0" \
228
- "" \
229
- "List users with pagination (limit=5)" \
230
- "200" \
231
- "$ADMIN_TOKEN"
232
-
233
- # 10. Try to access admin endpoint without token
234
- test_endpoint "GET" "$BETTER_AUTH_BASE/admin/users" \
235
- "" \
236
- "Access admin endpoint without token (should fail)" \
237
- "401"
238
-
239
- # 11. Try to access admin endpoint with regular user token
240
- if [ -n "$USER_TOKEN" ]; then
241
- test_endpoint "GET" "$BETTER_AUTH_BASE/admin/users" \
242
- "" \
243
- "Access admin endpoint with regular user token (should fail)" \
244
- "401" \
245
- "$USER_TOKEN"
246
- fi
247
-
248
- echo "=== Token Verification Tests ==="
249
- echo ""
250
-
251
- # 12. Verify admin JWT claims
252
- if [ -n "$ADMIN_TOKEN" ]; then
253
- print_info "12. Verifying admin JWT claims"
254
- # Decode JWT payload (base64 decode the middle part)
255
- payload=$(echo "$ADMIN_TOKEN" | cut -d'.' -f2 | base64 -d 2>/dev/null || echo "")
256
-
257
- if echo "$payload" | grep -q '"role":"project_admin"'; then
258
- print_success "Admin token has correct role claim"
259
- else
260
- print_fail "Admin token missing project_admin role"
261
- fi
262
-
263
- if echo "$payload" | grep -q '"type":"admin"'; then
264
- print_success "Admin token has correct type claim"
265
- else
266
- print_fail "Admin token missing admin type"
267
- fi
268
- fi
269
-
270
- # 13. Note about regular user tokens
271
- if [ -n "$USER_TOKEN" ]; then
272
- print_info "13. Regular user tokens"
273
- print_success "Regular users receive session tokens (not JWTs)"
274
- echo "Token format: $USER_TOKEN" | cut -c1-50
275
- echo "..."
276
- fi
277
-
278
- echo ""
279
- echo "=== Additional Better Auth Tests ==="
280
- echo ""
281
-
282
- # 17. Test error handling
283
- test_endpoint "POST" "$BETTER_AUTH_BASE/sign-in/email" \
284
- "{\"email\":\"invalid-email\",\"password\":\"pass\"}" \
285
- "Sign in with invalid email format" \
286
- "400"
287
-
288
- test_endpoint "POST" "$BETTER_AUTH_BASE/sign-up/email" \
289
- "{\"email\":\"test@example.com\"}" \
290
- "Register without password" \
291
- "500"
292
-
293
- echo ""
294
- print_success "🎉 Better Auth test completed!"
295
-
296
- # Simple cleanup
297
- if [ ${#TEST_USERS_CREATED[@]} -gt 0 ]; then
298
- print_info "Test users created: ${#TEST_USERS_CREATED[@]}"
299
- print_info "Manual cleanup may be required for test users"
300
- fi
301
-
302
- echo ""
303
- print_info "Test completed!"
@@ -1,9 +0,0 @@
1
- \set pguser `echo "$POSTGRES_USER"`
2
-
3
- CREATE DATABASE _insforge WITH OWNER :pguser;
4
-
5
- \c _insforge
6
- create schema if not exists _analytics;
7
- alter schema _analytics owner to :pguser;
8
-
9
- \c insforge
@@ -1,112 +0,0 @@
1
- # Insforge Dashboard
2
-
3
- A React-based admin dashboard for managing Insforge projects and databases.
4
-
5
- ## Features
6
-
7
- - **Dashboard Overview**: System statistics and project overview
8
- - **Project Management**: Create, view, and delete projects
9
- - **Database Viewer**: Browse tables, schemas, and data
10
- - **API Key Management**: Copy and manage project API keys
11
- - **User Authentication**: Secure admin login
12
-
13
- ## Development
14
-
15
- ```bash
16
- # Install dependencies
17
- npm install
18
-
19
- # Start development server (runs on port 7131)
20
- npm run dev
21
-
22
- # Build for production
23
- npm run build
24
- ```
25
-
26
- ## Built With
27
-
28
- - **React 18** - UI Framework
29
- - **TypeScript** - Type safety
30
- - **Tailwind CSS** - Styling
31
- - **Vite** - Build tool
32
- - **React Router** - Navigation
33
- - **Lucide React** - Icons
34
-
35
- ## API Integration
36
-
37
- The dashboard communicates with the Insforge backend via REST API:
38
-
39
- ### Authentication
40
- - `POST /api/auth/register` - User registration
41
- - `POST /api/auth/login` - User login (email/password)
42
- - `GET /api/auth/me` - Get current user info
43
- - `GET /api/auth/users` - List all users (admin only)
44
-
45
- ### Database Management
46
- - `GET /api/database/tables` - List all tables
47
- - `POST /api/database/tables` - Create new table with schema
48
- - `DELETE /api/database/tables/:tablename` - Delete table
49
- - `GET /api/database/tables/:tablename/schema` - Get table schema
50
- - `PATCH /api/database/tables/:tablename/schema` - Modify table schema
51
-
52
- ### Record Operations
53
- - `GET /api/database/records/:tablename` - Query records (supports pagination)
54
- - `POST /api/database/records/:tablename` - Insert records
55
- - `PATCH /api/database/records/:tablename?id=eq.:id` - Update specific record
56
- - `DELETE /api/database/records/:tablename?id=eq.:id` - Delete specific record
57
-
58
- ### Storage
59
- - `GET /api/storage/buckets` - List all buckets
60
- - `POST /api/storage/buckets` - Create new bucket
61
- - `PATCH /api/storage/buckets/:bucketName` - Update bucket
62
- - `DELETE /api/storage/buckets/:bucketName` - Delete bucket
63
- - `GET /api/storage/buckets/:bucketName/objects` - List objects in bucket
64
- - `PUT /api/storage/buckets/:bucketName/objects/:objectKey` - Upload object with specific key
65
- - `POST /api/storage/buckets/:bucketName/objects` - Upload object with auto-generated key
66
- - `GET /api/storage/buckets/:bucketName/objects/:objectKey` - Download object
67
- - `DELETE /api/storage/buckets/:bucketName/objects/:objectKey` - Delete object
68
-
69
- ### Metadata & Logs
70
- - `GET /api/metadata` - Get system metadata and statistics
71
- - `GET /api/logs` - Get activity logs (admin only)
72
-
73
- ## Project Structure
74
-
75
- ```
76
- frontend/
77
- ├── src/
78
- │ ├── components/ # Reusable UI components
79
- │ │ ├── layout/ # Layout components
80
- │ │ └── table/ # Table components
81
- │ ├── features/ # Feature modules
82
- │ │ ├── auth/ # Authentication (login, users)
83
- │ │ ├── dashboard/ # Dashboard & metadata
84
- │ │ ├── database/ # Database management
85
- │ │ ├── logs/ # Activity logs
86
- │ │ └── storage/ # File storage
87
- │ ├── lib/ # Utilities and API client
88
- │ │ └── api/ # API client configuration
89
- │ ├── types/ # TypeScript type definitions
90
- │ ├── App.tsx # Main app component
91
- │ └── main.tsx # Entry point
92
- ├── public/ # Static assets
93
- ├── index.html # HTML template
94
- ├── vite.config.ts # Vite configuration
95
- └── package.json # Dependencies
96
- ```
97
-
98
- ## Usage
99
-
100
- 1. Start the Insforge backend server
101
- 2. Navigate to `http://localhost:7130` in your browser (production) or `http://localhost:7131` (development)
102
- 3. Login with your admin credentials (from .env file)
103
- 4. Create tables and manage data
104
-
105
- ### Key Features
106
- - **Table Management**: Create tables with explicit schemas defining column types
107
- - **Data Types**: Support for string, integer, float, boolean, datetime, json, uuid, and file types
108
- - **Auto-generated Fields**: Every table gets id, created_at, and updated_at fields
109
- - **Record Management**: Full CRUD operations with pagination support
110
- - **API Key**: Single API key for all database operations (displayed in dashboard)
111
-
112
- The dashboard is automatically served by the backend when you access the root URL.
@@ -1,20 +0,0 @@
1
- export type {
2
- Column,
3
- SortColumn,
4
- RenderCellProps,
5
- RenderEditCellProps,
6
- RenderHeaderCellProps,
7
- CellClickArgs,
8
- CellMouseEvent,
9
- } from 'react-data-grid';
10
- export * from './datagridTypes';
11
-
12
- import IdCell from './IdCell';
13
- import SortableHeaderRenderer from './SortableHeader';
14
- import { createDefaultCellRenderer } from './DefaultCellRenderer';
15
- import DataGrid, { type DataGridProps } from './DataGrid';
16
-
17
- export { IdCell, SortableHeaderRenderer, DataGrid, type DataGridProps, createDefaultCellRenderer };
18
-
19
- // Export cell editors
20
- export * from './cell-editors';
@@ -1,95 +0,0 @@
1
- import { useEffect } from 'react';
2
- import { useNavigate, useLocation } from 'react-router-dom';
3
- import { ThemeProvider } from '@/lib/contexts/ThemeContext';
4
- import { cn } from '@/lib/utils/utils';
5
- import { ServerEvents, useSocket } from '@/lib/contexts/SocketContext';
6
-
7
- interface CloudLayoutProps {
8
- children: React.ReactNode;
9
- }
10
-
11
- interface RouterMessage {
12
- type: 'ROUTE_CHANGE' | 'REFRESH';
13
- path: string;
14
- }
15
-
16
- export default function CloudLayout({ children }: CloudLayoutProps) {
17
- const navigate = useNavigate();
18
- const location = useLocation();
19
- const { socket } = useSocket();
20
-
21
- useEffect(() => {
22
- const handleCloudMessage = (event: MessageEvent) => {
23
- try {
24
- const message = event.data as RouterMessage;
25
-
26
- if (message.type === 'ROUTE_CHANGE' && message.path) {
27
- // Navigate to the corresponding cloud route
28
- void navigate(message.path);
29
- } else if (message.type === 'REFRESH') {
30
- window.location.reload();
31
- }
32
- } catch (error) {
33
- console.error('Error handling router message:', error);
34
- }
35
- };
36
-
37
- // Add event listener for messages from parent window
38
- window.addEventListener('message', handleCloudMessage);
39
-
40
- // Cleanup listener on unmount
41
- return () => {
42
- window.removeEventListener('message', handleCloudMessage);
43
- };
44
- }, [navigate]);
45
-
46
- useEffect(() => {
47
- // Only send messages if we're in an iframe (not the main window)
48
- if (window.parent !== window) {
49
- // Send the current route to the parent cloud application
50
- window.parent.postMessage(
51
- {
52
- type: 'APP_ROUTE_CHANGE',
53
- path: location.pathname,
54
- },
55
- '*'
56
- );
57
- }
58
- }, [location.pathname]);
59
-
60
- // Listen for MCP connection events and forward to parent
61
- useEffect(() => {
62
- if (!socket || window.parent === window) {
63
- return;
64
- }
65
-
66
- const handleMcpConnected = () => {
67
- window.parent.postMessage(
68
- {
69
- type: 'MCP_CONNECTION_STATUS',
70
- connected: true,
71
- },
72
- '*'
73
- );
74
- };
75
-
76
- socket.on(ServerEvents.MCP_CONNECTED, handleMcpConnected);
77
-
78
- return () => {
79
- socket.off(ServerEvents.MCP_CONNECTED, handleMcpConnected);
80
- };
81
- }, [socket]);
82
-
83
- return (
84
- <ThemeProvider forcedTheme="dark">
85
- <div
86
- className={cn(
87
- 'h-screen bg-neutral-800',
88
- location.pathname !== '/cloud/visualizer' && 'pt-13 pl-13'
89
- )}
90
- >
91
- {children}
92
- </div>
93
- </ThemeProvider>
94
- );
95
- }