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,209 +1,209 @@
1
- #!/bin/bash
2
-
3
- # Test Traditional REST Response Format
4
- # This script tests various API endpoints to ensure they follow traditional REST conventions
5
-
6
- # Get the directory where this script is located
7
- SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
8
-
9
- # Source the test configuration
10
- source "$SCRIPT_DIR/../test-config.sh"
11
-
12
- # Check requirements
13
- check_requirements
14
-
15
- print_blue "🧪 Testing Traditional REST Response Format..."
16
-
17
- # API Configuration
18
- API_BASE="$TEST_API_BASE"
19
- TEST_USER_EMAIL="testuser_rest_$(date +%s)@example.com"
20
- TEST_USER_PASSWORD="TestPass123!"
21
- AUTH_TOKEN=""
22
-
23
- # Function to test response format
24
- test_response_format() {
25
- local test_name="$1"
26
- local response="$2"
27
- local expected_pattern="$3"
28
- local should_not_exist="${4:-false}"
29
-
30
- if [ "$should_not_exist" == "true" ]; then
31
- # Check that pattern does NOT exist
32
- if ! echo "$response" | grep -q "$expected_pattern"; then
33
- print_success "$test_name"
34
- return 0
35
- else
36
- print_fail "$test_name - found unwanted pattern: $expected_pattern"
37
- track_test_failure
38
- return 1
39
- fi
40
- else
41
- # Check that pattern exists
42
- if echo "$response" | grep -q "$expected_pattern"; then
43
- print_success "$test_name"
44
- return 0
45
- else
46
- print_fail "$test_name - missing pattern: $expected_pattern"
47
- echo " Response: $(echo "$response" | head -c 200)..."
48
- track_test_failure
49
- return 1
50
- fi
51
- fi
52
- }
53
-
54
- # 1. Test Health Endpoint
55
- print_info "1. Testing Health Endpoint (Success Response)"
56
- response=$(curl -s "$API_BASE/health")
57
- test_response_format "Direct data response" "$response" '"status":"ok"'
58
- test_response_format "No success wrapper" "$response" '"success":true' "true"
59
- test_response_format "No data wrapper" "$response" '"data":{' "true"
60
-
61
- # 2. Test Authentication Errors
62
- print_info "2. Testing Authentication Errors"
63
- response=$(curl -s "$API_BASE/auth/sessions/current")
64
- test_response_format "Error format" "$response" '"error":"AUTH_INVALID_CREDENTIALS"'
65
- test_response_format "Message field" "$response" '"message":"Invalid token"'
66
- # JWT auth includes error and message fields
67
-
68
- # 3. Test Login Endpoint (Missing Credentials)
69
- print_info "3. Testing Login Endpoint (Missing Credentials)"
70
- response=$(curl -s -X POST "$API_BASE/auth/sessions" \
71
- -H "Content-Type: application/json" \
72
- -d '{}')
73
- test_response_format "Error response" "$response" '"error":"INVALID_INPUT"'
74
- test_response_format "Message field" "$response" '"message":"email: Required, password: Required"'
75
-
76
- # 4. Test Invalid Endpoint (404)
77
- print_info "4. Testing Invalid Endpoint (404)"
78
- response=$(curl -s "$API_BASE/nonexistent")
79
- test_response_format "404 error" "$response" '"statusCode":404'
80
- test_response_format "Not found message" "$response" '"error":"NOT_FOUND"'
81
-
82
- ADMIN_TOKEN=$(get_admin_token)
83
-
84
- # 5. Test with Authentication
85
- print_info "5. Creating test user for authenticated tests"
86
- auth_response=$(curl -s -X POST "$API_BASE/auth/users" \
87
- -H "Content-Type: application/json" \
88
- -d "{
89
- \"email\": \"$TEST_USER_EMAIL\",
90
- \"password\": \"$TEST_USER_PASSWORD\",
91
- \"name\": \"Test User\"
92
- }")
93
-
94
- # Check if registration was successful
95
- if echo "$auth_response" | grep -q '"accessToken"'; then
96
- AUTH_TOKEN=$(echo "$auth_response" | grep -o '"accessToken":"[^"]*' | cut -d'"' -f4)
97
- print_success "User registered successfully"
98
- register_test_user "$TEST_USER_EMAIL"
99
-
100
- # Test authenticated endpoints
101
- print_info "6. Testing Database Tables List (Authenticated)"
102
- response=$(curl -s "$API_BASE/database/tables" \
103
- -H "Authorization: Bearer $AUTH_TOKEN")
104
- test_response_format "Direct array response" "$response" '^\['
105
- test_response_format "No wrapper object" "$response" '"data":\[' "true"
106
-
107
- # Test table creation
108
- print_info "7. Testing Create Table (Success Response)"
109
- TABLE_NAME="test_rest_table_$(date +%s)"
110
- response=$(curl -s -X POST "$API_BASE/database/tables" \
111
- -H "Authorization: Bearer $ADMIN_TOKEN" \
112
- -H "Content-Type: application/json" \
113
- -d "{
114
- \"tableName\": \"$TABLE_NAME\",
115
- \"rlsEnabled\": false,
116
- \"columns\": [
117
- {\"columnName\": \"id\", \"type\": \"uuid\", \"isNullable\": false, \"isUnique\": false, \"defaultValue\": \"gen_random_uuid()\"},
118
- {\"columnName\": \"title\", \"type\": \"string\", \"isNullable\": false, \"isUnique\": false}
119
- ]
120
- }")
121
-
122
- if echo "$response" | grep -q '"tableName"'; then
123
- print_success "Table created"
124
- register_test_table "$TABLE_NAME"
125
- test_response_format "Direct object response" "$response" "\"tableName\":\"$TABLE_NAME\""
126
- test_response_format "No success wrapper" "$response" '"success":true' "true"
127
- else
128
- print_fail "Table creation failed"
129
- echo "Response: $response"
130
- track_test_failure
131
- fi
132
-
133
- # Test pagination headers
134
- print_info "8. Testing Pagination Headers"
135
- # Use -I for headers, but we need both headers and body
136
- full_response=$(curl -s -i "$API_BASE/logs/audits?limit=10" \
137
- -H "Authorization: Bearer $ADMIN_TOKEN")
138
-
139
- # Extract headers (everything before empty line)
140
- headers=$(echo "$full_response" | awk 'BEGIN{RS="\r\n\r\n"} NR==1')
141
-
142
- # Test for PostgREST-style Content-Range header (format: start-end/total)
143
- test_response_format "Content-Range header" "$headers" 'Content-Range:'
144
- test_response_format "Preference-Applied header" "$headers" 'Preference-Applied:'
145
-
146
- else
147
- print_fail "Failed to register user"
148
- echo "Response: $auth_response"
149
- track_test_failure
150
- fi
151
-
152
- # 9. Test Storage API (requires API key)
153
- print_info "9. Testing Storage API Format"
154
- # First get admin token if we don't have it
155
- if [ -z "$AUTH_TOKEN" ]; then
156
- admin_token=$(get_admin_token)
157
- else
158
- admin_token="$AUTH_TOKEN"
159
- fi
160
-
161
- # Try to get API key from the API endpoint first
162
- if [ -n "$admin_token" ]; then
163
- api_key_response=$(curl -s "$API_BASE/metadata/api-key" \
164
- -H "Authorization: Bearer $admin_token")
165
- API_KEY=$(echo "$api_key_response" | grep -o '"apiKey":"[^"]*' | cut -d'"' -f4)
166
- fi
167
-
168
- # If that fails, try the helper function
169
- if [ -z "$API_KEY" ]; then
170
- API_KEY=$(get_admin_api_key)
171
- fi
172
-
173
- # Export for cleanup
174
- if [ -n "$API_KEY" ]; then
175
- export ACCESS_API_KEY="$API_KEY"
176
- # List buckets
177
- response=$(curl -s "$API_BASE/storage/buckets" \
178
- -H "Authorization: Bearer $API_KEY")
179
- test_response_format "Direct array for buckets" "$response" '^\['
180
-
181
- # Create a test bucket
182
- BUCKET_NAME="test-rest-bucket-$(date +%s)"
183
- response=$(curl -s -X POST "$API_BASE/storage/buckets" \
184
- -H "Content-Type: application/json" \
185
- -H "Authorization: Bearer $API_KEY" \
186
- -d "{\"bucketName\": \"$BUCKET_NAME\", \"isPublic\": true}")
187
-
188
- if echo "$response" | grep -q '"bucketName"'; then
189
- print_success "Bucket created"
190
- register_test_bucket "$BUCKET_NAME"
191
- test_response_format "Success message field" "$response" '"message":"Bucket created successfully"'
192
- test_response_format "NextAction guidance" "$response" '"nextActions":'
193
- else
194
- print_fail "Bucket creation failed"
195
- echo "Response: $response"
196
- track_test_failure
197
- fi
198
- else
199
- print_info "Skipping storage tests (no API key available)"
200
- fi
201
-
202
- # Summary
203
- echo ""
204
- print_blue "=========================================="
205
- print_blue "Traditional REST Format Test Complete"
206
- print_blue "=========================================="
207
-
208
- # Exit with proper status
1
+ #!/bin/bash
2
+
3
+ # Test Traditional REST Response Format
4
+ # This script tests various API endpoints to ensure they follow traditional REST conventions
5
+
6
+ # Get the directory where this script is located
7
+ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
8
+
9
+ # Source the test configuration
10
+ source "$SCRIPT_DIR/../test-config.sh"
11
+
12
+ # Check requirements
13
+ check_requirements
14
+
15
+ print_blue "🧪 Testing Traditional REST Response Format..."
16
+
17
+ # API Configuration
18
+ API_BASE="$TEST_API_BASE"
19
+ TEST_USER_EMAIL="testuser_rest_$(date +%s)@example.com"
20
+ TEST_USER_PASSWORD="TestPass123!"
21
+ AUTH_TOKEN=""
22
+
23
+ # Function to test response format
24
+ test_response_format() {
25
+ local test_name="$1"
26
+ local response="$2"
27
+ local expected_pattern="$3"
28
+ local should_not_exist="${4:-false}"
29
+
30
+ if [ "$should_not_exist" == "true" ]; then
31
+ # Check that pattern does NOT exist
32
+ if ! echo "$response" | grep -q "$expected_pattern"; then
33
+ print_success "$test_name"
34
+ return 0
35
+ else
36
+ print_fail "$test_name - found unwanted pattern: $expected_pattern"
37
+ track_test_failure
38
+ return 1
39
+ fi
40
+ else
41
+ # Check that pattern exists
42
+ if echo "$response" | grep -q "$expected_pattern"; then
43
+ print_success "$test_name"
44
+ return 0
45
+ else
46
+ print_fail "$test_name - missing pattern: $expected_pattern"
47
+ echo " Response: $(echo "$response" | head -c 200)..."
48
+ track_test_failure
49
+ return 1
50
+ fi
51
+ fi
52
+ }
53
+
54
+ # 1. Test Health Endpoint
55
+ print_info "1. Testing Health Endpoint (Success Response)"
56
+ response=$(curl -s "$API_BASE/health")
57
+ test_response_format "Direct data response" "$response" '"status":"ok"'
58
+ test_response_format "No success wrapper" "$response" '"success":true' "true"
59
+ test_response_format "No data wrapper" "$response" '"data":{' "true"
60
+
61
+ # 2. Test Authentication Errors
62
+ print_info "2. Testing Authentication Errors"
63
+ response=$(curl -s "$API_BASE/auth/sessions/current")
64
+ test_response_format "Error format" "$response" '"error":"AUTH_INVALID_CREDENTIALS"'
65
+ test_response_format "Message field" "$response" '"message":"No token provided"'
66
+ # JWT auth includes error and message fields
67
+
68
+ # 3. Test Login Endpoint (Missing Credentials)
69
+ print_info "3. Testing Login Endpoint (Missing Credentials)"
70
+ response=$(curl -s -X POST "$API_BASE/auth/sessions" \
71
+ -H "Content-Type: application/json" \
72
+ -d '{}')
73
+ test_response_format "Error response" "$response" '"error":"INVALID_INPUT"'
74
+ test_response_format "Message field" "$response" '"message":"email: Required, password: Required"'
75
+
76
+ # 4. Test Invalid Endpoint (404)
77
+ print_info "4. Testing Invalid Endpoint (404)"
78
+ response=$(curl -s "$API_BASE/nonexistent")
79
+ test_response_format "404 error" "$response" '"statusCode":404'
80
+ test_response_format "Not found message" "$response" '"error":"NOT_FOUND"'
81
+
82
+ ADMIN_TOKEN=$(get_admin_token)
83
+
84
+ # 5. Test with Authentication
85
+ print_info "5. Creating test user for authenticated tests"
86
+ auth_response=$(curl -s -X POST "$API_BASE/auth/users" \
87
+ -H "Content-Type: application/json" \
88
+ -d "{
89
+ \"email\": \"$TEST_USER_EMAIL\",
90
+ \"password\": \"$TEST_USER_PASSWORD\",
91
+ \"name\": \"Test User\"
92
+ }")
93
+
94
+ # Check if registration was successful
95
+ if echo "$auth_response" | grep -q '"accessToken"'; then
96
+ AUTH_TOKEN=$(echo "$auth_response" | grep -o '"accessToken":"[^"]*' | cut -d'"' -f4)
97
+ print_success "User registered successfully"
98
+ register_test_user "$TEST_USER_EMAIL"
99
+
100
+ # Test authenticated endpoints
101
+ print_info "6. Testing Database Tables List (Authenticated)"
102
+ response=$(curl -s "$API_BASE/database/tables" \
103
+ -H "Authorization: Bearer $ADMIN_TOKEN")
104
+ test_response_format "Direct array response" "$response" '^\['
105
+ test_response_format "No wrapper object" "$response" '"data":\[' "true"
106
+
107
+ # Test table creation
108
+ print_info "7. Testing Create Table (Success Response)"
109
+ TABLE_NAME="test_rest_table_$(date +%s)"
110
+ response=$(curl -s -X POST "$API_BASE/database/tables" \
111
+ -H "Authorization: Bearer $ADMIN_TOKEN" \
112
+ -H "Content-Type: application/json" \
113
+ -d "{
114
+ \"tableName\": \"$TABLE_NAME\",
115
+ \"rlsEnabled\": false,
116
+ \"columns\": [
117
+ {\"columnName\": \"id\", \"type\": \"uuid\", \"isNullable\": false, \"isUnique\": false, \"defaultValue\": \"gen_random_uuid()\"},
118
+ {\"columnName\": \"title\", \"type\": \"string\", \"isNullable\": false, \"isUnique\": false}
119
+ ]
120
+ }")
121
+
122
+ if echo "$response" | grep -q '"tableName"'; then
123
+ print_success "Table created"
124
+ register_test_table "$TABLE_NAME"
125
+ test_response_format "Direct object response" "$response" "\"tableName\":\"$TABLE_NAME\""
126
+ test_response_format "No success wrapper" "$response" '"success":true' "true"
127
+ else
128
+ print_fail "Table creation failed"
129
+ echo "Response: $response"
130
+ track_test_failure
131
+ fi
132
+
133
+ # Test pagination headers
134
+ print_info "8. Testing Pagination Headers"
135
+ # Use -I for headers, but we need both headers and body
136
+ full_response=$(curl -s -i "$API_BASE/logs/audits?limit=10" \
137
+ -H "Authorization: Bearer $ADMIN_TOKEN")
138
+
139
+ # Extract headers (everything before empty line)
140
+ headers=$(echo "$full_response" | awk 'BEGIN{RS="\r\n\r\n"} NR==1')
141
+
142
+ # Test for PostgREST-style Content-Range header (format: start-end/total)
143
+ test_response_format "Content-Range header" "$headers" 'Content-Range:'
144
+ test_response_format "Preference-Applied header" "$headers" 'Preference-Applied:'
145
+
146
+ else
147
+ print_fail "Failed to register user"
148
+ echo "Response: $auth_response"
149
+ track_test_failure
150
+ fi
151
+
152
+ # 9. Test Storage API (requires API key)
153
+ print_info "9. Testing Storage API Format"
154
+ # First get admin token if we don't have it
155
+ if [ -z "$AUTH_TOKEN" ]; then
156
+ admin_token=$(get_admin_token)
157
+ else
158
+ admin_token="$AUTH_TOKEN"
159
+ fi
160
+
161
+ # Try to get API key from the API endpoint first
162
+ if [ -n "$admin_token" ]; then
163
+ api_key_response=$(curl -s "$API_BASE/metadata/api-key" \
164
+ -H "Authorization: Bearer $admin_token")
165
+ API_KEY=$(echo "$api_key_response" | grep -o '"apiKey":"[^"]*' | cut -d'"' -f4)
166
+ fi
167
+
168
+ # If that fails, try the helper function
169
+ if [ -z "$API_KEY" ]; then
170
+ API_KEY=$(get_admin_api_key)
171
+ fi
172
+
173
+ # Export for cleanup
174
+ if [ -n "$API_KEY" ]; then
175
+ export ACCESS_API_KEY="$API_KEY"
176
+ # List buckets
177
+ response=$(curl -s "$API_BASE/storage/buckets" \
178
+ -H "Authorization: Bearer $API_KEY")
179
+ test_response_format "Direct array for buckets" "$response" '^\['
180
+
181
+ # Create a test bucket
182
+ BUCKET_NAME="test-rest-bucket-$(date +%s)"
183
+ response=$(curl -s -X POST "$API_BASE/storage/buckets" \
184
+ -H "Content-Type: application/json" \
185
+ -H "Authorization: Bearer $API_KEY" \
186
+ -d "{\"bucketName\": \"$BUCKET_NAME\", \"isPublic\": true}")
187
+
188
+ if echo "$response" | grep -q '"bucketName"'; then
189
+ print_success "Bucket created"
190
+ register_test_bucket "$BUCKET_NAME"
191
+ test_response_format "Success message field" "$response" '"message":"Bucket created successfully"'
192
+ test_response_format "NextAction guidance" "$response" '"nextActions":'
193
+ else
194
+ print_fail "Bucket creation failed"
195
+ echo "Response: $response"
196
+ track_test_failure
197
+ fi
198
+ else
199
+ print_info "Skipping storage tests (no API key available)"
200
+ fi
201
+
202
+ # Summary
203
+ echo ""
204
+ print_blue "=========================================="
205
+ print_blue "Traditional REST Format Test Complete"
206
+ print_blue "=========================================="
207
+
208
+ # Exit with proper status
209
209
  exit_with_status
@@ -1,51 +1,51 @@
1
- # Manual Tests
2
-
3
- This directory contains tests that need to be run manually and are not included in the automated test suite.
4
-
5
- ## Better Auth Tests
6
-
7
- These tests are for the Better Auth v2 implementation.
8
-
9
- ### Running Better Auth Tests
10
-
11
- Run the Better Auth test:
12
- ```bash
13
- ./tests/manual/test-better-auth.sh
14
- ```
15
-
16
- ### Prerequisites
17
-
18
- - Docker must be running with the InsForge backend on port 7130
19
- - Admin credentials should be configured in environment variables:
20
- - `ADMIN_EMAIL` (default: admin@example.com)
21
- - `ADMIN_PASSWORD` (default: change-this-password)
22
-
23
- ### Example Commands
24
-
25
- ```bash
26
- # Run from the backend directory
27
- cd backend
28
-
29
- # Run Better Auth test
30
- ./tests/manual/test-better-auth.sh
31
-
32
- # Run with custom admin credentials
33
- ADMIN_EMAIL=admin@mycompany.com ADMIN_PASSWORD=mysecurepass ./tests/manual/test-better-auth.sh
34
- ```
35
-
36
- ### Test Coverage
37
-
38
- The test covers:
39
- - Admin authentication (sign-in, wrong password, non-admin email)
40
- - User registration and sign-in
41
- - Admin user management (list users with pagination)
42
- - JWT token verification (admin role and type claims)
43
- - Authorization checks (admin-only endpoints)
44
- - Error handling (invalid email format, missing fields)
45
-
46
- ### Why These Tests Are Manual
47
-
48
- These tests are kept separate because:
49
- 1. They use authentication endpoints (`/api/auth/v2/*`) that require specific setup
50
- 2. They test admin-specific functionality that needs manual verification
1
+ # Manual Tests
2
+
3
+ This directory contains tests that need to be run manually and are not included in the automated test suite.
4
+
5
+ ## Better Auth Tests
6
+
7
+ These tests are for the Better Auth v2 implementation.
8
+
9
+ ### Running Better Auth Tests
10
+
11
+ Run the Better Auth test:
12
+ ```bash
13
+ ./tests/manual/test-better-auth.sh
14
+ ```
15
+
16
+ ### Prerequisites
17
+
18
+ - Docker must be running with the InsForge backend on port 7130
19
+ - Admin credentials should be configured in environment variables:
20
+ - `ADMIN_EMAIL` (default: admin@example.com)
21
+ - `ADMIN_PASSWORD` (default: change-this-password)
22
+
23
+ ### Example Commands
24
+
25
+ ```bash
26
+ # Run from the backend directory
27
+ cd backend
28
+
29
+ # Run Better Auth test
30
+ ./tests/manual/test-better-auth.sh
31
+
32
+ # Run with custom admin credentials
33
+ ADMIN_EMAIL=admin@mycompany.com ADMIN_PASSWORD=mysecurepass ./tests/manual/test-better-auth.sh
34
+ ```
35
+
36
+ ### Test Coverage
37
+
38
+ The test covers:
39
+ - Admin authentication (sign-in, wrong password, non-admin email)
40
+ - User registration and sign-in
41
+ - Admin user management (list users with pagination)
42
+ - JWT token verification (admin role and type claims)
43
+ - Authorization checks (admin-only endpoints)
44
+ - Error handling (invalid email format, missing fields)
45
+
46
+ ### Why These Tests Are Manual
47
+
48
+ These tests are kept separate because:
49
+ 1. They use authentication endpoints (`/api/auth/v2/*`) that require specific setup
50
+ 2. They test admin-specific functionality that needs manual verification
51
51
  3. They verify JWT token structure and claims that may vary between environments
@@ -1,11 +1,11 @@
1
- -- Create large_table with basic structure
2
- CREATE TABLE IF NOT EXISTS large_table (
3
- id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
4
- user_id UUID NOT NULL,
5
- title TEXT NOT NULL,
6
- content TEXT,
7
- status VARCHAR(50) DEFAULT 'active',
8
- metadata JSONB DEFAULT '{}',
9
- created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
10
- updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
1
+ -- Create large_table with basic structure
2
+ CREATE TABLE IF NOT EXISTS large_table (
3
+ id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
4
+ user_id UUID NOT NULL,
5
+ title TEXT NOT NULL,
6
+ content TEXT,
7
+ status VARCHAR(50) DEFAULT 'active',
8
+ metadata JSONB DEFAULT '{}',
9
+ created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
10
+ updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
11
11
  );