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,565 @@
1
+ # Deploy InsForge to AWS EC2
2
+
3
+ This guide will walk you through deploying InsForge on an AWS EC2 instance using Docker Compose.
4
+
5
+ ## 📋 Prerequisites
6
+
7
+ - AWS Account with EC2 access
8
+ - Basic knowledge of SSH and command-line operations
9
+ - Domain name (optional, for custom domain setup)
10
+
11
+ ## 🚀 Deployment Steps
12
+
13
+ ### 1. Create and Configure EC2 Instance
14
+
15
+ #### 1.1 Launch EC2 Instance
16
+
17
+ 1. **Log into AWS Console** and navigate to EC2 Dashboard
18
+ 2. **Click "Launch Instance"**
19
+ 3. **Configure Instance:**
20
+ - **Name**: `insforge-server` (or your preferred name)
21
+ - **AMI**: Ubuntu Server 24.04 LTS (HVM), SSD Volume Type
22
+ - **Instance Type**: `t3.medium` or larger (minimum 2 vCPU, 4 GB RAM)
23
+ - For production: `t3.large` (2 vCPU, 8 GB RAM) recommended
24
+ - For testing: `t3.small` (2 vCPU, 2 GB RAM) minimum
25
+ - **Key Pair**: Create new or select existing key pair (download and save the `.pem` file)
26
+ - **Storage**: 30 GB gp3 (minimum 20 GB recommended)
27
+
28
+ #### 1.2 Configure Security Group
29
+
30
+ Create or configure security group with the following inbound rules:
31
+
32
+ | Type | Protocol | Port Range | Source | Description |
33
+ |-------------|----------|------------|-----------|----------------------|
34
+ | SSH | TCP | 22 | My IP | SSH access |
35
+ | HTTP | TCP | 80 | 0.0.0.0/0 | HTTP access |
36
+ | HTTPS | TCP | 443 | 0.0.0.0/0 | HTTPS access |
37
+ | Custom TCP | TCP | 7130 | 0.0.0.0/0 | Backend API |
38
+ | Custom TCP | TCP | 7131 | 0.0.0.0/0 | Frontend Dashboard |
39
+ | Custom TCP | TCP | 5432 | 0.0.0.0/0 | PostgreSQL (optional)|
40
+
41
+ > ⚠️ **Security Note**: For production, restrict PostgreSQL (5432) to specific IP addresses or remove external access entirely. Consider using a reverse proxy (nginx) and exposing only ports 80/443.
42
+
43
+ #### 1.3 Allocate Elastic IP (Recommended)
44
+
45
+ 1. Navigate to **Elastic IPs** in EC2 Dashboard
46
+ 2. Click **Allocate Elastic IP address**
47
+ 3. Associate the Elastic IP with your instance
48
+
49
+ This ensures your instance keeps the same IP address even after restarts.
50
+
51
+ ### 2. Connect to Your EC2 Instance
52
+
53
+ ```bash
54
+ # Set correct permissions for your key file
55
+ chmod 400 your-key-pair.pem
56
+
57
+ # Connect via SSH
58
+ ssh -i your-key-pair.pem ubuntu@your-ec2-public-ip
59
+ ```
60
+
61
+ ### 3. Install Dependencies
62
+
63
+ #### 3.1 Update System Packages
64
+
65
+ ```bash
66
+ sudo apt update && sudo apt upgrade -y
67
+ ```
68
+
69
+ #### 3.2 Install Docker
70
+
71
+ ```text
72
+ Follow the instructions of the link below to install and verify docker on your new ubuntu ec2 instance:
73
+ https://docs.docker.com/engine/install/ubuntu/
74
+ ```
75
+
76
+ #### 3.3 Add Your User to Docker Group
77
+
78
+ After installing Docker, you need to add your user to the `docker` group to run Docker commands without `sudo`:
79
+
80
+ ```bash
81
+ # Add your user to the docker group
82
+ sudo usermod -aG docker $USER
83
+
84
+ # Apply the group changes
85
+ newgrp docker
86
+ ```
87
+
88
+ **Verify it works:**
89
+
90
+ ```bash
91
+ # This should now work without sudo
92
+ docker ps
93
+ ```
94
+
95
+ > 💡 **Note**: If `docker ps` doesn't work immediately, log out and log back in via SSH, then try again.
96
+
97
+ > ⚠️ **Security Note**: Adding a user to the `docker` group grants them root-equivalent privileges on the system. This is acceptable for single-user environments like your EC2 instance, but be cautious on shared systems.
98
+
99
+ #### 3.4 Install Git
100
+
101
+ ```bash
102
+ sudo apt install git -y
103
+ ```
104
+
105
+ ### 4. Deploy InsForge
106
+
107
+ #### 4.1 Clone Repository
108
+
109
+ ```bash
110
+ cd ~
111
+ git clone https://github.com/insforge/insforge.git
112
+ cd insforge
113
+ ```
114
+
115
+ #### 4.2 Create Environment Configuration
116
+
117
+ Create your `.env` file with production settings:
118
+
119
+ ```bash
120
+ nano .env
121
+ ```
122
+
123
+ Add the following configuration (customize the values):
124
+
125
+ ```env
126
+
127
+ # ============================================
128
+ # Server Configuration
129
+ # ============================================
130
+ PORT=7130
131
+
132
+ # ============================================
133
+ # Database Configuration
134
+ # ============================================
135
+ POSTGRES_USER=postgres
136
+ POSTGRES_PASSWORD=postgres
137
+ POSTGRES_DB=insforge
138
+
139
+ # ============================================
140
+ # Security & Authentication
141
+ # ============================================
142
+ # IMPORTANT: Generate a strong random secret for production
143
+ JWT_SECRET=your-secret-key-here-must-be-32-char-or-above
144
+ ENCRYPTION_KEY=
145
+
146
+ # Admin Account (used for initial setup)
147
+ ADMIN_EMAIL=admin@example.com
148
+ ADMIN_PASSWORD=change-this-password
149
+
150
+ # ============================================
151
+ # API Configuration
152
+ # ============================================
153
+ # Replace with your EC2 public IP or domain
154
+ API_BASE_URL=http://your-ec2-ip:7130
155
+ VITE_API_BASE_URL=http://your-ec2-ip:7130
156
+
157
+ # ============================================
158
+ # OAuth Providers (Optional)
159
+ # ============================================
160
+ # Google OAuth
161
+ GOOGLE_CLIENT_ID=
162
+ GOOGLE_CLIENT_SECRET=
163
+
164
+ # GitHub OAuth
165
+ GITHUB_CLIENT_ID=
166
+ GITHUB_CLIENT_SECRET=
167
+
168
+ # ============================================
169
+ # AWS Storage Configuration (Optional)
170
+ # ============================================
171
+ # For S3 file storage
172
+ AWS_S3_BUCKET=
173
+ AWS_REGION=
174
+ AWS_ACCESS_KEY_ID=
175
+ AWS_SECRET_ACCESS_KEY=
176
+
177
+ # ============================================
178
+ # AI/LLM Configuration (Optional)
179
+ # ============================================
180
+ OPENROUTER_API_KEY=
181
+
182
+ # ============================================
183
+ # Multi-tenant Cloud Configuration (Optional)
184
+ # ============================================
185
+ DEPLOYMENT_ID=
186
+ PROJECT_ID=
187
+ APP_KEY=
188
+ ACCESS_API_KEY=
189
+
190
+ # ============================================
191
+ # Advanced Configuration
192
+ # ============================================
193
+ DENO_ENV=production
194
+ WORKER_TIMEOUT_MS=30000
195
+ ```
196
+
197
+ **Generate Secure Secrets:**
198
+
199
+ ```bash
200
+ # Generate JWT_SECRET (32+ characters)
201
+ openssl rand -base64 32
202
+
203
+ # Generate ENCRYPTION_KEY (must be exactly 32 characters)
204
+ openssl rand -base64 24
205
+ ```
206
+
207
+ > 💡 **Important**: Save these secrets securely. You'll need them if you ever migrate or restore your instance.
208
+
209
+ #### 4.3 Start InsForge Services
210
+
211
+ ```bash
212
+ # Pull Docker images and start services
213
+ docker compose up -d
214
+
215
+ # View logs to ensure everything started correctly
216
+ docker compose logs -f
217
+ ```
218
+
219
+ Press `Ctrl+C` to exit log view.
220
+
221
+ #### 4.4 Verify Services
222
+
223
+ ```bash
224
+ # Check running containers
225
+ docker compose ps
226
+
227
+ # You should see 5 running services:
228
+ # - insforge-postgres
229
+ # - insforge-postgrest
230
+ # - insforge
231
+ # - insforge-deno
232
+ # - insforge-vector
233
+ ```
234
+
235
+ ### 5. Access Your InsForge Instance
236
+
237
+ #### 5.1 Test Backend API
238
+
239
+ ```bash
240
+ curl http://your-ec2-ip:7130/api/health
241
+ ```
242
+
243
+ Expected response:
244
+ ```json
245
+ {
246
+ "status": "ok",
247
+ "version": "1.0.0",
248
+ "service": "Insforge OSS Backend",
249
+ "timestamp": "2025-10-17T..."
250
+ }
251
+ ```
252
+
253
+ #### 5.2 Access Dashboard
254
+
255
+ Open your browser and navigate to:
256
+ ```text
257
+ http://your-ec2-ip:7131
258
+ ```
259
+
260
+
261
+ #### 5.3 ⚠️ Important: Custom Admin Credentials Configuration
262
+
263
+ > **🚧 Active Development Notice**: InsForge is currently in active development and testing. The credential management system is being developed. The following is a temporary workaround that will be replaced with a secure implementation in future releases.
264
+
265
+ **If you customize admin credentials** in your `.env` file (which is recommended), you must **also update the frontend login page** to match. This is a temporary requirement during our development phase.
266
+
267
+ **Step 1: Update `.env` file**
268
+
269
+ ```env
270
+ # In your .env file
271
+ ADMIN_EMAIL=your-custom-admin@example.com
272
+ ADMIN_PASSWORD=your-secure-password-here
273
+
274
+ ```
275
+
276
+ After updating your `.env` file, manually edit the login page:
277
+
278
+ ```bash
279
+ nano ~/insforge/frontend/src/features/login/page/LoginPage.tsx
280
+ ```
281
+
282
+ Find this section (around line 38-41):
283
+ ```typescript
284
+ defaultValues: {
285
+ email: 'admin@example.com',
286
+ password: 'change-this-password',
287
+ },
288
+ ```
289
+
290
+
291
+ ### 6. Configure Domain (Optional but Recommended)
292
+
293
+ #### 6.1 Update DNS Records
294
+
295
+ Add DNS A records pointing to your EC2 Elastic IP:
296
+ ```text
297
+ api.yourdomain.com → your-ec2-ip
298
+ app.yourdomain.com → your-ec2-ip
299
+ ```
300
+
301
+ #### 6.2 Install Nginx Reverse Proxy
302
+
303
+ ```bash
304
+ sudo apt install nginx -y
305
+ ```
306
+
307
+ Create Nginx configuration:
308
+
309
+ ```bash
310
+ sudo nano /etc/nginx/sites-available/insforge
311
+ ```
312
+
313
+ Add the following configuration:
314
+
315
+ ```nginx
316
+ # Backend API
317
+ server {
318
+ listen 80;
319
+ server_name api.yourdomain.com;
320
+
321
+ location / {
322
+ proxy_pass http://localhost:7130;
323
+ proxy_http_version 1.1;
324
+ proxy_set_header Upgrade $http_upgrade;
325
+ proxy_set_header Connection 'upgrade';
326
+ proxy_set_header Host $host;
327
+ proxy_set_header X-Real-IP $remote_addr;
328
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
329
+ proxy_set_header X-Forwarded-Proto $scheme;
330
+ proxy_cache_bypass $http_upgrade;
331
+ }
332
+ }
333
+
334
+ # Frontend Dashboard
335
+ server {
336
+ listen 80;
337
+ server_name app.yourdomain.com;
338
+
339
+ location / {
340
+ proxy_pass http://localhost:7131;
341
+ proxy_http_version 1.1;
342
+ proxy_set_header Upgrade $http_upgrade;
343
+ proxy_set_header Connection 'upgrade';
344
+ proxy_set_header Host $host;
345
+ proxy_set_header X-Real-IP $remote_addr;
346
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
347
+ proxy_set_header X-Forwarded-Proto $scheme;
348
+ proxy_cache_bypass $http_upgrade;
349
+ }
350
+ }
351
+ ```
352
+
353
+ Enable the configuration:
354
+
355
+ ```bash
356
+ sudo ln -s /etc/nginx/sites-available/insforge /etc/nginx/sites-enabled/
357
+ sudo nginx -t
358
+ sudo systemctl reload nginx
359
+ ```
360
+
361
+ #### 6.3 Install SSL Certificate (Recommended)
362
+
363
+ ```bash
364
+ # Install Certbot
365
+ sudo apt install certbot python3-certbot-nginx -y
366
+
367
+ # Obtain SSL certificates
368
+ sudo certbot --nginx -d api.yourdomain.com -d app.yourdomain.com
369
+
370
+ # Follow the prompts to complete setup
371
+ ```
372
+
373
+ Update your `.env` file with HTTPS URLs:
374
+
375
+ ```bash
376
+ cd ~/insforge
377
+ nano .env
378
+ ```
379
+
380
+ Change:
381
+ ```env
382
+ API_BASE_URL=https://api.yourdomain.com
383
+ VITE_API_BASE_URL=https://api.yourdomain.com
384
+ ```
385
+
386
+ Restart services:
387
+
388
+ ```bash
389
+ docker compose down
390
+ docker compose up -d
391
+ ```
392
+
393
+ ## 🔧 Management & Maintenance
394
+
395
+ ### View Logs
396
+
397
+ ```bash
398
+ # All services
399
+ docker compose logs -f
400
+
401
+ # Specific service
402
+ docker compose logs -f insforge
403
+ docker compose logs -f postgres
404
+ docker compose logs -f deno
405
+ ```
406
+
407
+ ### Stop Services
408
+
409
+ ```bash
410
+ docker compose down
411
+ ```
412
+
413
+ ### Restart Services
414
+
415
+ ```bash
416
+ docker compose restart
417
+ ```
418
+
419
+ ### Update InsForge
420
+
421
+ ```bash
422
+ cd ~/insforge
423
+ git pull origin main
424
+ docker compose down
425
+ docker compose up -d --build
426
+ ```
427
+
428
+ ### Backup Database
429
+
430
+ ```bash
431
+ # Create backup
432
+ docker exec insforge-postgres pg_dump -U postgres insforge > backup_$(date +%Y%m%d_%H%M%S).sql
433
+
434
+ # Restore from backup
435
+ cat backup_file.sql | docker exec -i insforge-postgres psql -U postgres -d insforge
436
+ ```
437
+
438
+ ### Monitor Resources
439
+
440
+ ```bash
441
+ # Check disk usage
442
+ df -h
443
+
444
+ # Check memory usage
445
+ free -h
446
+
447
+ # Check Docker stats
448
+ docker stats
449
+ ```
450
+
451
+ ## 🐛 Troubleshooting
452
+
453
+ ### Services Won't Start
454
+
455
+ ```bash
456
+ # Check logs for errors
457
+ docker compose logs
458
+
459
+ # Check disk space
460
+ df -h
461
+
462
+ # Check memory
463
+ free -h
464
+
465
+ # Restart Docker daemon
466
+ sudo systemctl restart docker
467
+ docker compose up -d
468
+ ```
469
+
470
+ ### Cannot Connect to Database
471
+
472
+ ```bash
473
+ # Check if PostgreSQL is running
474
+ docker compose ps postgres
475
+
476
+ # Check PostgreSQL logs
477
+ docker compose logs postgres
478
+
479
+ # Verify credentials in .env file
480
+ cat .env | grep POSTGRES
481
+ ```
482
+
483
+ ### Port Already in Use
484
+
485
+ ```bash
486
+ # Check what's using the port
487
+ sudo netstat -tulpn | grep :7130
488
+
489
+ # Kill the process or change port in docker-compose.yml
490
+ ```
491
+
492
+ ### Out of Memory
493
+
494
+ Consider upgrading to a larger instance type:
495
+ ```text
496
+ - Current: t3.medium (4 GB RAM)
497
+ - Upgrade to: t3.large (8 GB RAM)
498
+ ```
499
+
500
+ ### SSL Certificate Issues
501
+
502
+ ```bash
503
+ # Renew certificates
504
+ sudo certbot renew
505
+
506
+ # Test renewal
507
+ sudo certbot renew --dry-run
508
+ ```
509
+
510
+ ## 📊 Performance Optimization
511
+
512
+ ### For Production Workloads
513
+
514
+ 1. **Upgrade Instance Type**: Use `t3.large` or `t3.xlarge`
515
+ 2. **Enable Auto-scaling**: Set up Application Load Balancer with auto-scaling groups
516
+ 3. **Use RDS**: Migrate from containerized PostgreSQL to AWS RDS for better reliability
517
+ 4. **Enable CloudWatch**: Monitor metrics and set up alarms
518
+ 5. **Configure Backups**: Set up automated daily backups
519
+ 6. **Use S3 for Storage**: Configure S3 bucket for file uploads instead of local storage
520
+
521
+ ### Database Optimization
522
+
523
+ ```conf
524
+ # Increase PostgreSQL shared_buffers (edit postgresql.conf in docker-init/db/)
525
+ # Recommended: 25% of available RAM
526
+ shared_buffers = 1GB
527
+ effective_cache_size = 3GB
528
+ ```
529
+
530
+ ## 🔒 Security Best Practices
531
+
532
+ 1. **Change Default Passwords**: Update admin and database passwords
533
+ 2. **Enable Firewall**: Use AWS Security Groups effectively
534
+ 3. **Regular Updates**: Keep system and Docker images updated
535
+ 4. **SSL/TLS**: Always use HTTPS in production
536
+ 5. **Backup Regularly**: Automate database backups
537
+ 6. **Monitor Logs**: Set up log monitoring and alerts
538
+ 7. **Limit SSH Access**: Restrict SSH to specific IP addresses
539
+ 8. **Use IAM Roles**: Instead of AWS access keys where possible
540
+
541
+ ## 🆘 Support & Resources
542
+
543
+ - **Documentation**: [https://docs.insforge.dev](https://docs.insforge.dev)
544
+ - **GitHub Issues**: [https://github.com/insforge/insforge/issues](https://github.com/insforge/insforge/issues)
545
+ - **Discord Community**: [https://discord.com/invite/MPxwj5xVvW](https://discord.com/invite/MPxwj5xVvW)
546
+
547
+ ## 📝 Cost Estimation
548
+
549
+ **Monthly AWS Costs (approximate):**
550
+
551
+ | Component | Type | Monthly Cost |
552
+ |-----------|------|--------------|
553
+ | EC2 Instance | t3.medium | ~$30 |
554
+ | Storage (30 GB) | EBS gp3 | ~$3 |
555
+ | Elastic IP | (if running 24/7) | $0 |
556
+ | Data Transfer | First 100GB free | Variable |
557
+ | **Total** | | **~$33/month** |
558
+
559
+ > 💡 **Cost Optimization**: Use AWS Savings Plans or Reserved Instances for long-term deployments to save up to 70%.
560
+
561
+ ---
562
+
563
+ **Congratulations! 🎉** Your InsForge instance is now running on AWS EC2. You can start building applications by connecting AI agents to your backend platform.
564
+
565
+ For other production deployment strategies, check out our [deployment guides](./README.md).