insforge 0.3.2 → 1.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.cursor/rules/cursor-rules.mdc +94 -0
  3. package/.dockerignore +3 -0
  4. package/.env.example +33 -4
  5. package/.github/ISSUE_TEMPLATE/bug_report.yml +13 -60
  6. package/.github/ISSUE_TEMPLATE/config.yml +2 -2
  7. package/.github/ISSUE_TEMPLATE/feature_request.yml +10 -63
  8. package/.github/PULL_REQUEST_TEMPLATE.md +7 -0
  9. package/.github/workflows/build-image.yml +2 -1
  10. package/.github/workflows/e2e.yml +63 -0
  11. package/CHANGELOG.md +41 -0
  12. package/CLAUDE_PLUGIN.md +104 -0
  13. package/CODE_OF_CONDUCT.md +128 -0
  14. package/CONTRIBUTING.md +1 -1
  15. package/Dockerfile +4 -1
  16. package/README.md +66 -18
  17. package/assets/mcpInstallv2.png +0 -0
  18. package/assets/sampleResponse.png +0 -0
  19. package/auth/index.html +13 -0
  20. package/auth/package.json +28 -0
  21. package/auth/public/favicon.ico +0 -0
  22. package/auth/src/App.tsx +33 -0
  23. package/auth/src/components/ErrorCard.tsx +37 -0
  24. package/auth/src/components/Layout.tsx +13 -0
  25. package/auth/src/index.css +19 -0
  26. package/auth/src/lib/broadcastService.ts +115 -0
  27. package/auth/src/lib/utils.ts +11 -0
  28. package/auth/src/main.tsx +22 -0
  29. package/auth/src/pages/ForgotPasswordPage.tsx +11 -0
  30. package/auth/src/pages/ResetPasswordPage.tsx +11 -0
  31. package/auth/src/pages/SignInPage.tsx +57 -0
  32. package/auth/src/pages/SignUpPage.tsx +57 -0
  33. package/auth/src/pages/VerifyEmailPage.tsx +20 -0
  34. package/auth/src/vite-env.d.ts +10 -0
  35. package/auth/tsconfig.json +32 -0
  36. package/auth/tsconfig.node.json +11 -0
  37. package/auth/vite.config.ts +25 -0
  38. package/backend/package.json +9 -9
  39. package/backend/src/api/{middleware → middlewares}/auth.ts +8 -9
  40. package/backend/src/api/middlewares/rate-limiters.ts +127 -0
  41. package/backend/src/api/routes/{ai.ts → ai/index.routes.ts} +20 -24
  42. package/backend/src/api/routes/auth/index.routes.ts +570 -0
  43. package/backend/src/api/routes/auth/oauth.routes.ts +448 -0
  44. package/backend/src/api/routes/{database.advance.ts → database/advance.routes.ts} +107 -65
  45. package/backend/src/api/routes/database/index.routes.ts +13 -0
  46. package/backend/src/api/routes/{database.records.ts → database/records.routes.ts} +22 -8
  47. package/backend/src/api/routes/{database.tables.ts → database/tables.routes.ts} +20 -23
  48. package/backend/src/api/routes/docs/index.routes.ts +76 -0
  49. package/backend/src/api/routes/functions/index.routes.ts +188 -0
  50. package/backend/src/api/routes/{logs.ts → logs/index.routes.ts} +25 -30
  51. package/backend/src/api/routes/{metadata.ts → metadata/index.routes.ts} +21 -31
  52. package/backend/src/api/routes/{secrets.ts → secrets/index.routes.ts} +27 -22
  53. package/backend/src/api/routes/{storage.ts → storage/index.routes.ts} +34 -53
  54. package/backend/src/api/routes/usage/index.routes.ts +89 -0
  55. package/backend/src/infra/config/app.config.ts +51 -0
  56. package/backend/src/{core/database/manager.ts → infra/database/database.manager.ts} +76 -85
  57. package/backend/src/infra/database/migrations/013_create-auth-schema-functions.sql +44 -0
  58. package/backend/src/infra/database/migrations/014_add-updated-at-trigger-user-table.sql +8 -0
  59. package/backend/src/infra/database/migrations/015_create-auth-config-and-email-otp-tables.sql +60 -0
  60. package/backend/src/infra/database/migrations/016_update-auth-config-and-email-otp.sql +24 -0
  61. package/backend/src/{core/secrets/encryption.ts → infra/security/encryption.manager.ts} +3 -2
  62. package/backend/src/infra/security/token.manager.ts +125 -0
  63. package/backend/src/{core/socket/socket.ts → infra/socket/socket.manager.ts} +15 -15
  64. package/backend/src/providers/ai/openrouter.provider.ts +377 -0
  65. package/backend/src/providers/email/base.provider.ts +41 -0
  66. package/backend/src/providers/email/cloud.provider.ts +187 -0
  67. package/backend/src/{core/logs/providers → providers/logs}/base.provider.ts +11 -11
  68. package/backend/src/{core/logs/providers → providers/logs}/cloudwatch.provider.ts +61 -38
  69. package/backend/src/providers/logs/local.provider.ts +185 -0
  70. package/backend/src/providers/oauth/base.provider.ts +29 -0
  71. package/backend/src/providers/oauth/discord.provider.ts +195 -0
  72. package/backend/src/providers/oauth/facebook.provider.ts +194 -0
  73. package/backend/src/providers/oauth/github.provider.ts +208 -0
  74. package/backend/src/providers/oauth/google.provider.ts +249 -0
  75. package/backend/src/providers/oauth/index.ts +7 -0
  76. package/backend/src/providers/oauth/linkedin.provider.ts +240 -0
  77. package/backend/src/providers/oauth/microsoft.provider.ts +169 -0
  78. package/backend/src/providers/oauth/x.provider.ts +202 -0
  79. package/backend/src/providers/storage/base.provider.ts +29 -0
  80. package/backend/src/providers/storage/local.provider.ts +103 -0
  81. package/backend/src/providers/storage/s3.provider.ts +313 -0
  82. package/backend/src/server.ts +70 -74
  83. package/backend/src/{core/ai/config.ts → services/ai/ai-config.service.ts} +19 -24
  84. package/backend/src/services/ai/ai-model.service.ts +60 -0
  85. package/backend/src/{core/ai/usage.ts → services/ai/ai-usage.service.ts} +28 -35
  86. package/backend/src/{core/ai/chat.ts → services/ai/chat-completion.service.ts} +37 -24
  87. package/backend/src/services/ai/helpers.ts +64 -0
  88. package/backend/src/{core/ai/image.ts → services/ai/image-generation.service.ts} +17 -19
  89. package/backend/src/services/ai/index.ts +13 -0
  90. package/backend/src/services/auth/auth-config.service.ts +250 -0
  91. package/backend/src/services/auth/auth-otp.service.ts +424 -0
  92. package/backend/src/services/auth/auth.service.ts +1136 -0
  93. package/backend/src/services/auth/index.ts +4 -0
  94. package/backend/src/{core/auth/oauth.ts → services/auth/oauth-config.service.ts} +106 -52
  95. package/backend/src/{core/database/advance.ts → services/database/database-advance.service.ts} +97 -131
  96. package/backend/src/services/database/database-table.service.ts +811 -0
  97. package/backend/src/services/email/email.service.ts +75 -0
  98. package/backend/src/{core/functions/functions.ts → services/functions/function.service.ts} +95 -88
  99. package/backend/src/{core/logs/audit.ts → services/logs/audit.service.ts} +92 -75
  100. package/backend/src/services/logs/log.service.ts +73 -0
  101. package/backend/src/{core/secrets/secrets.ts → services/secrets/secret.service.ts} +48 -66
  102. package/backend/src/services/storage/storage.service.ts +617 -0
  103. package/backend/src/services/usage/usage.service.ts +149 -0
  104. package/backend/src/types/auth.ts +66 -2
  105. package/backend/src/types/email.ts +8 -0
  106. package/backend/src/types/error-constants.ts +4 -0
  107. package/backend/src/types/logs.ts +0 -29
  108. package/backend/src/{core/socket/types.ts → types/socket.ts} +5 -6
  109. package/backend/src/utils/environment.ts +9 -3
  110. package/backend/src/utils/logger.ts +20 -2
  111. package/backend/src/utils/seed.ts +150 -57
  112. package/backend/src/utils/sql-parser.ts +1 -1
  113. package/backend/src/utils/utils.ts +114 -0
  114. package/backend/src/utils/validations.ts +40 -4
  115. package/backend/tests/local/test-ai-config.sh +129 -0
  116. package/backend/tests/local/test-ai-usage.sh +80 -0
  117. package/backend/tests/local/test-auth-router.sh +1 -1
  118. package/backend/tests/local/test-e2e.sh +1 -1
  119. package/backend/tests/local/test-functions.sh +123 -0
  120. package/backend/tests/local/test-logs.sh +132 -0
  121. package/backend/tests/local/test-public-bucket.sh +3 -3
  122. package/backend/tests/local/test-secrets.sh +14 -12
  123. package/backend/tests/local/test-traditional-rest.sh +2 -2
  124. package/backend/tests/manual/test-rawsql-modes.sh +244 -0
  125. package/backend/tests/test-config.sh +37 -1
  126. package/backend/tests/unit/cloud-token.test.ts +48 -0
  127. package/backend/tests/unit/constant.test.ts +8 -0
  128. package/backend/tests/unit/email.test.ts +372 -0
  129. package/backend/tests/unit/environment.test.ts +59 -0
  130. package/backend/tests/unit/helpers.test.ts +63 -0
  131. package/backend/tests/unit/logger.test.ts +22 -0
  132. package/backend/tests/unit/rate-limit.test.ts +154 -0
  133. package/backend/tests/unit/response.test.ts +58 -0
  134. package/backend/tests/unit/sql-parser.test.ts +74 -0
  135. package/backend/tests/unit/uuid.test.ts +21 -0
  136. package/backend/tests/unit/validations.test.ts +80 -0
  137. package/backend/tsconfig.json +1 -1
  138. package/backend/vitest.config.ts +11 -0
  139. package/claude-plugin/.claude-plugin/plugin.json +24 -0
  140. package/claude-plugin/README.md +133 -0
  141. package/claude-plugin/skills/insforge-schema-patterns/SKILL.md +270 -0
  142. package/docker-compose.prod.yml +60 -4
  143. package/docker-compose.yml +65 -4
  144. package/docker-init/db/db-init.sql +6 -34
  145. package/docker-init/logs/vector.yml +236 -0
  146. package/docs/README.md +44 -0
  147. package/docs/changelog.mdx +67 -0
  148. package/docs/core-concepts/ai/architecture.mdx +373 -0
  149. package/docs/core-concepts/ai/sdk.mdx +213 -0
  150. package/docs/core-concepts/authentication/architecture.mdx +278 -0
  151. package/docs/core-concepts/authentication/sdk.mdx +414 -0
  152. package/docs/core-concepts/authentication/ui-components/customization.mdx +529 -0
  153. package/docs/core-concepts/authentication/ui-components/nextjs.mdx +221 -0
  154. package/docs/core-concepts/authentication/ui-components/react-router.mdx +184 -0
  155. package/docs/core-concepts/authentication/ui-components/react.mdx +129 -0
  156. package/docs/core-concepts/database/architecture.mdx +256 -0
  157. package/docs/core-concepts/database/sdk.mdx +382 -0
  158. package/docs/core-concepts/functions/architecture.mdx +105 -0
  159. package/docs/core-concepts/functions/sdk.mdx +184 -0
  160. package/docs/core-concepts/storage/architecture.mdx +243 -0
  161. package/docs/core-concepts/storage/sdk.mdx +253 -0
  162. package/docs/deployment/README.md +94 -0
  163. package/docs/deployment/deploy-to-aws-ec2.md +565 -0
  164. package/docs/deployment/deploy-to-azure-virtual-machines.md +313 -0
  165. package/docs/deployment/deploy-to-google-cloud-compute-engine.md +613 -0
  166. package/docs/deployment/deploy-to-render.md +441 -0
  167. package/docs/docs.json +210 -0
  168. package/docs/examples/framework-guides/nextjs.mdx +131 -0
  169. package/docs/examples/framework-guides/nuxt.mdx +165 -0
  170. package/docs/examples/framework-guides/react.mdx +165 -0
  171. package/docs/examples/framework-guides/svelte.mdx +153 -0
  172. package/docs/examples/framework-guides/vue.mdx +159 -0
  173. package/docs/examples/overview.mdx +67 -0
  174. package/docs/favicon.svg +19 -0
  175. package/docs/images/changelog/nov-2025/auth-components.webp +0 -0
  176. package/docs/images/changelog/nov-2025/database-metadata.webp +0 -0
  177. package/docs/images/changelog/nov-2025/quickstart-prompts.webp +0 -0
  178. package/docs/images/changelog/nov-2025/sql-editor.webp +0 -0
  179. package/docs/images/changelog/nov-2025/usage-page.webp +0 -0
  180. package/docs/images/changelog/october-2025/csv-upload.webp +0 -0
  181. package/docs/images/changelog/october-2025/logs-feature.webp +0 -0
  182. package/docs/images/changelog/october-2025/oauth-providers.webp +0 -0
  183. package/docs/images/checks-passed.png +0 -0
  184. package/docs/images/dashboard-connect-expanded.png +0 -0
  185. package/docs/images/dashboard-connect.png +0 -0
  186. package/docs/images/hero-dark.png +0 -0
  187. package/docs/images/hero-light.png +0 -0
  188. package/docs/images/icons/ai.svg +4 -0
  189. package/docs/images/icons/auth.svg +1 -0
  190. package/docs/images/icons/database.svg +1 -0
  191. package/docs/images/icons/function.svg +1 -0
  192. package/docs/images/icons/storage.svg +1 -0
  193. package/docs/images/logos/nextjs.svg +4 -0
  194. package/docs/images/logos/nuxt.svg +4 -0
  195. package/docs/images/logos/react.svg +5 -0
  196. package/docs/images/logos/svelte.svg +4 -0
  197. package/docs/images/logos/vue.svg +5 -0
  198. package/docs/images/mcp-install.png +0 -0
  199. package/docs/images/onboarding-mcp.png +0 -0
  200. package/docs/insforge-instructions-sdk.md +55 -374
  201. package/docs/introduction.mdx +45 -0
  202. package/docs/logo/dark.svg +22 -0
  203. package/docs/logo/light.svg +20 -0
  204. package/docs/partnership.mdx +647 -0
  205. package/docs/quickstart.mdx +83 -0
  206. package/docs/showcase/2048-arena.png +0 -0
  207. package/docs/showcase/framegen-cloud.png +0 -0
  208. package/docs/showcase/line-connect-race.png +0 -0
  209. package/docs/showcase/moment-vibe.png +0 -0
  210. package/docs/showcase/national-flags.png +0 -0
  211. package/docs/showcase/pokemon-vibe.png +0 -0
  212. package/docs/showcase/pure-browse-buy.png +0 -0
  213. package/docs/showcase.mdx +52 -0
  214. package/docs/snippets/sdk-installation.mdx +22 -0
  215. package/docs/snippets/service-icons.mdx +27 -0
  216. package/eslint.config.js +10 -3
  217. package/frontend/package.json +10 -4
  218. package/frontend/src/App.tsx +13 -82
  219. package/frontend/src/assets/icons/connected.svg +3 -0
  220. package/frontend/src/assets/icons/loader.svg +9 -0
  221. package/frontend/src/assets/logos/apple.svg +4 -0
  222. package/frontend/src/assets/logos/discord.svg +1 -1
  223. package/frontend/src/assets/logos/facebook.svg +3 -0
  224. package/frontend/src/assets/logos/instagram.svg +2 -0
  225. package/frontend/src/assets/logos/linkedin.svg +3 -0
  226. package/frontend/src/assets/logos/microsoft.svg +1 -0
  227. package/frontend/src/assets/logos/spotify.svg +17 -0
  228. package/frontend/src/assets/logos/tiktok.svg +6 -0
  229. package/frontend/src/assets/logos/x.svg +3 -0
  230. package/frontend/src/components/Checkbox.tsx +27 -29
  231. package/frontend/src/components/CodeBlock.tsx +55 -2
  232. package/frontend/src/components/CodeEditor.tsx +92 -0
  233. package/frontend/src/components/ConfirmDialog.tsx +1 -1
  234. package/frontend/src/components/ConnectCTA.tsx +38 -0
  235. package/frontend/src/components/CopyButton.tsx +52 -15
  236. package/frontend/src/components/ErrorState.tsx +1 -2
  237. package/frontend/src/components/FeatureSidebar.tsx +6 -6
  238. package/frontend/src/components/FeatureSidebarItem.tsx +2 -2
  239. package/frontend/src/components/JsonHighlight.tsx +21 -9
  240. package/frontend/src/components/ProjectInfoModal.tsx +128 -0
  241. package/frontend/src/components/PromptDialog.tsx +1 -4
  242. package/frontend/src/components/SearchInput.tsx +1 -2
  243. package/frontend/src/components/Stepper.tsx +53 -0
  244. package/frontend/src/components/ThemeToggle.tsx +3 -3
  245. package/frontend/src/components/datagrid/DataGrid.tsx +25 -32
  246. package/frontend/src/components/datagrid/cell-editors/DateCellEditor.tsx +1 -2
  247. package/frontend/src/components/datagrid/cell-editors/JsonCellEditor.tsx +2 -4
  248. package/frontend/src/components/datagrid/index.ts +23 -0
  249. package/frontend/src/components/index.ts +23 -30
  250. package/frontend/src/components/layout/AppHeader.tsx +133 -92
  251. package/frontend/src/components/layout/AppSidebar.tsx +80 -170
  252. package/frontend/src/components/layout/Layout.tsx +12 -23
  253. package/frontend/src/components/layout/PrimaryMenu.tsx +187 -0
  254. package/frontend/src/components/layout/SecondaryMenu.tsx +70 -0
  255. package/frontend/src/components/layout/index.ts +5 -0
  256. package/frontend/src/components/radix/Tooltip.tsx +24 -13
  257. package/frontend/src/components/radix/index.ts +22 -0
  258. package/frontend/src/features/ai/components/AIConfigCard.tsx +129 -83
  259. package/frontend/src/features/ai/components/AIEmptyState.tsx +12 -7
  260. package/frontend/src/features/ai/components/ModalityFilterSidebar.tsx +101 -0
  261. package/frontend/src/features/ai/components/ModelSelectionDialog.tsx +135 -0
  262. package/frontend/src/features/ai/components/ModelSelectionGrid.tsx +51 -0
  263. package/frontend/src/features/ai/components/SystemPromptDialog.tsx +118 -0
  264. package/frontend/src/features/ai/components/index.ts +6 -0
  265. package/frontend/src/features/ai/helpers.ts +57 -71
  266. package/frontend/src/features/ai/hooks/useAIConfigs.ts +39 -113
  267. package/frontend/src/features/ai/hooks/useAIUsage.ts +0 -2
  268. package/frontend/src/features/ai/page/AIPage.tsx +67 -79
  269. package/frontend/src/features/ai/services/ai.service.ts +5 -5
  270. package/frontend/src/features/auth/components/AuthPreview.tsx +96 -0
  271. package/frontend/src/features/auth/components/OAuthConfigDialog.tsx +53 -30
  272. package/frontend/src/features/auth/components/UserFormDialog.tsx +13 -6
  273. package/frontend/src/features/auth/components/UsersDataGrid.tsx +44 -14
  274. package/frontend/src/features/auth/components/index.ts +5 -0
  275. package/frontend/src/features/auth/helpers.tsx +200 -0
  276. package/frontend/src/features/auth/hooks/useAnonToken.ts +30 -0
  277. package/frontend/src/features/auth/hooks/useAuthConfig.ts +48 -0
  278. package/frontend/src/features/auth/hooks/useOAuthConfig.ts +14 -10
  279. package/frontend/src/features/auth/hooks/useUsers.ts +43 -5
  280. package/frontend/src/features/auth/index.ts +3 -2
  281. package/frontend/src/features/auth/page/AuthMethodsPage.tsx +275 -0
  282. package/frontend/src/features/auth/page/ConfigurationPage.tsx +395 -0
  283. package/frontend/src/features/auth/page/UsersPage.tsx +285 -0
  284. package/frontend/src/features/auth/services/anonToken.service.ts +11 -0
  285. package/frontend/src/features/auth/services/config.service.ts +19 -0
  286. package/frontend/src/features/auth/services/{oauth.service.ts → oauth-config.service.ts} +4 -4
  287. package/frontend/src/features/auth/services/{auth.service.ts → user.service.ts} +7 -53
  288. package/frontend/src/features/dashboard/components/ConnectionSuccessBanner.tsx +35 -0
  289. package/frontend/src/features/dashboard/components/PromptCard.tsx +21 -0
  290. package/frontend/src/features/dashboard/components/PromptDialog.tsx +103 -0
  291. package/frontend/src/features/dashboard/components/StatsCard.tsx +50 -0
  292. package/frontend/src/features/dashboard/components/index.ts +4 -0
  293. package/frontend/src/features/dashboard/page/DashboardPage.tsx +187 -169
  294. package/frontend/src/features/dashboard/prompts/ai-chatbot.ts +13 -0
  295. package/frontend/src/features/dashboard/prompts/crm-system.ts +13 -0
  296. package/frontend/src/features/dashboard/prompts/ecommerce-platform.ts +12 -0
  297. package/frontend/src/features/dashboard/prompts/index.ts +31 -0
  298. package/frontend/src/features/dashboard/prompts/instagram-clone.ts +11 -0
  299. package/frontend/src/features/dashboard/prompts/notion-clone.ts +14 -0
  300. package/frontend/src/features/dashboard/prompts/reddit-clone.ts +12 -0
  301. package/frontend/src/features/database/components/DatabaseDataGrid.tsx +48 -17
  302. package/frontend/src/features/database/components/ForeignKeyCell.tsx +15 -34
  303. package/frontend/src/features/database/components/ForeignKeyPopover.tsx +19 -20
  304. package/frontend/src/features/database/components/LinkRecordModal.tsx +120 -125
  305. package/frontend/src/features/database/components/RecordFormDialog.tsx +22 -33
  306. package/frontend/src/features/database/components/RecordFormField.tsx +45 -47
  307. package/frontend/src/features/database/components/TableEmptyState.tsx +6 -5
  308. package/frontend/src/features/database/components/TableForm.tsx +28 -15
  309. package/frontend/src/features/database/components/TableFormColumn.tsx +2 -3
  310. package/frontend/src/features/database/components/TableSidebar.tsx +1 -1
  311. package/frontend/src/features/database/components/TablesEmptyState.tsx +48 -0
  312. package/frontend/src/features/database/components/TemplateCard.tsx +37 -0
  313. package/frontend/src/features/database/components/TemplatePreview.tsx +92 -0
  314. package/frontend/src/features/database/components/index.ts +19 -0
  315. package/frontend/src/features/database/constants.ts +28 -2
  316. package/frontend/src/features/database/contexts/SQLEditorContext.tsx +188 -0
  317. package/frontend/src/features/database/helpers.ts +2 -2
  318. package/frontend/src/features/database/hooks/useCSVImport.ts +29 -0
  319. package/frontend/src/features/database/hooks/useFullMetadata.ts +18 -0
  320. package/frontend/src/features/database/hooks/useRawSQL.ts +55 -0
  321. package/frontend/src/features/database/hooks/useRecords.ts +139 -0
  322. package/frontend/src/features/database/hooks/useTables.ts +131 -0
  323. package/frontend/src/features/database/index.ts +6 -1
  324. package/frontend/src/features/database/page/FunctionsPage.tsx +211 -0
  325. package/frontend/src/features/database/page/IndexesPage.tsx +240 -0
  326. package/frontend/src/features/database/page/PoliciesPage.tsx +248 -0
  327. package/frontend/src/features/database/page/SQLEditorPage.tsx +382 -0
  328. package/frontend/src/features/database/page/{DatabasePage.tsx → TablesPage.tsx} +186 -185
  329. package/frontend/src/features/database/page/TemplatesPage.tsx +39 -0
  330. package/frontend/src/features/database/page/TriggersPage.tsx +242 -0
  331. package/frontend/src/features/database/services/advance.service.ts +66 -0
  332. package/frontend/src/features/database/services/{database.service.ts → record.service.ts} +67 -64
  333. package/frontend/src/features/database/services/table.service.ts +64 -0
  334. package/frontend/src/features/database/templates/ai-chatbot.ts +402 -0
  335. package/frontend/src/features/database/templates/crm-system.ts +528 -0
  336. package/frontend/src/features/database/templates/ecommerce-platform.ts +553 -0
  337. package/frontend/src/features/database/templates/index.ts +34 -0
  338. package/frontend/src/features/database/templates/instagram-clone.ts +222 -0
  339. package/frontend/src/features/database/templates/notion-clone.ts +483 -0
  340. package/frontend/src/features/database/templates/reddit-clone.ts +526 -0
  341. package/frontend/src/features/functions/components/FunctionRow.tsx +2 -1
  342. package/frontend/src/features/functions/components/FunctionsSidebar.tsx +1 -1
  343. package/frontend/src/features/functions/components/SecretRow.tsx +1 -1
  344. package/frontend/src/features/functions/components/index.ts +5 -0
  345. package/frontend/src/features/functions/hooks/useFunctions.ts +4 -4
  346. package/frontend/src/features/{secrets → functions}/hooks/useSecrets.ts +5 -5
  347. package/frontend/src/features/functions/page/FunctionsPage.tsx +160 -17
  348. package/frontend/src/features/functions/{components/SecretsContent.tsx → page/SecretsPage.tsx} +8 -12
  349. package/frontend/src/features/functions/services/{functions.service.ts → function.service.ts} +2 -2
  350. package/frontend/src/features/{secrets/services/secrets.service.ts → functions/services/secret.service.ts} +2 -2
  351. package/frontend/src/features/login/hooks/usePartnerOrigin.ts +27 -0
  352. package/frontend/src/features/login/page/CloudLoginPage.tsx +79 -54
  353. package/frontend/src/features/login/page/LoginPage.tsx +16 -23
  354. package/frontend/src/features/login/services/partnership.service.ts +65 -0
  355. package/frontend/src/features/logs/components/LogsDataGrid.tsx +89 -0
  356. package/frontend/src/features/logs/components/SeverityBadge.tsx +18 -0
  357. package/frontend/src/features/logs/components/index.ts +2 -0
  358. package/frontend/src/features/logs/helpers.ts +24 -0
  359. package/frontend/src/features/logs/hooks/useAuditLogs.ts +4 -4
  360. package/frontend/src/features/logs/hooks/useLogSources.ts +137 -0
  361. package/frontend/src/features/logs/hooks/useLogs.ts +163 -0
  362. package/frontend/src/features/logs/hooks/useMcpUsage.ts +181 -0
  363. package/frontend/src/features/logs/index.ts +8 -2
  364. package/frontend/src/features/logs/page/AuditsPage.tsx +91 -38
  365. package/frontend/src/features/logs/page/LogsPage.tsx +152 -0
  366. package/frontend/src/features/logs/page/MCPLogsPage.tsx +84 -0
  367. package/frontend/src/features/logs/services/audit.service.ts +63 -0
  368. package/frontend/src/features/logs/services/log.service.ts +15 -110
  369. package/frontend/src/features/logs/services/usage.service.ts +31 -0
  370. package/frontend/src/features/onboard/components/McpConnectionStatus.tsx +68 -0
  371. package/frontend/src/features/onboard/components/OnboardingModal.tsx +267 -0
  372. package/frontend/src/features/onboard/components/VideoDemoModal.tsx +38 -0
  373. package/frontend/src/features/onboard/components/index.ts +4 -0
  374. package/frontend/src/features/onboard/components/mcp/CursorDeeplinkGenerator.tsx +2 -2
  375. package/frontend/src/features/onboard/components/mcp/{mcp-helper.tsx → helpers.tsx} +8 -8
  376. package/frontend/src/features/onboard/components/mcp/index.ts +2 -3
  377. package/frontend/src/features/onboard/index.ts +13 -3
  378. package/frontend/src/features/storage/components/BucketEmptyState.tsx +9 -6
  379. package/frontend/src/features/storage/components/BucketFormDialog.tsx +25 -41
  380. package/frontend/src/features/storage/components/FilePreviewDialog.tsx +20 -8
  381. package/frontend/src/features/storage/components/StorageDataGrid.tsx +4 -3
  382. package/frontend/src/features/storage/components/StorageManager.tsx +23 -34
  383. package/frontend/src/features/storage/components/index.ts +12 -0
  384. package/frontend/src/features/storage/hooks/useStorage.ts +208 -0
  385. package/frontend/src/features/storage/page/StoragePage.tsx +41 -115
  386. package/frontend/src/features/storage/services/storage.service.ts +22 -1
  387. package/frontend/src/features/visualizer/components/AuthNode.tsx +72 -56
  388. package/frontend/src/features/visualizer/components/BucketNode.tsx +4 -4
  389. package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +108 -80
  390. package/frontend/src/features/visualizer/components/TableNode.tsx +34 -41
  391. package/frontend/src/features/visualizer/components/VisualizerSkeleton.tsx +12 -4
  392. package/frontend/src/features/visualizer/page/VisualizerPage.tsx +33 -29
  393. package/frontend/src/index.css +1 -0
  394. package/frontend/src/lib/analytics/posthog.tsx +27 -0
  395. package/frontend/src/lib/contexts/AuthContext.tsx +38 -31
  396. package/frontend/src/lib/contexts/SocketContext.tsx +5 -6
  397. package/frontend/src/{features/metadata → lib}/hooks/useMetadata.ts +1 -1
  398. package/frontend/src/lib/hooks/useToast.tsx +6 -2
  399. package/frontend/src/lib/routing/AppRoutes.tsx +84 -0
  400. package/frontend/src/lib/routing/RequireAuth.tsx +27 -0
  401. package/frontend/src/lib/utils/cloudMessaging.ts +20 -0
  402. package/frontend/src/lib/utils/menuItems.ts +183 -0
  403. package/frontend/src/lib/utils/{validation-schemas.ts → schemaValidations.ts} +10 -5
  404. package/frontend/src/lib/utils/utils.ts +19 -1
  405. package/frontend/src/vite-env.d.ts +1 -0
  406. package/frontend/vite.config.ts +5 -3
  407. package/functions/server.ts +28 -3
  408. package/functions/worker-template.js +15 -4
  409. package/i18n/README.ar.md +130 -0
  410. package/i18n/README.de.md +130 -0
  411. package/i18n/README.es.md +154 -0
  412. package/i18n/README.fr.md +134 -0
  413. package/i18n/README.hi.md +129 -0
  414. package/i18n/README.ja.md +174 -0
  415. package/i18n/README.ko.md +137 -0
  416. package/i18n/README.pt-BR.md +131 -0
  417. package/i18n/README.ru.md +129 -0
  418. package/i18n/README.zh-CN.md +133 -0
  419. package/openapi/ai.yaml +31 -4
  420. package/openapi/auth.yaml +827 -146
  421. package/package.json +16 -7
  422. package/shared-schemas/package.json +1 -1
  423. package/shared-schemas/src/ai-api.schema.ts +34 -58
  424. package/shared-schemas/src/ai.schema.ts +5 -0
  425. package/shared-schemas/src/auth-api.schema.ts +154 -8
  426. package/shared-schemas/src/auth.schema.ts +42 -6
  427. package/shared-schemas/src/cloud-events.schema.ts +57 -0
  428. package/shared-schemas/src/database-api.schema.ts +3 -3
  429. package/shared-schemas/src/database.schema.ts +1 -1
  430. package/shared-schemas/src/index.ts +1 -0
  431. package/shared-schemas/src/logs-api.schema.ts +7 -1
  432. package/shared-schemas/src/logs.schema.ts +26 -0
  433. package/shared-schemas/src/metadata.schema.ts +9 -4
  434. package/test-gemini.sh +35 -0
  435. package/test-usage-admin.sh +57 -0
  436. package/test-usage.sh +50 -0
  437. package/zeabur/README.md +13 -0
  438. package/zeabur/template.yml +1032 -0
  439. package/.github/workflows/deploy-aws.yml +0 -130
  440. package/backend/src/api/routes/agent.ts +0 -29
  441. package/backend/src/api/routes/auth.oauth.ts +0 -482
  442. package/backend/src/api/routes/auth.ts +0 -386
  443. package/backend/src/api/routes/docs.ts +0 -66
  444. package/backend/src/api/routes/functions.ts +0 -183
  445. package/backend/src/api/routes/openapi.ts +0 -82
  446. package/backend/src/api/routes/usage.ts +0 -96
  447. package/backend/src/core/ai/client.ts +0 -242
  448. package/backend/src/core/ai/model.ts +0 -117
  449. package/backend/src/core/auth/auth.ts +0 -781
  450. package/backend/src/core/database/table.ts +0 -772
  451. package/backend/src/core/documentation/agent.ts +0 -689
  452. package/backend/src/core/documentation/openapi.ts +0 -856
  453. package/backend/src/core/logs/analytics.ts +0 -76
  454. package/backend/src/core/logs/providers/localdb.provider.ts +0 -246
  455. package/backend/src/core/storage/storage.ts +0 -923
  456. package/backend/src/utils/cloud-token.ts +0 -39
  457. package/backend/src/utils/helpers.ts +0 -49
  458. package/backend/src/utils/uuid.ts +0 -9
  459. package/backend/tests/manual/test-better-auth.sh +0 -303
  460. package/docker-init/db/logs.sql +0 -9
  461. package/frontend/README.md +0 -112
  462. package/frontend/src/components/datagrid/index.tsx +0 -20
  463. package/frontend/src/components/layout/CloudLayout.tsx +0 -95
  464. package/frontend/src/features/ai/components/AIConfigDialog.tsx +0 -76
  465. package/frontend/src/features/ai/components/AIConfigForm.tsx +0 -222
  466. package/frontend/src/features/ai/components/fields/ModalityField.tsx +0 -87
  467. package/frontend/src/features/ai/components/fields/ModelSelectionField.tsx +0 -134
  468. package/frontend/src/features/ai/components/fields/SystemPromptField.tsx +0 -33
  469. package/frontend/src/features/auth/components/AddOAuthDialog.tsx +0 -106
  470. package/frontend/src/features/auth/components/AuthMethodTab.tsx +0 -238
  471. package/frontend/src/features/auth/components/UsersTab.tsx +0 -114
  472. package/frontend/src/features/auth/page/AuthenticationPage.tsx +0 -169
  473. package/frontend/src/features/database/hooks/UseLinkModal.tsx +0 -78
  474. package/frontend/src/features/functions/components/FunctionViewer.tsx +0 -46
  475. package/frontend/src/features/functions/components/FunctionsContent.tsx +0 -88
  476. package/frontend/src/features/login/components/AuthErrorBoundary.tsx +0 -87
  477. package/frontend/src/features/login/components/PrivateRoute.tsx +0 -24
  478. package/frontend/src/features/logs/components/AnalyticsLogsTable.tsx +0 -313
  479. package/frontend/src/features/logs/components/LogsTable.tsx +0 -199
  480. package/frontend/src/features/logs/page/AnalyticsLogsPage.tsx +0 -530
  481. package/frontend/src/features/metadata/index.ts +0 -0
  482. package/frontend/src/features/metadata/page/MetadataPage.tsx +0 -136
  483. package/frontend/src/features/onboard/components/CompletionCard.tsx +0 -41
  484. package/frontend/src/features/onboard/components/OnboardButton.tsx +0 -84
  485. package/frontend/src/features/onboard/components/StepContent.tsx +0 -91
  486. package/frontend/src/features/onboard/components/TestConnectionStep.tsx +0 -53
  487. package/frontend/src/features/onboard/components/mcp/McpInstallation.tsx +0 -144
  488. package/frontend/src/features/onboard/page/OnBoardPage.tsx +0 -104
  489. package/frontend/src/features/onboard/types.ts +0 -8
  490. package/frontend/src/lib/contexts/OnboardStepContext.tsx +0 -68
  491. package/frontend/src/lib/hooks/useOnboardingCompletion.ts +0 -29
  492. /package/backend/src/api/{middleware → middlewares}/error.ts +0 -0
  493. /package/backend/src/api/{middleware → middlewares}/upload.ts +0 -0
  494. /package/backend/{migrations → src/infra/database/migrations}/000_create-base-tables.sql +0 -0
  495. /package/backend/{migrations → src/infra/database/migrations}/001_create-helper-functions.sql +0 -0
  496. /package/backend/{migrations → src/infra/database/migrations}/002_rename-auth-tables.sql +0 -0
  497. /package/backend/{migrations → src/infra/database/migrations}/003_create-users-table.sql +0 -0
  498. /package/backend/{migrations → src/infra/database/migrations}/004_add-reload-postgrest-func.sql +0 -0
  499. /package/backend/{migrations → src/infra/database/migrations}/005_enable-project-admin-modify-users.sql +0 -0
  500. /package/backend/{migrations → src/infra/database/migrations}/006_modify-ai-usage-table.sql +0 -0
  501. /package/backend/{migrations → src/infra/database/migrations}/007_drop-metadata-table.sql +0 -0
  502. /package/backend/{migrations → src/infra/database/migrations}/008_add-system-tables.sql +0 -0
  503. /package/backend/{migrations → src/infra/database/migrations}/009_add-function-secrets.sql +0 -0
  504. /package/backend/{migrations → src/infra/database/migrations}/010_modify-ai-config-modalities.sql +0 -0
  505. /package/backend/{migrations → src/infra/database/migrations}/011_refactor-secrets-table.sql +0 -0
  506. /package/backend/{migrations → src/infra/database/migrations}/012_add-storage-uploaded-by.sql +0 -0
  507. /package/frontend/src/{features/metadata → lib}/services/metadata.service.ts +0 -0
