insforge 0.3.1

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 (395) hide show
  1. package/.dockerignore +58 -0
  2. package/.env.example +49 -0
  3. package/.github/ISSUE_TEMPLATE/bug_report.yml +83 -0
  4. package/.github/ISSUE_TEMPLATE/config.yml +11 -0
  5. package/.github/ISSUE_TEMPLATE/feature_request.yml +79 -0
  6. package/.github/copilot-instructions.md +147 -0
  7. package/.github/workflows/build-image.yml +65 -0
  8. package/.github/workflows/ci-premerge-check.yml +24 -0
  9. package/.github/workflows/deploy-aws.yml +130 -0
  10. package/.github/workflows/lint-and-format.yml +33 -0
  11. package/.prettierignore +65 -0
  12. package/.prettierrc +9 -0
  13. package/CHANGELOG.md +3 -0
  14. package/CONTRIBUTING.md +126 -0
  15. package/Dockerfile +27 -0
  16. package/GITHUB_OAUTH_SETUP.md +49 -0
  17. package/GOOGLE_OAUTH_SETUP.md +148 -0
  18. package/LICENSE +201 -0
  19. package/README.md +134 -0
  20. package/assets/Dark.svg +23 -0
  21. package/assets/archDiagram.png +0 -0
  22. package/assets/banner.png +0 -0
  23. package/assets/mcpInstallv2.png +0 -0
  24. package/assets/sampleResponse.png +0 -0
  25. package/assets/signin.png +0 -0
  26. package/assets/userflow.png +0 -0
  27. package/backend/migrations/000_create-base-tables.sql +142 -0
  28. package/backend/migrations/001_create-helper-functions.sql +41 -0
  29. package/backend/migrations/002_rename-auth-tables.sql +30 -0
  30. package/backend/migrations/003_create-users-table.sql +56 -0
  31. package/backend/migrations/004_add-reload-postgrest-func.sql +24 -0
  32. package/backend/migrations/005_enable-project-admin-modify-users.sql +30 -0
  33. package/backend/migrations/006_modify-ai-usage-table.sql +25 -0
  34. package/backend/migrations/007_drop-metadata-table.sql +2 -0
  35. package/backend/migrations/008_add-system-tables.sql +77 -0
  36. package/backend/migrations/009_add-function-secrets.sql +24 -0
  37. package/backend/migrations/010_modify-ai-config-modalities.sql +93 -0
  38. package/backend/migrations/011_refactor-secrets-table.sql +15 -0
  39. package/backend/migrations/012_add-storage-uploaded-by.sql +8 -0
  40. package/backend/package.json +75 -0
  41. package/backend/src/api/middleware/auth.ts +240 -0
  42. package/backend/src/api/middleware/error.ts +231 -0
  43. package/backend/src/api/middleware/upload.ts +59 -0
  44. package/backend/src/api/routes/agent.ts +29 -0
  45. package/backend/src/api/routes/ai.ts +472 -0
  46. package/backend/src/api/routes/auth.oauth.ts +482 -0
  47. package/backend/src/api/routes/auth.ts +386 -0
  48. package/backend/src/api/routes/database.advance.ts +275 -0
  49. package/backend/src/api/routes/database.records.ts +246 -0
  50. package/backend/src/api/routes/database.tables.ts +161 -0
  51. package/backend/src/api/routes/docs.ts +66 -0
  52. package/backend/src/api/routes/functions.ts +183 -0
  53. package/backend/src/api/routes/logs.ts +150 -0
  54. package/backend/src/api/routes/metadata.ts +160 -0
  55. package/backend/src/api/routes/openapi.ts +82 -0
  56. package/backend/src/api/routes/secrets.ts +199 -0
  57. package/backend/src/api/routes/storage.ts +547 -0
  58. package/backend/src/api/routes/usage.ts +96 -0
  59. package/backend/src/core/ai/chat.ts +207 -0
  60. package/backend/src/core/ai/client.ts +242 -0
  61. package/backend/src/core/ai/config.ts +187 -0
  62. package/backend/src/core/ai/image.ts +156 -0
  63. package/backend/src/core/ai/model.ts +117 -0
  64. package/backend/src/core/ai/usage.ts +290 -0
  65. package/backend/src/core/auth/auth.ts +781 -0
  66. package/backend/src/core/auth/oauth.ts +398 -0
  67. package/backend/src/core/database/advance.ts +1074 -0
  68. package/backend/src/core/database/manager.ts +178 -0
  69. package/backend/src/core/database/table.ts +772 -0
  70. package/backend/src/core/documentation/agent.ts +689 -0
  71. package/backend/src/core/documentation/openapi.ts +856 -0
  72. package/backend/src/core/functions/functions.ts +310 -0
  73. package/backend/src/core/logs/analytics.ts +76 -0
  74. package/backend/src/core/logs/audit.ts +255 -0
  75. package/backend/src/core/logs/providers/base.provider.ts +83 -0
  76. package/backend/src/core/logs/providers/cloudwatch.provider.ts +510 -0
  77. package/backend/src/core/logs/providers/localdb.provider.ts +246 -0
  78. package/backend/src/core/secrets/encryption.ts +58 -0
  79. package/backend/src/core/secrets/secrets.ts +410 -0
  80. package/backend/src/core/socket/socket.ts +388 -0
  81. package/backend/src/core/socket/types.ts +79 -0
  82. package/backend/src/core/storage/storage.ts +923 -0
  83. package/backend/src/server.ts +288 -0
  84. package/backend/src/types/ai.ts +46 -0
  85. package/backend/src/types/auth.ts +90 -0
  86. package/backend/src/types/database.ts +136 -0
  87. package/backend/src/types/error-constants.ts +86 -0
  88. package/backend/src/types/logs.ts +47 -0
  89. package/backend/src/types/profile.ts +55 -0
  90. package/backend/src/types/storage.ts +23 -0
  91. package/backend/src/utils/cloud-token.ts +39 -0
  92. package/backend/src/utils/constants.ts +1 -0
  93. package/backend/src/utils/environment.ts +35 -0
  94. package/backend/src/utils/helpers.ts +49 -0
  95. package/backend/src/utils/logger.ts +13 -0
  96. package/backend/src/utils/response.ts +62 -0
  97. package/backend/src/utils/seed.ts +205 -0
  98. package/backend/src/utils/sql-parser.ts +63 -0
  99. package/backend/src/utils/uuid.ts +9 -0
  100. package/backend/src/utils/validations.ts +129 -0
  101. package/backend/tests/README.md +134 -0
  102. package/backend/tests/cleanup-all-test-data.sh +231 -0
  103. package/backend/tests/cloud/test-s3-multitenant.sh +132 -0
  104. package/backend/tests/local/comprehensive-curl-tests.sh +156 -0
  105. package/backend/tests/local/test-auth-router.sh +144 -0
  106. package/backend/tests/local/test-database-router.sh +222 -0
  107. package/backend/tests/local/test-e2e.sh +241 -0
  108. package/backend/tests/local/test-fk-errors.sh +97 -0
  109. package/backend/tests/local/test-id-field.sh +201 -0
  110. package/backend/tests/local/test-public-bucket.sh +265 -0
  111. package/backend/tests/local/test-secrets.sh +248 -0
  112. package/backend/tests/local/test-serverless-functions.sh.disabled +325 -0
  113. package/backend/tests/local/test-traditional-rest.sh +209 -0
  114. package/backend/tests/manual/README.md +51 -0
  115. package/backend/tests/manual/create-large-table-simple.sql +11 -0
  116. package/backend/tests/manual/seed-large-table.sql +101 -0
  117. package/backend/tests/manual/setup-large-table-extras.sql +34 -0
  118. package/backend/tests/manual/test-better-auth.sh +303 -0
  119. package/backend/tests/manual/test-bulk-upsert.sh +410 -0
  120. package/backend/tests/manual/test-database-advance.sh +297 -0
  121. package/backend/tests/manual/test-postgrest-stability.sh +192 -0
  122. package/backend/tests/manual/test-rawsql-export-import.sh +412 -0
  123. package/backend/tests/manual/test-universal-storage.sh +264 -0
  124. package/backend/tests/manual/test-users.sql +18 -0
  125. package/backend/tests/run-all-tests.sh +140 -0
  126. package/backend/tests/setup.ts +22 -0
  127. package/backend/tests/test-config.sh +303 -0
  128. package/backend/tsconfig.json +23 -0
  129. package/backend/tsup.config.ts +18 -0
  130. package/backend/vitest.config.ts +22 -0
  131. package/docker-compose.prod.yml +145 -0
  132. package/docker-compose.yml +167 -0
  133. package/docker-init/db/db-init.sql +125 -0
  134. package/docker-init/db/jwt.sql +5 -0
  135. package/docker-init/db/logs.sql +9 -0
  136. package/docker-init/db/postgresql.conf +17 -0
  137. package/docs/deprecated/insforge-auth-api.md +215 -0
  138. package/docs/deprecated/insforge-auth-sdk.md +100 -0
  139. package/docs/deprecated/insforge-db-api.md +359 -0
  140. package/docs/deprecated/insforge-db-sdk.md +140 -0
  141. package/docs/deprecated/insforge-debug-sdk.md +157 -0
  142. package/docs/deprecated/insforge-debug.md +65 -0
  143. package/docs/deprecated/insforge-instructions.md +124 -0
  144. package/docs/deprecated/insforge-project.md +118 -0
  145. package/docs/deprecated/insforge-storage-api.md +279 -0
  146. package/docs/deprecated/insforge-storage-sdk.md +159 -0
  147. package/docs/insforge-instructions-sdk.md +407 -0
  148. package/eslint.config.js +317 -0
  149. package/examples/oauth/frontend-oauth-example.html +251 -0
  150. package/examples/response-examples.md +444 -0
  151. package/frontend/README.md +112 -0
  152. package/frontend/components.json +17 -0
  153. package/frontend/index.html +13 -0
  154. package/frontend/package.json +63 -0
  155. package/frontend/public/favicon.ico +0 -0
  156. package/frontend/src/App.tsx +106 -0
  157. package/frontend/src/assets/icons/checkbox_checked.svg +6 -0
  158. package/frontend/src/assets/icons/checkbox_undetermined.svg +6 -0
  159. package/frontend/src/assets/icons/checked.svg +3 -0
  160. package/frontend/src/assets/icons/error.svg +3 -0
  161. package/frontend/src/assets/icons/pencil.svg +4 -0
  162. package/frontend/src/assets/icons/refresh.svg +4 -0
  163. package/frontend/src/assets/icons/step_active.svg +3 -0
  164. package/frontend/src/assets/icons/step_inactive.svg +11 -0
  165. package/frontend/src/assets/icons/warning.svg +3 -0
  166. package/frontend/src/assets/logos/amazon.svg +1 -0
  167. package/frontend/src/assets/logos/claude_code.svg +3 -0
  168. package/frontend/src/assets/logos/cline.svg +6 -0
  169. package/frontend/src/assets/logos/cursor.svg +20 -0
  170. package/frontend/src/assets/logos/discord.svg +9 -0
  171. package/frontend/src/assets/logos/gemini.svg +19 -0
  172. package/frontend/src/assets/logos/github.svg +5 -0
  173. package/frontend/src/assets/logos/google.svg +13 -0
  174. package/frontend/src/assets/logos/grok.svg +10 -0
  175. package/frontend/src/assets/logos/insforge_dark.svg +15 -0
  176. package/frontend/src/assets/logos/insforge_light.svg +15 -0
  177. package/frontend/src/assets/logos/openai.svg +10 -0
  178. package/frontend/src/assets/logos/roo_code.svg +9 -0
  179. package/frontend/src/assets/logos/trae.svg +3 -0
  180. package/frontend/src/assets/logos/windsurf.svg +10 -0
  181. package/frontend/src/components/ButtonWithLoading.tsx +27 -0
  182. package/frontend/src/components/Checkbox.tsx +61 -0
  183. package/frontend/src/components/CodeBlock.tsx +32 -0
  184. package/frontend/src/components/ConfirmDialog.tsx +96 -0
  185. package/frontend/src/components/CopyButton.tsx +69 -0
  186. package/frontend/src/components/DeleteActionButton.tsx +42 -0
  187. package/frontend/src/components/EmptyState.tsx +41 -0
  188. package/frontend/src/components/ErrorState.tsx +35 -0
  189. package/frontend/src/components/FeatureSidebar.tsx +126 -0
  190. package/frontend/src/components/FeatureSidebarItem.tsx +101 -0
  191. package/frontend/src/components/JsonHighlight.tsx +61 -0
  192. package/frontend/src/components/LoadingState.tsx +16 -0
  193. package/frontend/src/components/PaginationControls.tsx +54 -0
  194. package/frontend/src/components/PromptDialog.tsx +68 -0
  195. package/frontend/src/components/SearchInput.tsx +90 -0
  196. package/frontend/src/components/SelectionClearButton.tsx +26 -0
  197. package/frontend/src/components/Stepper.tsx +139 -0
  198. package/frontend/src/components/ThemeToggle.tsx +58 -0
  199. package/frontend/src/components/TypeBadge.tsx +20 -0
  200. package/frontend/src/components/datagrid/DataGrid.tsx +264 -0
  201. package/frontend/src/components/datagrid/DefaultCellRenderer.tsx +114 -0
  202. package/frontend/src/components/datagrid/IdCell.tsx +44 -0
  203. package/frontend/src/components/datagrid/SortableHeader.tsx +74 -0
  204. package/frontend/src/components/datagrid/cell-editors/BooleanCellEditor.tsx +54 -0
  205. package/frontend/src/components/datagrid/cell-editors/DateCellEditor.tsx +483 -0
  206. package/frontend/src/components/datagrid/cell-editors/JsonCellEditor.tsx +362 -0
  207. package/frontend/src/components/datagrid/cell-editors/TextCellEditor.tsx +38 -0
  208. package/frontend/src/components/datagrid/cell-editors/index.ts +14 -0
  209. package/frontend/src/components/datagrid/cell-editors/types.ts +43 -0
  210. package/frontend/src/components/datagrid/datagridTypes.tsx +72 -0
  211. package/frontend/src/components/datagrid/index.tsx +20 -0
  212. package/frontend/src/components/index.ts +39 -0
  213. package/frontend/src/components/layout/AppHeader.tsx +146 -0
  214. package/frontend/src/components/layout/AppSidebar.tsx +190 -0
  215. package/frontend/src/components/layout/CloudLayout.tsx +95 -0
  216. package/frontend/src/components/layout/Layout.tsx +43 -0
  217. package/frontend/src/components/radix/Alert.tsx +45 -0
  218. package/frontend/src/components/radix/AlertDialog.tsx +115 -0
  219. package/frontend/src/components/radix/Avatar.tsx +45 -0
  220. package/frontend/src/components/radix/Badge.tsx +33 -0
  221. package/frontend/src/components/radix/Button.tsx +50 -0
  222. package/frontend/src/components/radix/Card.tsx +58 -0
  223. package/frontend/src/components/radix/Dialog.tsx +98 -0
  224. package/frontend/src/components/radix/DropdownMenu.tsx +185 -0
  225. package/frontend/src/components/radix/Form.tsx +167 -0
  226. package/frontend/src/components/radix/Input.tsx +22 -0
  227. package/frontend/src/components/radix/Label.tsx +19 -0
  228. package/frontend/src/components/radix/Popover.tsx +29 -0
  229. package/frontend/src/components/radix/ScrollArea.tsx +44 -0
  230. package/frontend/src/components/radix/Select.tsx +151 -0
  231. package/frontend/src/components/radix/Separator.tsx +26 -0
  232. package/frontend/src/components/radix/Sheet.tsx +119 -0
  233. package/frontend/src/components/radix/Skeleton.tsx +7 -0
  234. package/frontend/src/components/radix/Switch.tsx +29 -0
  235. package/frontend/src/components/radix/Tabs.tsx +50 -0
  236. package/frontend/src/components/radix/Textarea.tsx +21 -0
  237. package/frontend/src/components/radix/Tooltip.tsx +28 -0
  238. package/frontend/src/features/ai/components/AIConfigCard.tsx +154 -0
  239. package/frontend/src/features/ai/components/AIConfigDialog.tsx +76 -0
  240. package/frontend/src/features/ai/components/AIConfigForm.tsx +222 -0
  241. package/frontend/src/features/ai/components/AIEmptyState.tsx +18 -0
  242. package/frontend/src/features/ai/components/fields/ModalityField.tsx +87 -0
  243. package/frontend/src/features/ai/components/fields/ModelSelectionField.tsx +134 -0
  244. package/frontend/src/features/ai/components/fields/SystemPromptField.tsx +33 -0
  245. package/frontend/src/features/ai/helpers.ts +155 -0
  246. package/frontend/src/features/ai/hooks/useAIConfigs.ts +221 -0
  247. package/frontend/src/features/ai/hooks/useAIUsage.ts +77 -0
  248. package/frontend/src/features/ai/page/AIPage.tsx +178 -0
  249. package/frontend/src/features/ai/services/ai.service.ts +148 -0
  250. package/frontend/src/features/auth/components/AddOAuthDialog.tsx +106 -0
  251. package/frontend/src/features/auth/components/AuthMethodTab.tsx +238 -0
  252. package/frontend/src/features/auth/components/OAuthConfigDialog.tsx +303 -0
  253. package/frontend/src/features/auth/components/OAuthEmptyState.tsx +15 -0
  254. package/frontend/src/features/auth/components/UserFormDialog.tsx +248 -0
  255. package/frontend/src/features/auth/components/UsersDataGrid.tsx +183 -0
  256. package/frontend/src/features/auth/components/UsersTab.tsx +114 -0
  257. package/frontend/src/features/auth/hooks/useOAuthConfig.ts +129 -0
  258. package/frontend/src/features/auth/hooks/useUsers.ts +57 -0
  259. package/frontend/src/features/auth/index.ts +9 -0
  260. package/frontend/src/features/auth/page/AuthenticationPage.tsx +169 -0
  261. package/frontend/src/features/auth/services/auth.service.ts +112 -0
  262. package/frontend/src/features/auth/services/oauth.service.ts +49 -0
  263. package/frontend/src/features/dashboard/page/DashboardPage.tsx +194 -0
  264. package/frontend/src/features/database/components/ColumnTypeSelect.tsx +64 -0
  265. package/frontend/src/features/database/components/DatabaseDataGrid.tsx +282 -0
  266. package/frontend/src/features/database/components/ForeignKeyCell.tsx +187 -0
  267. package/frontend/src/features/database/components/ForeignKeyPopover.tsx +378 -0
  268. package/frontend/src/features/database/components/LinkRecordModal.tsx +288 -0
  269. package/frontend/src/features/database/components/RecordFormDialog.tsx +164 -0
  270. package/frontend/src/features/database/components/RecordFormField.tsx +568 -0
  271. package/frontend/src/features/database/components/TableEmptyState.tsx +21 -0
  272. package/frontend/src/features/database/components/TableForm.tsx +656 -0
  273. package/frontend/src/features/database/components/TableFormColumn.tsx +137 -0
  274. package/frontend/src/features/database/components/TableListSkeleton.tsx +9 -0
  275. package/frontend/src/features/database/components/TableSidebar.tsx +47 -0
  276. package/frontend/src/features/database/constants.ts +26 -0
  277. package/frontend/src/features/database/helpers.ts +125 -0
  278. package/frontend/src/features/database/hooks/UseLinkModal.tsx +78 -0
  279. package/frontend/src/features/database/index.ts +12 -0
  280. package/frontend/src/features/database/page/DatabasePage.tsx +626 -0
  281. package/frontend/src/features/database/schema.ts +25 -0
  282. package/frontend/src/features/database/services/database.service.ts +216 -0
  283. package/frontend/src/features/functions/components/FunctionEmptyState.tsx +15 -0
  284. package/frontend/src/features/functions/components/FunctionRow.tsx +71 -0
  285. package/frontend/src/features/functions/components/FunctionViewer.tsx +46 -0
  286. package/frontend/src/features/functions/components/FunctionsContent.tsx +88 -0
  287. package/frontend/src/features/functions/components/FunctionsSidebar.tsx +56 -0
  288. package/frontend/src/features/functions/components/SecretEmptyState.tsx +23 -0
  289. package/frontend/src/features/functions/components/SecretRow.tsx +68 -0
  290. package/frontend/src/features/functions/components/SecretsContent.tsx +120 -0
  291. package/frontend/src/features/functions/hooks/useFunctions.ts +106 -0
  292. package/frontend/src/features/functions/page/FunctionsPage.tsx +28 -0
  293. package/frontend/src/features/functions/services/functions.service.ts +48 -0
  294. package/frontend/src/features/login/components/AuthErrorBoundary.tsx +87 -0
  295. package/frontend/src/features/login/components/PrivateRoute.tsx +24 -0
  296. package/frontend/src/features/login/page/CloudLoginPage.tsx +93 -0
  297. package/frontend/src/features/login/page/LoginPage.tsx +174 -0
  298. package/frontend/src/features/logs/components/AnalyticsLogsTable.tsx +313 -0
  299. package/frontend/src/features/logs/components/LogsTable.tsx +199 -0
  300. package/frontend/src/features/logs/hooks/useAuditLogs.ts +39 -0
  301. package/frontend/src/features/logs/index.ts +5 -0
  302. package/frontend/src/features/logs/page/AnalyticsLogsPage.tsx +530 -0
  303. package/frontend/src/features/logs/page/AuditsPage.tsx +192 -0
  304. package/frontend/src/features/logs/services/log.service.ts +171 -0
  305. package/frontend/src/features/metadata/hooks/useMetadata.ts +53 -0
  306. package/frontend/src/features/metadata/index.ts +0 -0
  307. package/frontend/src/features/metadata/page/MetadataPage.tsx +136 -0
  308. package/frontend/src/features/metadata/services/metadata.service.ts +17 -0
  309. package/frontend/src/features/onboard/components/CompletionCard.tsx +41 -0
  310. package/frontend/src/features/onboard/components/OnboardButton.tsx +84 -0
  311. package/frontend/src/features/onboard/components/StepContent.tsx +91 -0
  312. package/frontend/src/features/onboard/components/TestConnectionStep.tsx +53 -0
  313. package/frontend/src/features/onboard/components/mcp/CursorDeeplinkGenerator.tsx +35 -0
  314. package/frontend/src/features/onboard/components/mcp/McpInstallation.tsx +144 -0
  315. package/frontend/src/features/onboard/components/mcp/index.ts +4 -0
  316. package/frontend/src/features/onboard/components/mcp/mcp-helper.tsx +98 -0
  317. package/frontend/src/features/onboard/index.ts +3 -0
  318. package/frontend/src/features/onboard/page/OnBoardPage.tsx +104 -0
  319. package/frontend/src/features/onboard/types.ts +8 -0
  320. package/frontend/src/features/secrets/hooks/useSecrets.ts +139 -0
  321. package/frontend/src/features/secrets/services/secrets.service.ts +57 -0
  322. package/frontend/src/features/storage/components/BucketEmptyState.tsx +19 -0
  323. package/frontend/src/features/storage/components/BucketFormDialog.tsx +194 -0
  324. package/frontend/src/features/storage/components/BucketListSkeleton.tsx +17 -0
  325. package/frontend/src/features/storage/components/FilePreviewDialog.tsx +287 -0
  326. package/frontend/src/features/storage/components/StorageDataGrid.tsx +239 -0
  327. package/frontend/src/features/storage/components/StorageManager.tsx +236 -0
  328. package/frontend/src/features/storage/components/StorageSidebar.tsx +44 -0
  329. package/frontend/src/features/storage/components/UploadToast.tsx +46 -0
  330. package/frontend/src/features/storage/index.ts +3 -0
  331. package/frontend/src/features/storage/page/StoragePage.tsx +553 -0
  332. package/frontend/src/features/storage/services/storage.service.ts +144 -0
  333. package/frontend/src/features/visualizer/components/AuthNode.tsx +107 -0
  334. package/frontend/src/features/visualizer/components/BucketNode.tsx +34 -0
  335. package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +359 -0
  336. package/frontend/src/features/visualizer/components/TableNode.tsx +152 -0
  337. package/frontend/src/features/visualizer/components/VisualizerSkeleton.tsx +24 -0
  338. package/frontend/src/features/visualizer/components/index.ts +5 -0
  339. package/frontend/src/features/visualizer/page/VisualizerPage.tsx +127 -0
  340. package/frontend/src/index.css +248 -0
  341. package/frontend/src/lib/api/client.ts +163 -0
  342. package/frontend/src/lib/contexts/AuthContext.tsx +157 -0
  343. package/frontend/src/lib/contexts/OnboardStepContext.tsx +68 -0
  344. package/frontend/src/lib/contexts/SocketContext.tsx +303 -0
  345. package/frontend/src/lib/contexts/ThemeContext.tsx +125 -0
  346. package/frontend/src/lib/hooks/useAuth.ts +4 -0
  347. package/frontend/src/lib/hooks/useConfirm.ts +55 -0
  348. package/frontend/src/lib/hooks/useInterval.ts +27 -0
  349. package/frontend/src/lib/hooks/useMediaQuery.ts +59 -0
  350. package/frontend/src/lib/hooks/useOnboardingCompletion.ts +29 -0
  351. package/frontend/src/lib/hooks/usePagination.ts +27 -0
  352. package/frontend/src/lib/hooks/useTimeout.ts +27 -0
  353. package/frontend/src/lib/hooks/useToast.tsx +229 -0
  354. package/frontend/src/lib/utils/constants.ts +38 -0
  355. package/frontend/src/lib/utils/utils.ts +165 -0
  356. package/frontend/src/lib/utils/validation-schemas.ts +126 -0
  357. package/frontend/src/main.tsx +16 -0
  358. package/frontend/src/rdg.css +194 -0
  359. package/frontend/src/vite-env.d.ts +12 -0
  360. package/frontend/tailwind.config.js +97 -0
  361. package/frontend/tsconfig.json +26 -0
  362. package/frontend/tsconfig.node.json +10 -0
  363. package/frontend/vite.config.ts +37 -0
  364. package/frontend/vitest.config.ts +36 -0
  365. package/functions/deno.json +25 -0
  366. package/functions/server.ts +290 -0
  367. package/functions/worker-template.js +126 -0
  368. package/openapi/ai.yaml +689 -0
  369. package/openapi/auth.yaml +563 -0
  370. package/openapi/functions.yaml +476 -0
  371. package/openapi/health.yaml +30 -0
  372. package/openapi/logs.yaml +224 -0
  373. package/openapi/metadata.yaml +178 -0
  374. package/openapi/records.yaml +382 -0
  375. package/openapi/secrets.yaml +371 -0
  376. package/openapi/storage.yaml +876 -0
  377. package/openapi/tables.yaml +464 -0
  378. package/package.json +88 -0
  379. package/shared-schemas/package.json +31 -0
  380. package/shared-schemas/src/ai-api.schema.ts +167 -0
  381. package/shared-schemas/src/ai.schema.ts +54 -0
  382. package/shared-schemas/src/auth-api.schema.ts +193 -0
  383. package/shared-schemas/src/auth.schema.ts +94 -0
  384. package/shared-schemas/src/database-api.schema.ts +259 -0
  385. package/shared-schemas/src/database.schema.ts +69 -0
  386. package/shared-schemas/src/functions-api.schema.ts +25 -0
  387. package/shared-schemas/src/functions.schema.ts +16 -0
  388. package/shared-schemas/src/index.ts +13 -0
  389. package/shared-schemas/src/logs-api.schema.ts +49 -0
  390. package/shared-schemas/src/logs.schema.ts +14 -0
  391. package/shared-schemas/src/metadata.schema.ts +56 -0
  392. package/shared-schemas/src/storage-api.schema.ts +65 -0
  393. package/shared-schemas/src/storage.schema.ts +19 -0
  394. package/shared-schemas/tsconfig.json +21 -0
  395. package/tsconfig.json +8 -0
