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,563 @@
1
+ openapi: 3.0.3
2
+ info:
3
+ title: Insforge Authentication API
4
+ version: 2.0.0
5
+ description: Authentication endpoints with separated auth and profile tables
6
+
7
+ paths:
8
+ /api/auth/users:
9
+ post:
10
+ summary: Register new user
11
+ description: Creates a new user account
12
+ tags:
13
+ - Client
14
+ requestBody:
15
+ required: true
16
+ content:
17
+ application/json:
18
+ schema:
19
+ type: object
20
+ required:
21
+ - email
22
+ - password
23
+ properties:
24
+ email:
25
+ type: string
26
+ format: email
27
+ example: user@example.com
28
+ password:
29
+ type: string
30
+ minLength: 8
31
+ example: securepassword123
32
+ name:
33
+ type: string
34
+ example: John Doe
35
+ responses:
36
+ '201':
37
+ description: User created successfully
38
+ content:
39
+ application/json:
40
+ schema:
41
+ type: object
42
+ properties:
43
+ user:
44
+ type: object
45
+ properties:
46
+ id:
47
+ type: string
48
+ format: uuid
49
+ email:
50
+ type: string
51
+ name:
52
+ type: string
53
+ emailVerified:
54
+ type: boolean
55
+ createdAt:
56
+ type: string
57
+ format: date-time
58
+ updatedAt:
59
+ type: string
60
+ format: date-time
61
+ accessToken:
62
+ type: string
63
+ description: JWT authentication token
64
+ '400':
65
+ description: Invalid request
66
+ '409':
67
+ description: User already exists
68
+
69
+ get:
70
+ summary: List all users (admin only)
71
+ description: Returns paginated list of users
72
+ tags:
73
+ - Admin
74
+ security:
75
+ - bearerAuth: []
76
+ parameters:
77
+ - name: page
78
+ in: query
79
+ schema:
80
+ type: integer
81
+ default: 1
82
+ - name: limit
83
+ in: query
84
+ schema:
85
+ type: integer
86
+ default: 10
87
+ - name: search
88
+ in: query
89
+ schema:
90
+ type: string
91
+ - name: role
92
+ in: query
93
+ schema:
94
+ type: string
95
+ enum: [user, admin]
96
+ responses:
97
+ '200':
98
+ description: List of users
99
+ content:
100
+ application/json:
101
+ schema:
102
+ type: object
103
+ properties:
104
+ data:
105
+ type: array
106
+ items:
107
+ type: object
108
+ properties:
109
+ id:
110
+ type: string
111
+ email:
112
+ type: string
113
+ name:
114
+ type: string
115
+ role:
116
+ type: string
117
+ created_at:
118
+ type: string
119
+ format: date-time
120
+ pagination:
121
+ type: object
122
+ properties:
123
+ offset:
124
+ type: integer
125
+ limit:
126
+ type: integer
127
+ total:
128
+ type: integer
129
+ '401':
130
+ description: Unauthorized
131
+ '403':
132
+ description: Forbidden - Admin only
133
+
134
+ delete:
135
+ summary: Delete users (admin only)
136
+ description: Delete multiple users by their IDs
137
+ tags:
138
+ - Admin
139
+ security:
140
+ - bearerAuth: []
141
+ requestBody:
142
+ required: true
143
+ content:
144
+ application/json:
145
+ schema:
146
+ type: object
147
+ properties:
148
+ userIds:
149
+ type: array
150
+ items:
151
+ type: string
152
+ required:
153
+ - userIds
154
+ responses:
155
+ '200':
156
+ description: Users deleted successfully
157
+ content:
158
+ application/json:
159
+ schema:
160
+ type: object
161
+ properties:
162
+ message:
163
+ type: string
164
+ deletedCount:
165
+ type: integer
166
+ '401':
167
+ description: Unauthorized
168
+ '403':
169
+ description: Forbidden - Admin only
170
+
171
+ /api/auth/sessions:
172
+ post:
173
+ summary: User login
174
+ description: Authenticates user and returns access token
175
+ tags:
176
+ - Client
177
+ requestBody:
178
+ required: true
179
+ content:
180
+ application/json:
181
+ schema:
182
+ type: object
183
+ required:
184
+ - email
185
+ - password
186
+ properties:
187
+ email:
188
+ type: string
189
+ format: email
190
+ password:
191
+ type: string
192
+ responses:
193
+ '200':
194
+ description: Login successful
195
+ content:
196
+ application/json:
197
+ schema:
198
+ type: object
199
+ properties:
200
+ user:
201
+ type: object
202
+ properties:
203
+ id:
204
+ type: string
205
+ format: uuid
206
+ email:
207
+ type: string
208
+ name:
209
+ type: string
210
+ emailVerified:
211
+ type: boolean
212
+ createdAt:
213
+ type: string
214
+ format: date-time
215
+ updatedAt:
216
+ type: string
217
+ format: date-time
218
+ accessToken:
219
+ type: string
220
+ '401':
221
+ description: Invalid credentials
222
+
223
+ /api/auth/sessions/current:
224
+ get:
225
+ summary: Get current user
226
+ description: Returns the currently authenticated user
227
+ tags:
228
+ - Client
229
+ security:
230
+ - bearerAuth: []
231
+ responses:
232
+ '200':
233
+ description: Current user info
234
+ content:
235
+ application/json:
236
+ schema:
237
+ type: object
238
+ properties:
239
+ user:
240
+ type: object
241
+ properties:
242
+ id:
243
+ type: string
244
+ email:
245
+ type: string
246
+ name:
247
+ type: string
248
+ role:
249
+ type: string
250
+ '401':
251
+ description: Unauthorized
252
+
253
+ /api/auth/admin/sessions:
254
+ post:
255
+ summary: Admin login
256
+ description: Authenticates admin user for dashboard access
257
+ tags:
258
+ - Admin
259
+ requestBody:
260
+ required: true
261
+ content:
262
+ application/json:
263
+ schema:
264
+ type: object
265
+ required:
266
+ - email
267
+ - password
268
+ properties:
269
+ email:
270
+ type: string
271
+ format: email
272
+ password:
273
+ type: string
274
+ responses:
275
+ '200':
276
+ description: Admin login successful
277
+ content:
278
+ application/json:
279
+ schema:
280
+ type: object
281
+ properties:
282
+ accessToken:
283
+ type: string
284
+ user:
285
+ type: object
286
+ properties:
287
+ id:
288
+ type: string
289
+ email:
290
+ type: string
291
+ name:
292
+ type: string
293
+ role:
294
+ type: string
295
+ enum: [admin]
296
+ '401':
297
+ description: Invalid credentials
298
+ '403':
299
+ description: User is not an admin
300
+
301
+ /api/auth/admin/sessions/exchange:
302
+ post:
303
+ summary: Exchange cloud provider authorization code for admin session
304
+ description: Verifies an authorization code/JWT from from Insforge Cloud platform and issues an internal admin session token with project_admin role
305
+ tags:
306
+ - Admin
307
+ requestBody:
308
+ required: true
309
+ content:
310
+ application/json:
311
+ schema:
312
+ type: object
313
+ required:
314
+ - code
315
+ properties:
316
+ code:
317
+ type: string
318
+ description: Authorization code or JWT from the Insforge
319
+ example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
320
+ responses:
321
+ '200':
322
+ description: Cloud authorization verified, admin session created
323
+ content:
324
+ application/json:
325
+ schema:
326
+ type: object
327
+ properties:
328
+ accessToken:
329
+ type: string
330
+ description: Internal JWT for admin authentication
331
+ user:
332
+ type: object
333
+ properties:
334
+ id:
335
+ type: string
336
+ format: uuid
337
+ email:
338
+ type: string
339
+ name:
340
+ type: string
341
+ example: Administrator
342
+ emailVerified:
343
+ type: boolean
344
+ createdAt:
345
+ type: string
346
+ format: date-time
347
+ updatedAt:
348
+ type: string
349
+ format: date-time
350
+ '400':
351
+ description: Invalid authorization code or JWT verification failed
352
+ content:
353
+ application/json:
354
+ schema:
355
+ $ref: '#/components/schemas/ErrorResponse'
356
+
357
+ /api/auth/tokens/anon:
358
+ post:
359
+ summary: Generate anonymous token
360
+ description: Generate a non-expiring anonymous JWT token for public API access (admin only)
361
+ tags:
362
+ - Client
363
+ security:
364
+ - bearerAuth: []
365
+ responses:
366
+ '200':
367
+ description: Anonymous token generated successfully
368
+ content:
369
+ application/json:
370
+ schema:
371
+ type: object
372
+ properties:
373
+ accessToken:
374
+ type: string
375
+ description: Non-expiring anonymous JWT token
376
+ example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
377
+ message:
378
+ type: string
379
+ description: Success message
380
+ example: "Anonymous token generated successfully (never expires)"
381
+ '401':
382
+ description: Unauthorized - requires authentication
383
+ '403':
384
+ description: Forbidden - admin access required
385
+
386
+ /api/auth/oauth/google:
387
+ get:
388
+ summary: Initiate Google OAuth flow
389
+ tags:
390
+ - Client
391
+ parameters:
392
+ - name: redirect_uri
393
+ in: query
394
+ schema:
395
+ type: string
396
+ format: uri
397
+ description: URL to redirect after authentication
398
+ responses:
399
+ '302':
400
+ description: Redirect to Google OAuth
401
+ '500':
402
+ description: OAuth not configured
403
+
404
+ /api/auth/oauth/github:
405
+ get:
406
+ summary: Initiate GitHub OAuth flow
407
+ tags:
408
+ - Client
409
+ parameters:
410
+ - name: redirect_uri
411
+ in: query
412
+ schema:
413
+ type: string
414
+ format: uri
415
+ description: URL to redirect after authentication
416
+ responses:
417
+ '302':
418
+ description: Redirect to GitHub OAuth
419
+ '500':
420
+ description: OAuth not configured
421
+
422
+ /api/auth/oauth/shared/callback:
423
+ get:
424
+ summary: Shared OAuth callback handler
425
+ description: Handles OAuth callbacks from all providers
426
+ tags:
427
+ - Client
428
+ parameters:
429
+ - name: code
430
+ in: query
431
+ schema:
432
+ type: string
433
+ description: Authorization code from OAuth provider
434
+ - name: state
435
+ in: query
436
+ schema:
437
+ type: string
438
+ description: JWT encoded state with provider and redirect URL
439
+ - name: token
440
+ in: query
441
+ schema:
442
+ type: string
443
+ description: Direct ID token (for Google)
444
+ responses:
445
+ '302':
446
+ description: Redirect with access token and user info in query params
447
+ headers:
448
+ Location:
449
+ schema:
450
+ type: string
451
+ format: uri
452
+
453
+ /api/auth/oauth/{provider}/callback:
454
+ get:
455
+ summary: Provider-specific OAuth callback
456
+ description: Alternative callback endpoint for specific providers
457
+ tags:
458
+ - Client
459
+ parameters:
460
+ - name: provider
461
+ in: path
462
+ required: true
463
+ schema:
464
+ type: string
465
+ enum: [google, github]
466
+ - name: code
467
+ in: query
468
+ schema:
469
+ type: string
470
+ - name: state
471
+ in: query
472
+ schema:
473
+ type: string
474
+ - name: token
475
+ in: query
476
+ schema:
477
+ type: string
478
+ responses:
479
+ '302':
480
+ description: Redirect with access token
481
+
482
+ components:
483
+ securitySchemes:
484
+ bearerAuth:
485
+ type: http
486
+ scheme: bearer
487
+ bearerFormat: JWT
488
+ apiKey:
489
+ type: apiKey
490
+ in: header
491
+ name: x-api-key
492
+
493
+ schemas:
494
+ AuthRecord:
495
+ type: object
496
+ properties:
497
+ id:
498
+ type: string
499
+ format: uuid
500
+ email:
501
+ type: string
502
+ format: email
503
+ passwordHash:
504
+ type: string
505
+ description: SHA256 hash of password
506
+ createdAt:
507
+ type: string
508
+ format: date-time
509
+ updatedAt:
510
+ type: string
511
+ format: date-time
512
+
513
+ ProfileRecord:
514
+ type: object
515
+ properties:
516
+ id:
517
+ type: string
518
+ format: uuid
519
+ authId:
520
+ type: string
521
+ format: uuid
522
+ description: Foreign key to auth table
523
+ name:
524
+ type: string
525
+ avatar_url:
526
+ type: string
527
+ nullable: true
528
+ bio:
529
+ type: string
530
+ nullable: true
531
+ metadata:
532
+ type: object
533
+ description: JSONB field for flexible data
534
+ createdAt:
535
+ type: string
536
+ format: date-time
537
+ updatedAt:
538
+ type: string
539
+ format: date-time
540
+
541
+ ErrorResponse:
542
+ type: object
543
+ required:
544
+ - error
545
+ - message
546
+ - statusCode
547
+ properties:
548
+ error:
549
+ type: string
550
+ description: Error code for programmatic handling
551
+ example: "VALIDATION_ERROR"
552
+ message:
553
+ type: string
554
+ description: Human-readable error message
555
+ example: "Email is already in use"
556
+ statusCode:
557
+ type: integer
558
+ description: HTTP status code
559
+ example: 400
560
+ nextActions:
561
+ type: string
562
+ description: Suggested action to resolve the error
563
+ example: "Please use a different email address"