@@ -0,0 +1,553 @@
1
+ import { DatabaseTemplate } from './index';
2
+
3
+ export const ecommercePlatformTemplate: DatabaseTemplate = {
4
+ id: 'ecommerce-platform',
5
+ title: 'E-commerce',
6
+ description:
7
+ 'An online store with product listings, carts, checkout, and owner product management',
8
+ tableCount: 5,
9
+ visualizerSchema: [
10
+ {
11
+ tableName: 'products',
12
+ columns: [
13
+ { columnName: 'id', type: 'uuid', isPrimaryKey: true, isNullable: false, isUnique: true },
14
+ {
15
+ columnName: 'name',
16
+ type: 'varchar',
17
+ isPrimaryKey: false,
18
+ isNullable: false,
19
+ isUnique: false,
20
+ },
21
+ {
22
+ columnName: 'description',
23
+ type: 'text',
24
+ isPrimaryKey: false,
25
+ isNullable: true,
26
+ isUnique: false,
27
+ },
28
+ {
29
+ columnName: 'price',
30
+ type: 'decimal',
31
+ isPrimaryKey: false,
32
+ isNullable: false,
33
+ isUnique: false,
34
+ },
35
+ {
36
+ columnName: 'sku',
37
+ type: 'varchar',
38
+ isPrimaryKey: false,
39
+ isNullable: false,
40
+ isUnique: true,
41
+ },
42
+ {
43
+ columnName: 'stock_quantity',
44
+ type: 'integer',
45
+ isPrimaryKey: false,
46
+ isNullable: true,
47
+ isUnique: false,
48
+ },
49
+ {
50
+ columnName: 'image_url',
51
+ type: 'varchar',
52
+ isPrimaryKey: false,
53
+ isNullable: true,
54
+ isUnique: false,
55
+ },
56
+ {
57
+ columnName: 'category',
58
+ type: 'varchar',
59
+ isPrimaryKey: false,
60
+ isNullable: true,
61
+ isUnique: false,
62
+ },
63
+ {
64
+ columnName: 'is_active',
65
+ type: 'boolean',
66
+ isPrimaryKey: false,
67
+ isNullable: true,
68
+ isUnique: false,
69
+ },
70
+ {
71
+ columnName: 'created_at',
72
+ type: 'timestamp',
73
+ isPrimaryKey: false,
74
+ isNullable: true,
75
+ isUnique: false,
76
+ },
77
+ {
78
+ columnName: 'updated_at',
79
+ type: 'timestamp',
80
+ isPrimaryKey: false,
81
+ isNullable: true,
82
+ isUnique: false,
83
+ },
84
+ ],
85
+ },
86
+ {
87
+ tableName: 'customers',
88
+ columns: [
89
+ { columnName: 'id', type: 'uuid', isPrimaryKey: true, isNullable: false, isUnique: true },
90
+ {
91
+ columnName: 'user_id',
92
+ type: 'uuid',
93
+ isPrimaryKey: false,
94
+ isNullable: false,
95
+ isUnique: true,
96
+ foreignKey: {
97
+ referenceTable: 'users',
98
+ referenceColumn: 'id',
99
+ onDelete: 'CASCADE',
100
+ onUpdate: 'CASCADE',
101
+ },
102
+ },
103
+ {
104
+ columnName: 'first_name',
105
+ type: 'varchar',
106
+ isPrimaryKey: false,
107
+ isNullable: false,
108
+ isUnique: false,
109
+ },
110
+ {
111
+ columnName: 'last_name',
112
+ type: 'varchar',
113
+ isPrimaryKey: false,
114
+ isNullable: false,
115
+ isUnique: false,
116
+ },
117
+ {
118
+ columnName: 'phone',
119
+ type: 'varchar',
120
+ isPrimaryKey: false,
121
+ isNullable: true,
122
+ isUnique: false,
123
+ },
124
+ {
125
+ columnName: 'address',
126
+ type: 'text',
127
+ isPrimaryKey: false,
128
+ isNullable: true,
129
+ isUnique: false,
130
+ },
131
+ {
132
+ columnName: 'city',
133
+ type: 'varchar',
134
+ isPrimaryKey: false,
135
+ isNullable: true,
136
+ isUnique: false,
137
+ },
138
+ {
139
+ columnName: 'country',
140
+ type: 'varchar',
141
+ isPrimaryKey: false,
142
+ isNullable: true,
143
+ isUnique: false,
144
+ },
145
+ {
146
+ columnName: 'postal_code',
147
+ type: 'varchar',
148
+ isPrimaryKey: false,
149
+ isNullable: true,
150
+ isUnique: false,
151
+ },
152
+ {
153
+ columnName: 'created_at',
154
+ type: 'timestamp',
155
+ isPrimaryKey: false,
156
+ isNullable: true,
157
+ isUnique: false,
158
+ },
159
+ ],
160
+ },
161
+ {
162
+ tableName: 'orders',
163
+ columns: [
164
+ { columnName: 'id', type: 'uuid', isPrimaryKey: true, isNullable: false, isUnique: true },
165
+ {
166
+ columnName: 'customer_id',
167
+ type: 'uuid',
168
+ isPrimaryKey: false,
169
+ isNullable: true,
170
+ isUnique: false,
171
+ foreignKey: {
172
+ referenceTable: 'customers',
173
+ referenceColumn: 'id',
174
+ onDelete: 'CASCADE',
175
+ onUpdate: 'CASCADE',
176
+ },
177
+ },
178
+ {
179
+ columnName: 'status',
180
+ type: 'varchar',
181
+ isPrimaryKey: false,
182
+ isNullable: true,
183
+ isUnique: false,
184
+ },
185
+ {
186
+ columnName: 'total_amount',
187
+ type: 'decimal',
188
+ isPrimaryKey: false,
189
+ isNullable: false,
190
+ isUnique: false,
191
+ },
192
+ {
193
+ columnName: 'shipping_address',
194
+ type: 'text',
195
+ isPrimaryKey: false,
196
+ isNullable: true,
197
+ isUnique: false,
198
+ },
199
+ {
200
+ columnName: 'created_at',
201
+ type: 'timestamp',
202
+ isPrimaryKey: false,
203
+ isNullable: true,
204
+ isUnique: false,
205
+ },
206
+ {
207
+ columnName: 'updated_at',
208
+ type: 'timestamp',
209
+ isPrimaryKey: false,
210
+ isNullable: true,
211
+ isUnique: false,
212
+ },
213
+ ],
214
+ },
215
+ {
216
+ tableName: 'order_items',
217
+ columns: [
218
+ { columnName: 'id', type: 'uuid', isPrimaryKey: true, isNullable: false, isUnique: true },
219
+ {
220
+ columnName: 'order_id',
221
+ type: 'uuid',
222
+ isPrimaryKey: false,
223
+ isNullable: true,
224
+ isUnique: false,
225
+ foreignKey: {
226
+ referenceTable: 'orders',
227
+ referenceColumn: 'id',
228
+ onDelete: 'CASCADE',
229
+ onUpdate: 'CASCADE',
230
+ },
231
+ },
232
+ {
233
+ columnName: 'product_id',
234
+ type: 'uuid',
235
+ isPrimaryKey: false,
236
+ isNullable: true,
237
+ isUnique: false,
238
+ foreignKey: {
239
+ referenceTable: 'products',
240
+ referenceColumn: 'id',
241
+ onDelete: 'RESTRICT',
242
+ onUpdate: 'CASCADE',
243
+ },
244
+ },
245
+ {
246
+ columnName: 'quantity',
247
+ type: 'integer',
248
+ isPrimaryKey: false,
249
+ isNullable: false,
250
+ isUnique: false,
251
+ },
252
+ {
253
+ columnName: 'unit_price',
254
+ type: 'decimal',
255
+ isPrimaryKey: false,
256
+ isNullable: false,
257
+ isUnique: false,
258
+ },
259
+ {
260
+ columnName: 'created_at',
261
+ type: 'timestamp',
262
+ isPrimaryKey: false,
263
+ isNullable: true,
264
+ isUnique: false,
265
+ },
266
+ ],
267
+ },
268
+ {
269
+ tableName: 'reviews',
270
+ columns: [
271
+ { columnName: 'id', type: 'uuid', isPrimaryKey: true, isNullable: false, isUnique: true },
272
+ {
273
+ columnName: 'product_id',
274
+ type: 'uuid',
275
+ isPrimaryKey: false,
276
+ isNullable: true,
277
+ isUnique: false,
278
+ foreignKey: {
279
+ referenceTable: 'products',
280
+ referenceColumn: 'id',
281
+ onDelete: 'CASCADE',
282
+ onUpdate: 'CASCADE',
283
+ },
284
+ },
285
+ {
286
+ columnName: 'customer_id',
287
+ type: 'uuid',
288
+ isPrimaryKey: false,
289
+ isNullable: true,
290
+ isUnique: false,
291
+ foreignKey: {
292
+ referenceTable: 'customers',
293
+ referenceColumn: 'id',
294
+ onDelete: 'CASCADE',
295
+ onUpdate: 'CASCADE',
296
+ },
297
+ },
298
+ {
299
+ columnName: 'rating',
300
+ type: 'integer',
301
+ isPrimaryKey: false,
302
+ isNullable: true,
303
+ isUnique: false,
304
+ },
305
+ {
306
+ columnName: 'comment',
307
+ type: 'text',
308
+ isPrimaryKey: false,
309
+ isNullable: true,
310
+ isUnique: false,
311
+ },
312
+ {
313
+ columnName: 'created_at',
314
+ type: 'timestamp',
315
+ isPrimaryKey: false,
316
+ isNullable: true,
317
+ isUnique: false,
318
+ },
319
+ ],
320
+ },
321
+ ],
322
+ sql: `-- E-commerce Database Schema
323
+ -- A complete e-commerce platform with products, customers, orders, and reviews
324
+
325
+ -- Products table
326
+ CREATE TABLE products (
327
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
328
+ name VARCHAR(255) NOT NULL,
329
+ description TEXT,
330
+ price DECIMAL(10, 2) NOT NULL CHECK (price >= 0),
331
+ sku VARCHAR(100) UNIQUE NOT NULL,
332
+ stock_quantity INTEGER DEFAULT 0 CHECK (stock_quantity >= 0),
333
+ image_url VARCHAR(500),
334
+ category VARCHAR(100),
335
+ is_active BOOLEAN DEFAULT TRUE,
336
+ created_at TIMESTAMP DEFAULT NOW(),
337
+ updated_at TIMESTAMP DEFAULT NOW()
338
+ );
339
+
340
+ -- Customers table (extends users with customer-specific data)
341
+ CREATE TABLE customers (
342
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
343
+ user_id UUID UNIQUE NOT NULL REFERENCES users(id) ON UPDATE CASCADE ON DELETE CASCADE,
344
+ first_name VARCHAR(100) NOT NULL,
345
+ last_name VARCHAR(100) NOT NULL,
346
+ phone VARCHAR(50),
347
+ address TEXT,
348
+ city VARCHAR(100),
349
+ country VARCHAR(100),
350
+ postal_code VARCHAR(20),
351
+ created_at TIMESTAMP DEFAULT NOW()
352
+ );
353
+
354
+ -- Orders table
355
+ CREATE TABLE orders (
356
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
357
+ customer_id UUID REFERENCES customers(id) ON UPDATE CASCADE ON DELETE CASCADE,
358
+ status VARCHAR(50) DEFAULT 'pending' CHECK (status IN ('pending', 'processing', 'shipped', 'delivered', 'cancelled')),
359
+ total_amount DECIMAL(10, 2) NOT NULL CHECK (total_amount >= 0),
360
+ shipping_address TEXT,
361
+ created_at TIMESTAMP DEFAULT NOW(),
362
+ updated_at TIMESTAMP DEFAULT NOW()
363
+ );
364
+
365
+ -- Order items table
366
+ CREATE TABLE order_items (
367
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
368
+ order_id UUID REFERENCES orders(id) ON UPDATE CASCADE ON DELETE CASCADE,
369
+ product_id UUID REFERENCES products(id) ON UPDATE CASCADE ON DELETE RESTRICT,
370
+ quantity INTEGER NOT NULL CHECK (quantity > 0),
371
+ unit_price DECIMAL(10, 2) NOT NULL CHECK (unit_price >= 0),
372
+ created_at TIMESTAMP DEFAULT NOW()
373
+ );
374
+
375
+ -- Reviews table
376
+ CREATE TABLE reviews (
377
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
378
+ product_id UUID REFERENCES products(id) ON UPDATE CASCADE ON DELETE CASCADE,
379
+ customer_id UUID REFERENCES customers(id) ON UPDATE CASCADE ON DELETE CASCADE,
380
+ rating INTEGER CHECK (rating >= 1 AND rating <= 5),
381
+ comment TEXT,
382
+ created_at TIMESTAMP DEFAULT NOW(),
383
+ UNIQUE(product_id, customer_id)
384
+ );
385
+
386
+ -- Create indexes for better performance
387
+ CREATE INDEX idx_products_category ON products(category);
388
+ CREATE INDEX idx_products_sku ON products(sku);
389
+ CREATE INDEX idx_products_active ON products(is_active);
390
+ CREATE INDEX idx_customers_user ON customers(user_id);
391
+ CREATE INDEX idx_orders_customer ON orders(customer_id);
392
+ CREATE INDEX idx_orders_status ON orders(status);
393
+ CREATE INDEX idx_orders_created ON orders(created_at DESC);
394
+ CREATE INDEX idx_order_items_order ON order_items(order_id);
395
+ CREATE INDEX idx_order_items_product ON order_items(product_id);
396
+ CREATE INDEX idx_reviews_product ON reviews(product_id);
397
+ CREATE INDEX idx_reviews_customer ON reviews(customer_id);
398
+ CREATE INDEX idx_reviews_rating ON reviews(rating);
399
+
400
+ -- =======================
401
+ -- ROW LEVEL SECURITY (RLS)
402
+ -- =======================
403
+
404
+ -- Enable RLS on all tables
405
+ ALTER TABLE products ENABLE ROW LEVEL SECURITY;
406
+ ALTER TABLE customers ENABLE ROW LEVEL SECURITY;
407
+ ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
408
+ ALTER TABLE order_items ENABLE ROW LEVEL SECURITY;
409
+ ALTER TABLE reviews ENABLE ROW LEVEL SECURITY;
410
+
411
+ -- Policies for products (public read, authenticated write)
412
+ CREATE POLICY "Anyone can view active products"
413
+ ON products FOR SELECT
414
+ USING (is_active = TRUE OR auth.role() = 'admin');
415
+
416
+ CREATE POLICY "Authenticated users can create products"
417
+ ON products FOR INSERT
418
+ TO authenticated
419
+ WITH CHECK (true);
420
+
421
+ CREATE POLICY "Authenticated users can update products"
422
+ ON products FOR UPDATE
423
+ TO authenticated
424
+ USING (true)
425
+ WITH CHECK (true);
426
+
427
+ CREATE POLICY "Authenticated users can delete products"
428
+ ON products FOR DELETE
429
+ TO authenticated
430
+ USING (true);
431
+
432
+ -- Policies for customers (users can only see their own data)
433
+ CREATE POLICY "Users can view their own customer data"
434
+ ON customers FOR SELECT
435
+ TO authenticated
436
+ USING (user_id = auth.uid());
437
+
438
+ CREATE POLICY "Users can create their own customer data"
439
+ ON customers FOR INSERT
440
+ TO authenticated
441
+ WITH CHECK (user_id = auth.uid());
442
+
443
+ CREATE POLICY "Users can update their own customer data"
444
+ ON customers FOR UPDATE
445
+ TO authenticated
446
+ USING (user_id = auth.uid())
447
+ WITH CHECK (user_id = auth.uid());
448
+
449
+ -- Policies for orders (customers can only see their own orders)
450
+ CREATE POLICY "Customers can view their own orders"
451
+ ON orders FOR SELECT
452
+ TO authenticated
453
+ USING (
454
+ customer_id IN (
455
+ SELECT id FROM customers WHERE user_id = auth.uid()
456
+ )
457
+ );
458
+
459
+ CREATE POLICY "Customers can create their own orders"
460
+ ON orders FOR INSERT
461
+ TO authenticated
462
+ WITH CHECK (
463
+ customer_id IN (
464
+ SELECT id FROM customers WHERE user_id = auth.uid()
465
+ )
466
+ );
467
+
468
+ CREATE POLICY "Customers can update their own orders"
469
+ ON orders FOR UPDATE
470
+ TO authenticated
471
+ USING (
472
+ customer_id IN (
473
+ SELECT id FROM customers WHERE user_id = auth.uid()
474
+ )
475
+ );
476
+
477
+ -- Policies for order_items
478
+ CREATE POLICY "Customers can view their order items"
479
+ ON order_items FOR SELECT
480
+ TO authenticated
481
+ USING (
482
+ order_id IN (
483
+ SELECT o.id FROM orders o
484
+ JOIN customers c ON o.customer_id = c.id
485
+ WHERE c.user_id = auth.uid()
486
+ )
487
+ );
488
+
489
+ CREATE POLICY "Customers can create order items for their orders"
490
+ ON order_items FOR INSERT
491
+ TO authenticated
492
+ WITH CHECK (
493
+ order_id IN (
494
+ SELECT o.id FROM orders o
495
+ JOIN customers c ON o.customer_id = c.id
496
+ WHERE c.user_id = auth.uid()
497
+ )
498
+ );
499
+
500
+ -- Policies for reviews
501
+ CREATE POLICY "Anyone can view reviews"
502
+ ON reviews FOR SELECT
503
+ USING (true);
504
+
505
+ CREATE POLICY "Customers can create their own reviews"
506
+ ON reviews FOR INSERT
507
+ TO authenticated
508
+ WITH CHECK (
509
+ customer_id IN (
510
+ SELECT id FROM customers WHERE user_id = auth.uid()
511
+ )
512
+ );
513
+
514
+ CREATE POLICY "Customers can update their own reviews"
515
+ ON reviews FOR UPDATE
516
+ TO authenticated
517
+ USING (
518
+ customer_id IN (
519
+ SELECT id FROM customers WHERE user_id = auth.uid()
520
+ )
521
+ );
522
+
523
+ CREATE POLICY "Customers can delete their own reviews"
524
+ ON reviews FOR DELETE
525
+ TO authenticated
526
+ USING (
527
+ customer_id IN (
528
+ SELECT id FROM customers WHERE user_id = auth.uid()
529
+ )
530
+ );
531
+
532
+ -- =======================
533
+ -- SEED DATA
534
+ -- =======================
535
+
536
+ -- Insert sample products
537
+ INSERT INTO products (name, description, price, sku, stock_quantity, category, image_url) VALUES
538
+ ('Wireless Bluetooth Headphones', 'Premium noise-cancelling wireless headphones with 30-hour battery life', 149.99, 'AUDIO-WH-001', 50, 'Electronics', 'https://images.unsplash.com/photo-1505740420928-5e560c06d30e'),
539
+ ('Smart Fitness Watch', 'Track your fitness goals with GPS, heart rate monitor, and sleep tracking', 299.99, 'WATCH-SF-001', 35, 'Electronics', 'https://images.unsplash.com/photo-1523275335684-37898b6baf30'),
540
+ ('Ergonomic Office Chair', 'Comfortable mesh office chair with lumbar support and adjustable armrests', 399.99, 'FURN-CH-001', 20, 'Furniture', 'https://images.unsplash.com/photo-1580480055273-228ff5388ef8'),
541
+ ('Stainless Steel Water Bottle', 'Insulated 32oz water bottle keeps drinks cold for 24 hours', 29.99, 'HOME-WB-001', 100, 'Home & Kitchen', 'https://images.unsplash.com/photo-1602143407151-7111542de6e8'),
542
+ ('Yoga Mat with Carrying Strap', 'Premium non-slip yoga mat, eco-friendly and easy to clean', 49.99, 'SPORT-YM-001', 75, 'Sports', 'https://images.unsplash.com/photo-1601925260368-ae2f83cf8b7f'),
543
+ ('LED Desk Lamp', 'Adjustable brightness desk lamp with USB charging port', 45.99, 'HOME-DL-001', 60, 'Home & Kitchen', 'https://images.unsplash.com/photo-1513506003901-1e6a229e2d15'),
544
+ ('Portable Power Bank 20000mAh', 'Fast-charging portable battery pack with dual USB ports', 39.99, 'ELEC-PB-001', 80, 'Electronics', 'https://images.unsplash.com/photo-1609091839311-d5365f9ff1c5'),
545
+ ('Running Shoes', 'Lightweight running shoes with responsive cushioning', 119.99, 'SHOE-RS-001', 45, 'Sports', 'https://images.unsplash.com/photo-1542291026-7eec264c27ff'),
546
+ ('Laptop Backpack', 'Water-resistant backpack with padded laptop compartment up to 15.6"', 79.99, 'BAG-LB-001', 55, 'Accessories', 'https://images.unsplash.com/photo-1553062407-98eeb64c6a62'),
547
+ ('Organic Green Tea (100 bags)', 'Premium organic green tea bags, rich in antioxidants', 19.99, 'FOOD-GT-001', 120, 'Food & Beverage', 'https://images.unsplash.com/photo-1564890369478-c89ca6d9cde9'),
548
+ ('Wireless Gaming Mouse', 'High-precision gaming mouse with customizable RGB lighting', 69.99, 'ELEC-GM-001', 40, 'Electronics', 'https://images.unsplash.com/photo-1527814050087-3793815479db'),
549
+ ('Plant-Based Protein Powder', 'Chocolate flavored vegan protein powder, 2lb container', 44.99, 'FOOD-PP-001', 65, 'Food & Beverage', 'https://images.unsplash.com/photo-1579722821273-0f6c7d44362f'),
550
+ ('Ceramic Coffee Mug Set (4 pack)', 'Handcrafted ceramic mugs, microwave and dishwasher safe', 34.99, 'HOME-CM-001', 90, 'Home & Kitchen', 'https://images.unsplash.com/photo-1514228742587-6b1558fcca3d'),
551
+ ('Resistance Bands Set', '5-piece resistance band set with different resistance levels', 24.99, 'SPORT-RB-001', 110, 'Sports', 'https://images.unsplash.com/photo-1598289431512-b97b0917affc'),
552
+ ('Bamboo Cutting Board', 'Large bamboo cutting board with juice groove', 32.99, 'HOME-CB-001', 70, 'Home & Kitchen', 'https://images.unsplash.com/photo-1594018426677-e62f2752292f');`,
553
+ };
@@ -0,0 +1,34 @@
1
+ import { GetTableSchemaResponse } from '@insforge/shared-schemas';
2
+ import { crmSystemTemplate } from './crm-system';
3
+ import { aiChatbotTemplate } from './ai-chatbot';
4
+ import { ecommercePlatformTemplate } from './ecommerce-platform';
5
+ import { redditCloneTemplate } from './reddit-clone';
6
+ import { instagramCloneTemplate } from './instagram-clone';
7
+ import { notionCloneTemplate } from './notion-clone';
8
+
9
+ export interface DatabaseTemplate {
10
+ id: string;
11
+ title: string;
12
+ description: string;
13
+ tableCount: number;
14
+ sql: string;
15
+ visualizerSchema: GetTableSchemaResponse[];
16
+ }
17
+
18
+ export {
19
+ crmSystemTemplate,
20
+ aiChatbotTemplate,
21
+ ecommercePlatformTemplate,
22
+ redditCloneTemplate,
23
+ instagramCloneTemplate,
24
+ notionCloneTemplate,
25
+ };
26
+
27
+ export const DATABASE_TEMPLATES = [
28
+ crmSystemTemplate,
29
+ aiChatbotTemplate,
30
+ ecommercePlatformTemplate,
31
+ redditCloneTemplate,
32
+ instagramCloneTemplate,
33
+ notionCloneTemplate,
34
+ ];