@@ -0,0 +1,464 @@
1
+ openapi: 3.0.3
2
+ info:
3
+ title: Insforge Tables API
4
+ version: 1.0.0
5
+
6
+ paths:
7
+ /api/database/tables:
8
+ get:
9
+ summary: List Tables
10
+ tags:
11
+ - Admin
12
+ security:
13
+ - bearerAuth: []
14
+ - apiKey: []
15
+ responses:
16
+ '200':
17
+ description: List of table names
18
+ content:
19
+ application/json:
20
+ schema:
21
+ type: array
22
+ items:
23
+ type: string
24
+ example:
25
+ - "users"
26
+ - "posts"
27
+ - "comments"
28
+ - "categories"
29
+
30
+ post:
31
+ summary: Create Table
32
+ tags:
33
+ - Admin
34
+ security:
35
+ - bearerAuth: []
36
+ - apiKey: []
37
+ requestBody:
38
+ required: true
39
+ content:
40
+ application/json:
41
+ schema:
42
+ type: object
43
+ required:
44
+ - tableName
45
+ - columns
46
+ properties:
47
+ tableName:
48
+ type: string
49
+ columns:
50
+ type: array
51
+ items:
52
+ type: object
53
+ required:
54
+ - name
55
+ - type
56
+ - nullable
57
+ properties:
58
+ name:
59
+ type: string
60
+ type:
61
+ type: string
62
+ enum: [string, datetime, integer, float, boolean, uuid, json, file]
63
+ nullable:
64
+ type: boolean
65
+ unique:
66
+ type: boolean
67
+ defaultValue:
68
+ type: string
69
+ foreignKey:
70
+ type: object
71
+ properties:
72
+ table:
73
+ type: string
74
+ column:
75
+ type: string
76
+ onDelete:
77
+ type: string
78
+ enum: [CASCADE, SET NULL, NO ACTION, RESTRICT]
79
+ default: NO ACTION
80
+ responses:
81
+ '201':
82
+ description: Table created
83
+ content:
84
+ application/json:
85
+ schema:
86
+ type: object
87
+ properties:
88
+ message:
89
+ type: string
90
+ table_name:
91
+ type: string
92
+ example:
93
+ message: "Table created successfully"
94
+ tableName: "posts"
95
+ '400':
96
+ description: Bad request
97
+ content:
98
+ application/json:
99
+ schema:
100
+ $ref: '#/components/schemas/ErrorResponse'
101
+ example:
102
+ error: "VALIDATION_ERROR"
103
+ message: "Table name already exists"
104
+ statusCode: 400
105
+ nextActions: "Choose a different table name"
106
+ '422':
107
+ description: Unprocessable entity
108
+ content:
109
+ application/json:
110
+ schema:
111
+ $ref: '#/components/schemas/ErrorResponse'
112
+ example:
113
+ error: "INVALID_FIELD_TYPE"
114
+ message: "Invalid field type: 'text'. Valid types are: string, integer, float, boolean, datetime, uuid, json, file"
115
+ statusCode: 422
116
+ nextActions: "Use one of the valid field types"
117
+
118
+ /api/database/tables/{tableName}:
119
+ get:
120
+ summary: Get Table Schema
121
+ tags:
122
+ - Admin
123
+ security:
124
+ - bearerAuth: []
125
+ - apiKey: []
126
+ parameters:
127
+ - name: tableName
128
+ in: path
129
+ required: true
130
+ schema:
131
+ type: string
132
+ responses:
133
+ '200':
134
+ description: Table schema
135
+ content:
136
+ application/json:
137
+ schema:
138
+ type: object
139
+ properties:
140
+ table_name:
141
+ type: string
142
+ columns:
143
+ type: array
144
+ items:
145
+ type: object
146
+ properties:
147
+ name:
148
+ type: string
149
+ type:
150
+ type: string
151
+ nullable:
152
+ type: boolean
153
+ unique:
154
+ type: boolean
155
+ default:
156
+ type: string
157
+ nullable: true
158
+ isPrimaryKey:
159
+ type: boolean
160
+ foreignKey:
161
+ type: object
162
+ nullable: true
163
+ properties:
164
+ table:
165
+ type: string
166
+ column:
167
+ type: string
168
+ on_delete:
169
+ type: string
170
+ example:
171
+ tableName: "posts"
172
+ columns:
173
+ - name: "id"
174
+ type: "uuid"
175
+ nullable: false
176
+ unique: true
177
+ default: "gen_random_uuid()"
178
+ isPrimaryKey: true
179
+ foreignKey: null
180
+ - name: "title"
181
+ type: "string"
182
+ nullable: false
183
+ unique: false
184
+ default: null
185
+ isPrimaryKey: false
186
+ foreignKey: null
187
+ - name: "userId"
188
+ type: "uuid"
189
+ nullable: false
190
+ unique: false
191
+ default: null
192
+ isPrimaryKey: false
193
+ foreignKey:
194
+ table: "users"
195
+ column: "id"
196
+ on_delete: "CASCADE"
197
+ '404':
198
+ description: Table not found
199
+ content:
200
+ application/json:
201
+ schema:
202
+ $ref: '#/components/schemas/ErrorResponse'
203
+ example:
204
+ error: "TABLE_NOT_FOUND"
205
+ message: "Table 'nonexistent' does not exist"
206
+ statusCode: 404
207
+ nextActions: "Check table name and try again"
208
+ patch:
209
+ summary: Update Table Schema
210
+ tags:
211
+ - Admin
212
+ security:
213
+ - bearerAuth: []
214
+ - apiKey: []
215
+ parameters:
216
+ - name: tableName
217
+ in: path
218
+ required: true
219
+ schema:
220
+ type: string
221
+ requestBody:
222
+ required: true
223
+ content:
224
+ application/json:
225
+ schema:
226
+ type: object
227
+ properties:
228
+ addColumns:
229
+ type: array
230
+ description: Add new columns to the table
231
+ items:
232
+ type: object
233
+ required:
234
+ - columnName
235
+ - type
236
+ properties:
237
+ columnName:
238
+ type: string
239
+ description: Name of the new column
240
+ type:
241
+ type: string
242
+ enum: [string, integer, float, boolean, datetime, uuid, json, file]
243
+ description: Data type of the column
244
+ isNullable:
245
+ type: boolean
246
+ default: true
247
+ description: Whether the column allows NULL values
248
+ isUnique:
249
+ type: boolean
250
+ default: false
251
+ description: Whether the column values must be unique
252
+ defaultValue:
253
+ type: string
254
+ description: Default value for the column
255
+ dropColumns:
256
+ type: array
257
+ description: Remove columns from the table
258
+ items:
259
+ type: string
260
+ description: Name of the column to drop
261
+ updateColumns:
262
+ type: array
263
+ description: Modify existing columns (rename or change default)
264
+ items:
265
+ type: object
266
+ required:
267
+ - columnName
268
+ properties:
269
+ columnName:
270
+ type: string
271
+ description: Current name of the column
272
+ newColumnName:
273
+ type: string
274
+ description: New name for the column (optional)
275
+ minLength: 1
276
+ maxLength: 64
277
+ defaultValue:
278
+ type: string
279
+ description: New default value for the column (optional)
280
+ addForeignKeys:
281
+ type: array
282
+ description: Add foreign key constraints to existing columns
283
+ items:
284
+ type: object
285
+ required:
286
+ - columnName
287
+ - foreignKey
288
+ properties:
289
+ columnName:
290
+ type: string
291
+ description: Name of the column to add foreign key to
292
+ foreignKey:
293
+ type: object
294
+ required:
295
+ - referenceTable
296
+ - referenceColumn
297
+ properties:
298
+ referenceTable:
299
+ type: string
300
+ description: Table being referenced
301
+ referenceColumn:
302
+ type: string
303
+ description: Column being referenced
304
+ onDelete:
305
+ type: string
306
+ enum: [CASCADE, SET NULL, NO ACTION, RESTRICT]
307
+ default: RESTRICT
308
+ description: Action on delete
309
+ onUpdate:
310
+ type: string
311
+ enum: [CASCADE, SET NULL, NO ACTION, RESTRICT]
312
+ default: RESTRICT
313
+ description: Action on update
314
+ dropForeignKeys:
315
+ type: array
316
+ description: Remove foreign key constraints from columns
317
+ items:
318
+ type: string
319
+ description: Name of the column with foreign key to drop
320
+ renameTable:
321
+ type: object
322
+ description: Rename the table
323
+ required:
324
+ - newTableName
325
+ properties:
326
+ newTableName:
327
+ type: string
328
+ description: New name for the table
329
+ minLength: 1
330
+ maxLength: 64
331
+ responses:
332
+ '200':
333
+ description: Table schema updated successfully
334
+ content:
335
+ application/json:
336
+ schema:
337
+ type: object
338
+ properties:
339
+ message:
340
+ type: string
341
+ description: Success message
342
+ tableName:
343
+ type: string
344
+ description: Name of the updated table
345
+ operations:
346
+ type: array
347
+ description: List of operations performed
348
+ items:
349
+ type: string
350
+ example:
351
+ message: "Table schema updated successfully"
352
+ tableName: "posts"
353
+ operations:
354
+ - "added 2 columns"
355
+ - "dropped 1 columns"
356
+ - "renamed 1 columns"
357
+ - "added 1 foreign keys"
358
+ - "dropped 1 foreign keys"
359
+ '400':
360
+ description: Bad request
361
+ content:
362
+ application/json:
363
+ schema:
364
+ $ref: '#/components/schemas/ErrorResponse'
365
+ examples:
366
+ columnExists:
367
+ value:
368
+ error: "COLUMN_EXISTS"
369
+ message: "Column 'title' already exists in table 'posts'"
370
+ statusCode: 400
371
+ nextActions: "Choose a different column name or drop it first"
372
+ columnNotFound:
373
+ value:
374
+ error: "COLUMN_NOT_FOUND"
375
+ message: "Column 'nonexistent' not found in table 'posts'"
376
+ statusCode: 400
377
+ nextActions: "Check column name with GET /api/tables/{tableName}/schema"
378
+ foreignKeyExists:
379
+ value:
380
+ error: "FOREIGN_KEY_EXISTS"
381
+ message: "Foreign key on column 'user_id' already exists"
382
+ statusCode: 400
383
+ nextActions: "Drop the existing foreign key first or use a different column"
384
+ '404':
385
+ description: Table not found
386
+ content:
387
+ application/json:
388
+ schema:
389
+ $ref: '#/components/schemas/ErrorResponse'
390
+ example:
391
+ error: "TABLE_NOT_FOUND"
392
+ message: "Table 'nonexistent' does not exist"
393
+ statusCode: 404
394
+ nextActions: "Check table name and try again"
395
+ delete:
396
+ summary: Delete Table
397
+ tags:
398
+ - Admin
399
+ security:
400
+ - bearerAuth: []
401
+ - apiKey: []
402
+ parameters:
403
+ - name: tableName
404
+ in: path
405
+ required: true
406
+ schema:
407
+ type: string
408
+ responses:
409
+ '200':
410
+ description: Table deleted
411
+ content:
412
+ application/json:
413
+ schema:
414
+ type: object
415
+ properties:
416
+ message:
417
+ type: string
418
+ table_name:
419
+ type: string
420
+ example:
421
+ message: "Table deleted successfully"
422
+ tableName: "posts"
423
+ '404':
424
+ description: Table not found
425
+ content:
426
+ application/json:
427
+ schema:
428
+ $ref: '#/components/schemas/ErrorResponse'
429
+ example:
430
+ error: "TABLE_NOT_FOUND"
431
+ message: "Table 'nonexistent' does not exist"
432
+ statusCode: 404
433
+ nextActions: "Check table name and try again"
434
+
435
+ components:
436
+ securitySchemes:
437
+ bearerAuth:
438
+ type: http
439
+ scheme: bearer
440
+ apiKey:
441
+ type: apiKey
442
+ in: header
443
+ name: X-API-Key
444
+
445
+ schemas:
446
+ ErrorResponse:
447
+ type: object
448
+ required:
449
+ - error
450
+ - message
451
+ - statusCode
452
+ properties:
453
+ error:
454
+ type: string
455
+ description: Error code for programmatic handling
456
+ message:
457
+ type: string
458
+ description: Human-readable error message
459
+ statusCode:
460
+ type: integer
461
+ description: HTTP status code
462
+ nextActions:
463
+ type: string
464
+ description: Suggested action to resolve the error
package/package.json ADDED
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "insforge",
3
+ "version": "0.3.1",
4
+ "description": "InsForge - Open source backend-as-a-service with PostgreSQL and MCP integration",
5
+ "type": "module",
6
+ "workspaces": [
7
+ "backend",
8
+ "frontend",
9
+ "shared-schemas",
10
+ "mcp"
11
+ ],
12
+ "scripts": {
13
+ "dev": "concurrently -n \"backend,frontend\" -c \"cyan,magenta\" \"npm run dev:backend\" \"npm run dev:frontend\"",
14
+ "dev:debug": "concurrently -n \"backend,frontend\" -c \"cyan,magenta\" \"npm run dev:backend:debug\" \"npm run dev:frontend:debug\"",
15
+ "dev:backend": "cd backend && npm run dev",
16
+ "dev:backend:debug": "cd backend && cross-env DEBUG_MODE=true npm run dev",
17
+ "dev:frontend": "cd frontend && npm run dev",
18
+ "dev:frontend:debug": "cd frontend && cross-env VITE_DEBUG_MODE=true npm run dev",
19
+ "build": "npm run build:backend && npm run build:frontend",
20
+ "build:backend": "cd backend && npm run build",
21
+ "build:frontend": "cd frontend && npm run build",
22
+ "start": "cd backend && npm run start",
23
+ "start:prod": "npm run build && npm run start",
24
+ "test": "npm run test:backend && npm run test:frontend",
25
+ "test:backend": "cd backend && npm test",
26
+ "test:frontend": "cd frontend && npm test",
27
+ "test:e2e": "cd backend && npm run test:e2e",
28
+ "lint": "eslint .",
29
+ "lint:backend": "eslint backend",
30
+ "lint:frontend": "eslint frontend",
31
+ "lint:mcp": "eslint mcp",
32
+ "lint:fix": "eslint . --fix",
33
+ "lint:fix:backend": "eslint backend --fix",
34
+ "lint:fix:frontend": "eslint frontend --fix",
35
+ "lint:fix:mcp": "eslint mcp --fix",
36
+ "format": "prettier --write .",
37
+ "format:backend": "prettier --write backend",
38
+ "format:frontend": "prettier --write frontend",
39
+ "format:mcp": "prettier --write mcp",
40
+ "format:check": "prettier --check .",
41
+ "format:check:backend": "prettier --check backend",
42
+ "format:check:frontend": "prettier --check frontend",
43
+ "format:check:mcp": "prettier --check mcp",
44
+ "typecheck": "npm run typecheck:frontend && npm run typecheck:backend",
45
+ "typecheck:frontend": "cd frontend && npx tsc --noEmit",
46
+ "typecheck:backend": "cd backend && npx tsc --noEmit",
47
+ "clean": "npm run clean:backend && npm run clean:frontend",
48
+ "clean:backend": "cd backend && npm run clean",
49
+ "clean:frontend": "cd frontend && rimraf dist",
50
+ "install:all": "npm install && cd backend && npm install && cd ../frontend && npm install",
51
+ "release": "release-it",
52
+ "release:patch": "release-it patch",
53
+ "release:minor": "release-it minor",
54
+ "release:major": "release-it major",
55
+ "release:dry": "release-it --dry-run",
56
+ "release:beta": "release-it --preRelease=beta"
57
+ },
58
+ "devDependencies": {
59
+ "@release-it/conventional-changelog": "^10.0.1",
60
+ "@eslint/js": "^9.31.0",
61
+ "concurrently": "^8.2.2",
62
+ "cross-env": "^7.0.3",
63
+ "eslint": "^9.31.0",
64
+ "eslint-config-prettier": "^9.1.2",
65
+ "eslint-plugin-prettier": "^5.5.3",
66
+ "eslint-plugin-react": "^7.37.5",
67
+ "eslint-plugin-react-hooks": "^5.2.0",
68
+ "globals": "^13.24.0",
69
+ "prettier": "^3.6.2",
70
+ "rimraf": "^5.0.5",
71
+ "typescript": "^5.8.3",
72
+ "typescript-eslint": "^8.38.0",
73
+ "release-it": "^19.0.4"
74
+ },
75
+ "repository": {
76
+ "type": "git",
77
+ "url": "https://github.com/InsForge/InsForge.git"
78
+ },
79
+ "keywords": [
80
+ "backend-as-a-service",
81
+ "baas",
82
+ "postgresql",
83
+ "mcp",
84
+ "monorepo"
85
+ ],
86
+ "author": "InsForge",
87
+ "license": "Apache-2.0"
88
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@insforge/shared-schemas",
3
+ "version": "1.1.1",
4
+ "author": "Insforge",
5
+ "description": "Shared TypeScript schemas for InsForge frontend and backend",
6
+ "license": "Apache-2.0",
7
+ "type": "module",
8
+ "main": "./dist/index.js",
9
+ "module": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "typecheck": "tsc --noEmit",
23
+ "prepublishOnly": "npm run build"
24
+ },
25
+ "dependencies": {
26
+ "zod": "^3.23.8"
27
+ },
28
+ "devDependencies": {
29
+ "typescript": "^5.3.3"
30
+ }
31
+ }