insforge 1.2.10 → 1.4.8

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 (506) hide show
  1. package/.claude-plugin/marketplace.json +20 -20
  2. package/.dockerignore +60 -60
  3. package/.env.example +83 -77
  4. package/.github/ISSUE_TEMPLATE/bug_report.yml +36 -36
  5. package/.github/ISSUE_TEMPLATE/config.yml +11 -11
  6. package/.github/ISSUE_TEMPLATE/feature_request.yml +26 -26
  7. package/.github/PULL_REQUEST_TEMPLATE.md +7 -7
  8. package/.github/copilot-instructions.md +146 -146
  9. package/.github/workflows/build-image.yml +65 -65
  10. package/.github/workflows/ci-premerge-check.yml +23 -23
  11. package/.github/workflows/e2e.yml +63 -63
  12. package/.github/workflows/lint-and-format.yml +32 -32
  13. package/.prettierignore +64 -64
  14. package/CHANGELOG.md +46 -44
  15. package/CLAUDE_PLUGIN.md +104 -104
  16. package/CODE_OF_CONDUCT.md +128 -128
  17. package/CONTRIBUTING.md +125 -125
  18. package/Dockerfile +30 -30
  19. package/GITHUB_OAUTH_SETUP.md +49 -49
  20. package/GOOGLE_OAUTH_SETUP.md +148 -148
  21. package/LICENSE +201 -201
  22. package/README.md +182 -182
  23. package/assets/Dark.svg +23 -23
  24. package/auth/package.json +30 -28
  25. package/auth/src/lib/broadcastService.ts +4 -4
  26. package/auth/src/lib/insforge.ts +8 -0
  27. package/auth/src/main.tsx +2 -4
  28. package/auth/src/pages/SignInPage.tsx +5 -2
  29. package/auth/src/pages/SignUpPage.tsx +5 -2
  30. package/auth/src/pages/VerifyEmailPage.tsx +18 -0
  31. package/auth/tsconfig.json +33 -32
  32. package/auth/tsconfig.node.json +11 -11
  33. package/backend/package.json +82 -75
  34. package/backend/src/api/middlewares/rate-limiters.ts +127 -127
  35. package/backend/src/api/routes/ai/index.routes.ts +475 -468
  36. package/backend/src/api/routes/auth/index.routes.ts +720 -570
  37. package/backend/src/api/routes/auth/oauth.routes.ts +478 -448
  38. package/backend/src/api/routes/database/advance.routes.ts +37 -16
  39. package/backend/src/api/routes/database/index.routes.ts +80 -1
  40. package/backend/src/api/routes/database/records.routes.ts +48 -184
  41. package/backend/src/api/routes/database/rpc.routes.ts +69 -0
  42. package/backend/src/api/routes/database/tables.routes.ts +0 -14
  43. package/backend/src/api/routes/deployments/index.routes.ts +192 -0
  44. package/backend/src/api/routes/docs/index.routes.ts +76 -76
  45. package/backend/src/api/routes/email/index.routes.ts +35 -0
  46. package/backend/src/api/routes/functions/index.routes.ts +21 -15
  47. package/backend/src/api/routes/metadata/index.routes.ts +38 -0
  48. package/backend/src/api/routes/realtime/channels.routes.ts +81 -0
  49. package/backend/src/api/routes/realtime/index.routes.ts +12 -0
  50. package/backend/src/api/routes/realtime/messages.routes.ts +48 -0
  51. package/backend/src/api/routes/realtime/permissions.routes.ts +19 -0
  52. package/backend/src/api/routes/storage/index.routes.ts +18 -12
  53. package/backend/src/api/routes/usage/index.routes.ts +6 -4
  54. package/backend/src/api/routes/webhooks/index.routes.ts +109 -0
  55. package/backend/src/infra/database/database.manager.ts +14 -11
  56. package/backend/src/infra/database/migrations/000_create-base-tables.sql +141 -141
  57. package/backend/src/infra/database/migrations/001_create-helper-functions.sql +40 -40
  58. package/backend/src/infra/database/migrations/002_rename-auth-tables.sql +29 -29
  59. package/backend/src/infra/database/migrations/003_create-users-table.sql +55 -55
  60. package/backend/src/infra/database/migrations/004_add-reload-postgrest-func.sql +23 -23
  61. package/backend/src/infra/database/migrations/005_enable-project-admin-modify-users.sql +29 -29
  62. package/backend/src/infra/database/migrations/006_modify-ai-usage-table.sql +24 -24
  63. package/backend/src/infra/database/migrations/007_drop-metadata-table.sql +1 -1
  64. package/backend/src/infra/database/migrations/008_add-system-tables.sql +76 -76
  65. package/backend/src/infra/database/migrations/009_add-function-secrets.sql +23 -23
  66. package/backend/src/infra/database/migrations/010_modify-ai-config-modalities.sql +93 -93
  67. package/backend/src/infra/database/migrations/011_refactor-secrets-table.sql +15 -15
  68. package/backend/src/infra/database/migrations/012_add-storage-uploaded-by.sql +7 -7
  69. package/backend/src/infra/database/migrations/013_create-auth-schema-functions.sql +44 -44
  70. package/backend/src/infra/database/migrations/014_add-updated-at-trigger-user-table.sql +7 -7
  71. package/backend/src/infra/database/migrations/015_create-auth-config-and-email-otp-tables.sql +59 -59
  72. package/backend/src/infra/database/migrations/016_update-auth-config-and-email-otp.sql +24 -24
  73. package/backend/src/infra/database/migrations/017_create-realtime-schema.sql +233 -0
  74. package/backend/src/infra/database/migrations/018_schema-rework.sql +441 -0
  75. package/backend/src/infra/database/migrations/019_create-deployments-table.sql +36 -0
  76. package/backend/src/infra/database/migrations/020_add-audio-modality.sql +11 -0
  77. package/backend/src/infra/database/migrations/bootstrap/bootstrap-migrations.js +103 -0
  78. package/backend/src/infra/realtime/realtime.manager.ts +246 -0
  79. package/backend/src/infra/realtime/webhook-sender.ts +82 -0
  80. package/backend/src/infra/security/token.manager.ts +216 -125
  81. package/backend/src/infra/socket/socket.manager.ts +198 -64
  82. package/backend/src/providers/ai/openrouter.provider.ts +24 -12
  83. package/backend/src/providers/database/base.provider.ts +39 -0
  84. package/backend/src/providers/database/cloud.provider.ts +159 -0
  85. package/backend/src/providers/deployments/vercel.provider.ts +516 -0
  86. package/backend/src/providers/email/base.provider.ts +4 -7
  87. package/backend/src/providers/email/cloud.provider.ts +84 -0
  88. package/backend/src/providers/oauth/apple.provider.ts +266 -0
  89. package/backend/src/providers/oauth/index.ts +1 -0
  90. package/backend/src/server.ts +329 -284
  91. package/backend/src/services/ai/ai-config.service.ts +6 -6
  92. package/backend/src/services/ai/ai-model.service.ts +60 -60
  93. package/backend/src/services/ai/ai-usage.service.ts +7 -7
  94. package/backend/src/services/ai/chat-completion.service.ts +415 -220
  95. package/backend/src/services/ai/helpers.ts +64 -64
  96. package/backend/src/services/ai/image-generation.service.ts +3 -3
  97. package/backend/src/services/ai/index.ts +13 -13
  98. package/backend/src/services/auth/auth-config.service.ts +4 -4
  99. package/backend/src/services/auth/auth-otp.service.ts +6 -6
  100. package/backend/src/services/auth/auth.service.ts +148 -74
  101. package/backend/src/services/auth/index.ts +4 -4
  102. package/backend/src/services/auth/oauth-config.service.ts +12 -12
  103. package/backend/src/services/database/database-advance.service.ts +19 -55
  104. package/backend/src/services/database/database-table.service.ts +38 -94
  105. package/backend/src/services/database/database.service.ts +127 -0
  106. package/backend/src/services/database/postgrest-proxy.service.ts +165 -0
  107. package/backend/src/services/deployments/deployment.service.ts +693 -0
  108. package/backend/src/services/email/email.service.ts +5 -7
  109. package/backend/src/services/functions/function.service.ts +61 -41
  110. package/backend/src/services/logs/audit.service.ts +10 -10
  111. package/backend/src/services/realtime/index.ts +3 -0
  112. package/backend/src/services/realtime/realtime-auth.service.ts +104 -0
  113. package/backend/src/services/realtime/realtime-channel.service.ts +237 -0
  114. package/backend/src/services/realtime/realtime-message.service.ts +260 -0
  115. package/backend/src/services/secrets/secret.service.ts +101 -27
  116. package/backend/src/services/storage/storage.service.ts +30 -30
  117. package/backend/src/services/usage/usage.service.ts +6 -6
  118. package/backend/src/types/ai.ts +8 -0
  119. package/backend/src/types/auth.ts +16 -1
  120. package/backend/src/types/database.ts +2 -0
  121. package/backend/src/types/deployments.ts +33 -0
  122. package/backend/src/types/realtime.ts +18 -0
  123. package/backend/src/types/socket.ts +7 -31
  124. package/backend/src/types/storage.ts +1 -1
  125. package/backend/src/types/webhooks.ts +45 -0
  126. package/backend/src/utils/cookies.ts +34 -0
  127. package/backend/src/utils/environment.ts +0 -14
  128. package/backend/src/utils/s3-config-loader.ts +64 -0
  129. package/backend/src/utils/seed.ts +79 -43
  130. package/backend/src/utils/sql-parser.ts +216 -0
  131. package/backend/src/utils/utils.ts +114 -114
  132. package/backend/src/utils/validations.ts +10 -10
  133. package/backend/tests/README.md +133 -133
  134. package/backend/tests/cleanup-all-test-data.sh +230 -230
  135. package/backend/tests/cloud/test-s3-multitenant.sh +131 -131
  136. package/backend/tests/local/comprehensive-curl-tests.sh +155 -155
  137. package/backend/tests/local/test-ai-config.sh +129 -129
  138. package/backend/tests/local/test-ai-usage.sh +80 -80
  139. package/backend/tests/local/test-auth-router.sh +143 -143
  140. package/backend/tests/local/test-database-router.sh +222 -222
  141. package/backend/tests/local/test-e2e.sh +240 -240
  142. package/backend/tests/local/test-fk-errors.sh +96 -96
  143. package/backend/tests/local/test-functions.sh +123 -123
  144. package/backend/tests/local/test-id-field.sh +200 -200
  145. package/backend/tests/local/test-logs.sh +132 -132
  146. package/backend/tests/local/test-public-bucket.sh +264 -264
  147. package/backend/tests/local/test-rpc.sh +141 -0
  148. package/backend/tests/local/test-secrets.sh +249 -249
  149. package/backend/tests/local/test-serverless-functions.sh.disabled +325 -325
  150. package/backend/tests/local/test-traditional-rest.sh +208 -208
  151. package/backend/tests/manual/README.md +50 -50
  152. package/backend/tests/manual/create-large-table-simple.sql +10 -10
  153. package/backend/tests/manual/seed-large-table.sql +100 -100
  154. package/backend/tests/manual/setup-large-table-extras.sql +33 -33
  155. package/backend/tests/manual/test-ai-model-plugins.sh +258 -0
  156. package/backend/tests/manual/test-bulk-upsert.sh +409 -409
  157. package/backend/tests/manual/test-database-advance.sh +296 -296
  158. package/backend/tests/manual/test-postgrest-stability.sh +191 -191
  159. package/backend/tests/manual/test-rawsql-export-import.sh +411 -411
  160. package/backend/tests/manual/test-rawsql-modes.sh +244 -244
  161. package/backend/tests/manual/test-universal-storage.sh +263 -263
  162. package/backend/tests/manual/test-users.sql +17 -17
  163. package/backend/tests/run-all-tests.sh +139 -139
  164. package/backend/tests/setup.ts +0 -0
  165. package/backend/tests/test-config.sh +338 -338
  166. package/backend/tests/unit/analyze-query.test.ts +697 -0
  167. package/backend/tests/unit/database-advance.test.ts +326 -0
  168. package/backend/tests/unit/helpers.test.ts +2 -2
  169. package/backend/tsconfig.json +22 -22
  170. package/claude-plugin/.claude-plugin/plugin.json +24 -24
  171. package/claude-plugin/README.md +133 -133
  172. package/claude-plugin/skills/insforge-schema-patterns/SKILL.md +273 -270
  173. package/docker-compose.prod.yml +204 -200
  174. package/docker-compose.yml +232 -228
  175. package/docker-init/db/db-init.sql +97 -97
  176. package/docker-init/db/jwt.sql +5 -5
  177. package/docker-init/db/postgresql.conf +16 -16
  178. package/docker-init/logs/vector.yml +236 -236
  179. package/docs/README.md +44 -44
  180. package/docs/agent-docs/deployment.md +79 -0
  181. package/docs/agent-docs/real-time.md +269 -0
  182. package/docs/changelog.mdx +212 -67
  183. package/docs/core-concepts/ai/architecture.mdx +350 -372
  184. package/docs/core-concepts/ai/sdk.mdx +238 -213
  185. package/docs/core-concepts/authentication/architecture.mdx +276 -278
  186. package/docs/core-concepts/authentication/sdk.mdx +710 -414
  187. package/docs/core-concepts/authentication/ui-components/customization.mdx +733 -529
  188. package/docs/core-concepts/authentication/ui-components/nextjs.mdx +247 -221
  189. package/docs/core-concepts/authentication/ui-components/react-router.mdx +183 -184
  190. package/docs/core-concepts/authentication/ui-components/react.mdx +136 -129
  191. package/docs/core-concepts/database/architecture.mdx +292 -255
  192. package/docs/core-concepts/database/pgvector.mdx +138 -0
  193. package/docs/core-concepts/database/sdk.mdx +382 -382
  194. package/docs/core-concepts/deployments/architecture.mdx +152 -0
  195. package/docs/core-concepts/email/architecture.mdx +103 -0
  196. package/docs/core-concepts/email/sdk.mdx +53 -0
  197. package/docs/core-concepts/functions/architecture.mdx +105 -105
  198. package/docs/core-concepts/functions/sdk.mdx +183 -184
  199. package/docs/core-concepts/realtime/architecture.mdx +446 -0
  200. package/docs/core-concepts/realtime/sdk.mdx +409 -0
  201. package/docs/core-concepts/storage/architecture.mdx +243 -243
  202. package/docs/core-concepts/storage/sdk.mdx +253 -253
  203. package/docs/deployment/README.md +94 -94
  204. package/docs/deployment/deploy-to-aws-ec2.md +564 -564
  205. package/docs/deployment/deploy-to-azure-virtual-machines.md +312 -312
  206. package/docs/deployment/deploy-to-google-cloud-compute-engine.md +613 -613
  207. package/docs/deployment/deploy-to-render.md +441 -441
  208. package/docs/deprecated/insforge-auth-api.md +214 -214
  209. package/docs/deprecated/insforge-auth-sdk.md +99 -99
  210. package/docs/deprecated/insforge-db-api.md +358 -358
  211. package/docs/deprecated/insforge-db-sdk.md +139 -139
  212. package/docs/deprecated/insforge-debug-sdk.md +156 -156
  213. package/docs/deprecated/insforge-debug.md +64 -64
  214. package/docs/deprecated/insforge-instructions.md +123 -123
  215. package/docs/deprecated/insforge-project.md +117 -117
  216. package/docs/deprecated/insforge-storage-api.md +278 -278
  217. package/docs/deprecated/insforge-storage-sdk.md +158 -158
  218. package/docs/docs.json +240 -210
  219. package/docs/examples/framework-guides/nextjs.mdx +131 -131
  220. package/docs/examples/framework-guides/nuxt.mdx +165 -165
  221. package/docs/examples/framework-guides/react.mdx +165 -165
  222. package/docs/examples/framework-guides/svelte.mdx +153 -153
  223. package/docs/examples/framework-guides/vue.mdx +159 -159
  224. package/docs/examples/overview.mdx +67 -67
  225. package/docs/favicon.png +0 -0
  226. package/docs/favicon.svg +4 -19
  227. package/docs/images/changelog/dec-2025/ai-integration.png +0 -0
  228. package/docs/images/changelog/dec-2025/ai-models.webp +0 -0
  229. package/docs/images/changelog/dec-2025/alipay-payment.webp +0 -0
  230. package/docs/images/changelog/dec-2025/apple-login.jpg +0 -0
  231. package/docs/images/changelog/dec-2025/apple-oauth.mp4 +0 -0
  232. package/docs/images/changelog/dec-2025/mcp-installer.png +0 -0
  233. package/docs/images/changelog/dec-2025/moreModels.png +0 -0
  234. package/docs/images/changelog/dec-2025/multi-region.webp +0 -0
  235. package/docs/images/changelog/dec-2025/postgres-connection.webp +0 -0
  236. package/docs/images/changelog/dec-2025/realtime-module.jpg +0 -0
  237. package/docs/images/changelog/dec-2025/realtime2.png +0 -0
  238. package/docs/images/icons/ai.svg +4 -4
  239. package/docs/images/logos/nextjs.svg +4 -4
  240. package/docs/images/logos/nuxt.svg +4 -4
  241. package/docs/images/logos/react.svg +5 -5
  242. package/docs/images/logos/svelte.svg +4 -4
  243. package/docs/images/logos/vue.svg +5 -5
  244. package/docs/images/mcp-setup/CC-MCP-1.mp4 +0 -0
  245. package/docs/images/mcp-setup/CC-MCP-2.mp4 +0 -0
  246. package/docs/images/mcp-setup/Cursor-MCP-1.mp4 +0 -0
  247. package/docs/images/mcp-setup/Cursor-MCP-2.mp4 +0 -0
  248. package/docs/images/mcp-setup/Cursor-MCP-3.mp4 +0 -0
  249. package/docs/images/mcp-setup/claude-code-connect.png +0 -0
  250. package/docs/images/mcp-setup/cline-1.png +0 -0
  251. package/docs/images/mcp-setup/cline-2.png +0 -0
  252. package/docs/images/mcp-setup/cline-3.png +0 -0
  253. package/docs/images/mcp-setup/connect-project.png +0 -0
  254. package/docs/images/mcp-setup/copilot-1.png +0 -0
  255. package/docs/images/mcp-setup/copilot-2.png +0 -0
  256. package/docs/images/mcp-setup/copilot-3.png +0 -0
  257. package/docs/images/mcp-setup/mcp-json-1.png +0 -0
  258. package/docs/images/mcp-setup/mcp-json-2.png +0 -0
  259. package/docs/images/mcp-setup/qoder-1.png +0 -0
  260. package/docs/images/mcp-setup/qoder-2.png +0 -0
  261. package/docs/images/mcp-setup/roocode-1.png +0 -0
  262. package/docs/images/mcp-setup/roocode-2.png +0 -0
  263. package/docs/images/mcp-setup/trae-1.png +0 -0
  264. package/docs/images/mcp-setup/trae-2.png +0 -0
  265. package/docs/images/mcp-setup/trae-3.png +0 -0
  266. package/docs/images/mcp-setup/trae-4.png +0 -0
  267. package/docs/images/mcp-setup/trae-5.png +0 -0
  268. package/docs/images/mcp-setup/windsurf-1.png +0 -0
  269. package/docs/images/mcp-setup/windsurf-2.png +0 -0
  270. package/docs/insforge-instructions-sdk.md +93 -88
  271. package/docs/introduction.mdx +46 -45
  272. package/docs/logo/dark.svg +22 -22
  273. package/docs/logo/light.svg +20 -20
  274. package/docs/mcp-setup.mdx +332 -0
  275. package/docs/oauth-server.mdx +563 -0
  276. package/docs/partnership.mdx +720 -646
  277. package/docs/quickstart.mdx +82 -82
  278. package/docs/showcase.mdx +52 -52
  279. package/docs/snippets/sdk-installation.mdx +21 -21
  280. package/docs/snippets/service-icons.mdx +27 -27
  281. package/docs/vscode-extension.mdx +74 -0
  282. package/eslint.config.js +1 -0
  283. package/examples/oauth/frontend-oauth-example.html +250 -250
  284. package/examples/response-examples.md +443 -443
  285. package/frontend/components.json +17 -17
  286. package/frontend/package.json +69 -69
  287. package/frontend/src/App.tsx +8 -3
  288. package/frontend/src/assets/icons/checkbox_checked.svg +6 -6
  289. package/frontend/src/assets/icons/checkbox_undetermined.svg +6 -6
  290. package/frontend/src/assets/icons/checked.svg +3 -3
  291. package/frontend/src/assets/icons/connected.svg +3 -3
  292. package/frontend/src/assets/icons/error.svg +3 -3
  293. package/frontend/src/assets/icons/loader.svg +9 -9
  294. package/frontend/src/assets/icons/pencil.svg +4 -4
  295. package/frontend/src/assets/icons/refresh.svg +4 -4
  296. package/frontend/src/assets/icons/step_active.svg +3 -3
  297. package/frontend/src/assets/icons/step_inactive.svg +11 -11
  298. package/frontend/src/assets/icons/warning.svg +3 -3
  299. package/frontend/src/assets/logos/antigravity.svg +1 -0
  300. package/frontend/src/assets/logos/apple.svg +3 -3
  301. package/frontend/src/assets/logos/claude_code.svg +3 -3
  302. package/frontend/src/assets/logos/cline.svg +6 -6
  303. package/frontend/src/assets/logos/copilot.svg +10 -0
  304. package/frontend/src/assets/logos/cursor.svg +20 -20
  305. package/frontend/src/assets/logos/deepseek.svg +139 -0
  306. package/frontend/src/assets/logos/discord.svg +8 -8
  307. package/frontend/src/assets/logos/facebook.svg +3 -3
  308. package/frontend/src/assets/logos/gemini.svg +19 -19
  309. package/frontend/src/assets/logos/github.svg +5 -5
  310. package/frontend/src/assets/logos/google.svg +13 -13
  311. package/frontend/src/assets/logos/grok.svg +10 -10
  312. package/frontend/src/assets/logos/insforge_dark.svg +15 -15
  313. package/frontend/src/assets/logos/insforge_light.svg +15 -15
  314. package/frontend/src/assets/logos/instagram.svg +1 -1
  315. package/frontend/src/assets/logos/kiro.svg +9 -0
  316. package/frontend/src/assets/logos/linkedin.svg +3 -3
  317. package/frontend/src/assets/logos/openai.svg +10 -10
  318. package/frontend/src/assets/logos/qoder.svg +4 -0
  319. package/frontend/src/assets/logos/qwen.svg +15 -0
  320. package/frontend/src/assets/logos/roo_code.svg +9 -9
  321. package/frontend/src/assets/logos/spotify.svg +16 -16
  322. package/frontend/src/assets/logos/tiktok.svg +5 -5
  323. package/frontend/src/assets/logos/trae.svg +3 -3
  324. package/frontend/src/assets/logos/windsurf.svg +10 -10
  325. package/frontend/src/assets/logos/x.svg +3 -3
  326. package/frontend/src/components/CodeBlock.tsx +2 -2
  327. package/frontend/src/components/ConnectCTA.tsx +3 -2
  328. package/frontend/src/components/datagrid/DataGrid.tsx +90 -62
  329. package/frontend/src/components/datagrid/datagridTypes.tsx +2 -1
  330. package/frontend/src/components/datagrid/index.ts +1 -1
  331. package/frontend/src/components/index.ts +0 -1
  332. package/frontend/src/components/layout/AppHeader.tsx +13 -37
  333. package/frontend/src/components/layout/AppSidebar.tsx +85 -100
  334. package/frontend/src/components/layout/Layout.tsx +34 -32
  335. package/frontend/src/components/layout/PrimaryMenu.tsx +12 -4
  336. package/frontend/src/components/radix/Select.tsx +151 -151
  337. package/frontend/src/features/ai/components/AIConfigCard.tsx +200 -200
  338. package/frontend/src/features/ai/components/AIEmptyState.tsx +23 -23
  339. package/frontend/src/features/ai/components/ModalityFilterSidebar.tsx +102 -101
  340. package/frontend/src/features/ai/components/ModelSelectionDialog.tsx +135 -135
  341. package/frontend/src/features/ai/components/ModelSelectionGrid.tsx +51 -51
  342. package/frontend/src/features/ai/components/SystemPromptDialog.tsx +118 -118
  343. package/frontend/src/features/ai/components/index.ts +6 -6
  344. package/frontend/src/features/ai/helpers.ts +147 -141
  345. package/frontend/src/features/ai/{page → pages}/AIPage.tsx +166 -166
  346. package/frontend/src/features/auth/components/AuthPreview.tsx +96 -96
  347. package/frontend/src/features/auth/components/OAuthConfigDialog.tsx +1 -0
  348. package/frontend/src/features/auth/components/UsersDataGrid.tsx +61 -31
  349. package/frontend/src/features/auth/components/index.ts +5 -5
  350. package/frontend/src/features/auth/helpers.tsx +8 -0
  351. package/frontend/src/features/auth/{page → pages}/AuthMethodsPage.tsx +275 -275
  352. package/frontend/src/features/auth/{page → pages}/UsersPage.tsx +0 -28
  353. package/frontend/src/features/dashboard/{page → pages}/DashboardPage.tsx +1 -1
  354. package/frontend/src/features/database/components/DatabaseDataGrid.tsx +0 -2
  355. package/frontend/src/features/database/components/ForeignKeyCell.tsx +38 -11
  356. package/frontend/src/features/database/components/ForeignKeyPopover.tsx +18 -8
  357. package/frontend/src/features/database/components/LinkRecordModal.tsx +61 -13
  358. package/frontend/src/features/database/components/RecordFormField.tsx +1 -1
  359. package/frontend/src/features/database/components/SQLModal.tsx +75 -0
  360. package/frontend/src/features/database/components/TableForm.tsx +0 -4
  361. package/frontend/src/features/database/components/TableSidebar.tsx +0 -3
  362. package/frontend/src/features/database/components/TablesEmptyState.tsx +1 -1
  363. package/frontend/src/features/database/components/TemplatePreview.tsx +1 -2
  364. package/frontend/src/features/database/constants.ts +16 -28
  365. package/frontend/src/features/database/hooks/useCSVImport.ts +3 -2
  366. package/frontend/src/features/database/hooks/useDatabase.ts +66 -0
  367. package/frontend/src/features/database/hooks/useRawSQL.ts +3 -2
  368. package/frontend/src/features/database/hooks/useTables.ts +30 -28
  369. package/frontend/src/features/database/index.ts +1 -0
  370. package/frontend/src/features/database/{page → pages}/FunctionsPage.tsx +29 -42
  371. package/frontend/src/features/database/{page → pages}/IndexesPage.tsx +34 -51
  372. package/frontend/src/features/database/{page → pages}/PoliciesPage.tsx +42 -58
  373. package/frontend/src/features/database/{page → pages}/SQLEditorPage.tsx +2 -2
  374. package/frontend/src/features/database/{page → pages}/TablesPage.tsx +0 -42
  375. package/frontend/src/features/database/{page → pages}/TriggersPage.tsx +34 -51
  376. package/frontend/src/features/database/services/advance.service.ts +1 -41
  377. package/frontend/src/features/database/services/database.service.ts +55 -0
  378. package/frontend/src/features/database/services/record.service.ts +4 -20
  379. package/frontend/src/features/database/services/table.service.ts +1 -10
  380. package/frontend/src/features/database/templates/ai-chatbot.ts +6 -6
  381. package/frontend/src/features/database/templates/ecommerce-platform.ts +2 -2
  382. package/frontend/src/features/database/templates/instagram-clone.ts +10 -10
  383. package/frontend/src/features/database/templates/notion-clone.ts +8 -8
  384. package/frontend/src/features/database/templates/reddit-clone.ts +10 -10
  385. package/frontend/src/features/deployments/components/DeploymentRow.tsx +93 -0
  386. package/frontend/src/features/deployments/components/DeploymentsEmptyState.tsx +15 -0
  387. package/frontend/src/features/deployments/hooks/useDeployments.ts +157 -0
  388. package/frontend/src/features/deployments/pages/DeploymentsPage.tsx +318 -0
  389. package/frontend/src/features/deployments/services/deployments.service.ts +63 -0
  390. package/frontend/src/features/functions/components/FunctionRow.tsx +72 -72
  391. package/frontend/src/features/functions/components/FunctionsSidebar.tsx +56 -56
  392. package/frontend/src/features/functions/components/SecretRow.tsx +3 -3
  393. package/frontend/src/features/functions/components/index.ts +5 -5
  394. package/frontend/src/features/functions/hooks/useFunctions.ts +5 -4
  395. package/frontend/src/features/functions/hooks/useSecrets.ts +6 -9
  396. package/frontend/src/features/functions/{page → pages}/FunctionsPage.tsx +21 -44
  397. package/frontend/src/features/functions/{page → pages}/SecretsPage.tsx +118 -116
  398. package/frontend/src/features/functions/services/function.service.ts +8 -25
  399. package/frontend/src/features/functions/services/secret.service.ts +23 -41
  400. package/frontend/src/features/login/{page → pages}/CloudLoginPage.tsx +125 -118
  401. package/frontend/src/features/logs/components/LogDetailPanel.tsx +41 -0
  402. package/frontend/src/features/logs/components/LogsDataGrid.tsx +32 -1
  403. package/frontend/src/features/logs/components/index.ts +1 -0
  404. package/frontend/src/features/logs/hooks/useMcpUsage.ts +13 -66
  405. package/frontend/src/features/logs/{page → pages}/LogsPage.tsx +36 -6
  406. package/frontend/src/features/onboard/components/ApiCredentialsSection.tsx +59 -0
  407. package/frontend/src/features/onboard/components/ConnectionStringSection.tsx +180 -0
  408. package/frontend/src/features/onboard/components/McpConnectionSection.tsx +159 -0
  409. package/frontend/src/features/onboard/components/OnboardingController.tsx +68 -0
  410. package/frontend/src/features/onboard/components/OnboardingModal.tsx +121 -267
  411. package/frontend/src/features/onboard/components/ShowPasswordButton.tsx +21 -0
  412. package/frontend/src/features/onboard/components/index.ts +9 -4
  413. package/frontend/src/features/onboard/components/mcp/CursorDeeplinkGenerator.tsx +1 -1
  414. package/frontend/src/features/onboard/components/mcp/QoderDeeplinkGenerator.tsx +36 -0
  415. package/frontend/src/features/onboard/components/mcp/helpers.tsx +123 -98
  416. package/frontend/src/features/onboard/components/mcp/index.ts +4 -3
  417. package/frontend/src/features/onboard/index.ts +17 -13
  418. package/frontend/src/features/realtime/components/ChannelRow.tsx +83 -0
  419. package/frontend/src/features/realtime/components/EditChannelModal.tsx +246 -0
  420. package/frontend/src/features/realtime/components/MessageRow.tsx +85 -0
  421. package/frontend/src/features/realtime/components/RealtimeEmptyState.tsx +30 -0
  422. package/frontend/src/features/realtime/hooks/useRealtime.ts +218 -0
  423. package/frontend/src/features/realtime/index.ts +11 -0
  424. package/frontend/src/features/realtime/pages/RealtimeChannelsPage.tsx +172 -0
  425. package/frontend/src/features/realtime/pages/RealtimeMessagesPage.tsx +211 -0
  426. package/frontend/src/features/realtime/pages/RealtimePermissionsPage.tsx +191 -0
  427. package/frontend/src/features/realtime/services/realtime.service.ts +107 -0
  428. package/frontend/src/features/settings/pages/SettingsPage.tsx +349 -0
  429. package/frontend/src/features/storage/{page → pages}/StoragePage.tsx +1 -29
  430. package/frontend/src/features/visualizer/components/AuthNode.tsx +4 -4
  431. package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +24 -11
  432. package/frontend/src/features/visualizer/{page → pages}/VisualizerPage.tsx +11 -36
  433. package/frontend/src/index.css +249 -249
  434. package/frontend/src/lib/contexts/ModalContext.tsx +35 -0
  435. package/frontend/src/lib/contexts/SocketContext.tsx +119 -75
  436. package/frontend/src/lib/hooks/useMetadata.ts +45 -1
  437. package/frontend/src/lib/hooks/useModal.tsx +2 -0
  438. package/frontend/src/lib/routing/AppRoutes.tsx +103 -84
  439. package/frontend/src/lib/services/metadata.service.ts +20 -3
  440. package/frontend/src/lib/utils/cloudMessaging.ts +1 -1
  441. package/frontend/src/lib/utils/menuItems.ts +223 -183
  442. package/frontend/src/lib/utils/utils.ts +196 -183
  443. package/frontend/tsconfig.json +25 -25
  444. package/frontend/tsconfig.node.json +9 -9
  445. package/functions/deno.json +24 -24
  446. package/functions/server.ts +6 -6
  447. package/functions/worker-template.js +1 -1
  448. package/i18n/README.ar.md +130 -130
  449. package/i18n/README.de.md +130 -130
  450. package/i18n/README.es.md +154 -154
  451. package/i18n/README.fr.md +134 -134
  452. package/i18n/README.hi.md +129 -129
  453. package/i18n/README.ja.md +174 -174
  454. package/i18n/README.ko.md +136 -136
  455. package/i18n/README.pt-BR.md +131 -131
  456. package/i18n/README.ru.md +129 -129
  457. package/i18n/README.zh-CN.md +133 -133
  458. package/openapi/ai.yaml +825 -715
  459. package/openapi/auth.yaml +1324 -1244
  460. package/openapi/email.yaml +158 -0
  461. package/openapi/functions.yaml +475 -475
  462. package/openapi/health.yaml +29 -29
  463. package/openapi/logs.yaml +221 -223
  464. package/openapi/metadata.yaml +175 -177
  465. package/openapi/realtime.yaml +699 -0
  466. package/openapi/records.yaml +381 -381
  467. package/openapi/secrets.yaml +370 -370
  468. package/openapi/storage.yaml +875 -875
  469. package/openapi/tables.yaml +462 -463
  470. package/package.json +97 -97
  471. package/shared-schemas/package.json +31 -31
  472. package/shared-schemas/src/ai-api.schema.ts +251 -143
  473. package/shared-schemas/src/ai.schema.ts +8 -4
  474. package/shared-schemas/src/auth-api.schema.ts +380 -339
  475. package/shared-schemas/src/auth.schema.ts +18 -11
  476. package/shared-schemas/src/cloud-events.schema.ts +26 -0
  477. package/shared-schemas/src/database-api.schema.ts +32 -1
  478. package/shared-schemas/src/database.schema.ts +39 -0
  479. package/shared-schemas/src/deployments-api.schema.ts +55 -0
  480. package/shared-schemas/src/deployments.schema.ts +30 -0
  481. package/shared-schemas/src/docs.schema.ts +32 -0
  482. package/shared-schemas/src/email-api.schema.ts +30 -0
  483. package/shared-schemas/src/functions-api.schema.ts +13 -4
  484. package/shared-schemas/src/functions.schema.ts +1 -1
  485. package/shared-schemas/src/index.ts +22 -14
  486. package/shared-schemas/src/metadata.schema.ts +39 -4
  487. package/shared-schemas/src/realtime-api.schema.ts +111 -0
  488. package/shared-schemas/src/realtime.schema.ts +143 -0
  489. package/shared-schemas/src/secrets-api.schema.ts +44 -0
  490. package/shared-schemas/src/secrets.schema.ts +15 -0
  491. package/shared-schemas/tsconfig.json +21 -21
  492. package/tsconfig.json +7 -7
  493. package/zeabur/README.md +26 -13
  494. package/zeabur/template.yml +1001 -1032
  495. package/.cursor/rules/cursor-rules.mdc +0 -94
  496. package/backend/src/types/profile.ts +0 -55
  497. package/frontend/src/components/ProjectInfoModal.tsx +0 -128
  498. package/frontend/src/features/database/hooks/useFullMetadata.ts +0 -18
  499. package/test-gemini.sh +0 -35
  500. package/test-usage-admin.sh +0 -57
  501. package/test-usage.sh +0 -50
  502. /package/frontend/src/features/auth/{page → pages}/ConfigurationPage.tsx +0 -0
  503. /package/frontend/src/features/database/{page → pages}/TemplatesPage.tsx +0 -0
  504. /package/frontend/src/features/login/{page → pages}/LoginPage.tsx +0 -0
  505. /package/frontend/src/features/logs/{page → pages}/AuditsPage.tsx +0 -0
  506. /package/frontend/src/features/logs/{page → pages}/MCPLogsPage.tsx +0 -0
@@ -1,613 +1,613 @@
1
- # Deploy InsForge to Google Cloud Compute Engine
2
-
3
- This guide will walk you through deploying InsForge on Google Cloud Compute Engine using Docker Compose.
4
-
5
- ## 📋 Prerequisites
6
-
7
- - Google Cloud Account with billing enabled
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 Compute Engine Instance
14
-
15
- #### 1.1 Create Google Cloud Project
16
-
17
- 1. **Log into Google Cloud Console** at [console.cloud.google.com](https://console.cloud.google.com)
18
- 2. **Click "Select a project"** in the top navigation bar
19
- 3. **Click "New Project"**
20
- 4. **Enter project name** (e.g., `insforge-deployment`)
21
- 5. **Click "Create"**
22
- 6. **Wait for project creation to complete**
23
-
24
- #### 1.2 Enable Required APIs
25
-
26
- 1. In your project, navigate to **APIs & Services** → **Library**
27
- 2. Search for and enable these APIs:
28
- - **Compute Engine API**
29
- - **Cloud Storage API** (if using for backups)
30
- - **Cloud SQL Admin API** (if using Cloud SQL)
31
-
32
- #### 1.3 Create Compute Engine Instance
33
-
34
- 1. Navigate to **Compute Engine** → **VM instances**
35
- 2. Click **"Create Instance"**
36
- 3. Configure your instance:
37
- - **Name**: `insforge-server` (or your preferred name)
38
- - **Region**: Choose a region close to your users
39
- - **Zone**: Select an availability zone (e.g., us-central1-a)
40
- - **Machine configuration**:
41
- - **Series**: N2 or E2
42
- - **Machine type**: `e2-medium` or larger (minimum 2 vCPU, 4 GB RAM)
43
- - For production: `e2-standard-2` (2 vCPU, 8 GB RAM) recommended
44
- - For testing: `e2-small` (2 vCPU, 2 GB RAM) minimum
45
- - **Boot disk**:
46
- - **Operating system**: Ubuntu LTS (Ubuntu 22.04 LTS or newer)
47
- - **Boot disk type**: Balanced persistent disk
48
- - **Size**: 30 GB (minimum 20 GB recommended)
49
- - **Firewall**:
50
- - Allow HTTP traffic: **Checked**
51
- - Allow HTTPS traffic: **Checked**
52
-
53
- #### 1.4 Configure Firewall Rules
54
-
55
- 1. Navigate to **VPC network** → **Firewall**
56
- 2. Create or modify firewall rules to allow the following ports:
57
-
58
- | Name | Direction | Targets | Protocols/ports | Source filters |
59
- |------|-----------|---------|-----------------|----------------|
60
- | insforge-ssh | Ingress | insforge-server | tcp:22 | Your IP address |
61
- | insforge-http | Ingress | insforge-server | tcp:80 | 0.0.0.0/0 |
62
- | insforge-https | Ingress | insforge-server | tcp:443 | 0.0.0.0/0 |
63
- | insforge-backend | Ingress | insforge-server | tcp:7130 | 0.0.0.0/0 |
64
- | insforge-frontend | Ingress | insforge-server | tcp:7131 | 0.0.0.0/0 |
65
- | insforge-deno | Ingress | insforge-server | tcp:7133 | 0.0.0.0/0 |
66
- | insforge-postgrest | Ingress | insforge-server | tcp:5430 | 0.0.0.0/0 |
67
- | insforge-postgres | Ingress | insforge-server | tcp:5432 | 0.0.0.0/0 (only if needed externally) |
68
-
69
- > ⚠️ **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.
70
-
71
- ### 2. Connect to Your Compute Engine Instance
72
-
73
- 1. In the Google Cloud Console, go to **Compute Engine** → **VM instances**
74
- 2. Find your instance and click the **SSH** button in the same row, or:
75
-
76
- ```bash
77
- # Use gcloud CLI to SSH (if you have gcloud SDK installed locally)
78
- gcloud compute ssh insforge-server --zone=your-zone
79
- ```
80
-
81
- ### 3. Install Dependencies
82
-
83
- #### 3.1 Update System Packages
84
-
85
- ```bash
86
- sudo apt update && sudo apt upgrade -y
87
- ```
88
-
89
- #### 3.2 Install Docker
90
-
91
- ```bash
92
- # Add Docker's official GPG key
93
- sudo apt-get update
94
- sudo apt-get install ca-certificates curl gnupg
95
- sudo install -m 0755 -d /etc/apt/keyrings
96
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
97
- sudo chmod a+r /etc/apt/keyrings/docker.gpg
98
-
99
- # Add Docker repository
100
- echo \
101
- "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
102
- "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
103
- sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
104
-
105
- # Install Docker
106
- sudo apt-get update
107
- sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
108
- ```
109
-
110
- #### 3.3 Add Your User to Docker Group
111
-
112
- After installing Docker, you need to add your user to the `docker` group to run Docker commands without `sudo`:
113
-
114
- ```bash
115
- # Add your user to the docker group
116
- sudo usermod -aG docker $USER
117
-
118
- # Apply the group changes
119
- newgrp docker
120
- ```
121
-
122
- **Verify it works:**
123
-
124
- ```bash
125
- # This should now work without sudo
126
- docker ps
127
- ```
128
-
129
- > 💡 **Note**: If `docker ps` doesn't work immediately, log out and log back in via SSH, then try again.
130
-
131
- > ⚠️ **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 Compute Engine instance, but be cautious on shared systems.
132
-
133
- #### 3.4 Install Git
134
-
135
- ```bash
136
- sudo apt install git -y
137
- ```
138
-
139
- ### 4. Deploy InsForge
140
-
141
- #### 4.1 Clone Repository
142
-
143
- ```bash
144
- cd ~
145
- git clone https://github.com/insforge/insforge.git
146
- cd insforge
147
- ```
148
-
149
- #### 4.2 Create Environment Configuration
150
-
151
- Create your `.env` file with production settings:
152
-
153
- ```bash
154
- nano .env
155
- ```
156
-
157
- Add the following configuration (customize the values):
158
-
159
- ```env
160
- # ============================================
161
- # Server Configuration
162
- # ============================================
163
- PORT=7130
164
-
165
- # ============================================
166
- # Database Configuration
167
- # ============================================
168
- POSTGRES_USER=postgres
169
- POSTGRES_PASSWORD=your-secure-postgres-password
170
- POSTGRES_DB=insforge
171
-
172
- # ============================================
173
- # Security & Authentication
174
- # ============================================
175
- # IMPORTANT: Generate a strong random secret for production
176
- JWT_SECRET=your-secret-key-here-must-be-32-char-or-above
177
- ENCRYPTION_KEY=your-32-char-encryption-key-here
178
-
179
- # Admin Account (used for initial setup)
180
- ADMIN_EMAIL=admin@example.com
181
- ADMIN_PASSWORD=change-this-password
182
-
183
- # ============================================
184
- # API Configuration
185
- # ============================================
186
- # Replace with your Compute Engine external IP or domain
187
- API_BASE_URL=http://your-external-ip:7130
188
- VITE_API_BASE_URL=http://your-external-ip:7130
189
-
190
- # ============================================
191
- # OAuth Providers (Optional)
192
- # ============================================
193
- # Google OAuth
194
- GOOGLE_CLIENT_ID=
195
- GOOGLE_CLIENT_SECRET=
196
-
197
- # GitHub OAuth
198
- GITHUB_CLIENT_ID=
199
- GITHUB_CLIENT_SECRET=
200
-
201
- # ============================================
202
- # AWS Storage Configuration (Optional)
203
- # ============================================
204
- # For S3 file storage
205
- AWS_S3_BUCKET=
206
- AWS_REGION=
207
- AWS_ACCESS_KEY_ID=
208
- AWS_SECRET_ACCESS_KEY=
209
-
210
- # ============================================
211
- # AI/LLM Configuration (Optional)
212
- # ============================================
213
- OPENROUTER_API_KEY=
214
-
215
- # ============================================
216
- # Multi-tenant Cloud Configuration (Optional)
217
- # ============================================
218
- DEPLOYMENT_ID=
219
- PROJECT_ID=
220
- APP_KEY=
221
- ACCESS_API_KEY=
222
-
223
- # ============================================
224
- # Advanced Configuration
225
- # ============================================
226
- DENO_ENV=production
227
- WORKER_TIMEOUT_MS=30000
228
- ```
229
-
230
- **Generate Secure Secrets:**
231
-
232
- ```bash
233
- # Generate JWT_SECRET (32+ characters)
234
- openssl rand -base64 32
235
-
236
- # Generate ENCRYPTION_KEY (must be exactly 32 characters)
237
- openssl rand -base64 24
238
- ```
239
-
240
- > 💡 **Important**: Save these secrets securely. You'll need them if you ever migrate or restore your instance.
241
-
242
- #### 4.3 Start InsForge Services
243
-
244
- ```bash
245
- # Pull Docker images and start services
246
- docker compose up -d
247
-
248
- # View logs to ensure everything started correctly
249
- docker compose logs -f
250
- ```
251
-
252
- Press `Ctrl+C` to exit log view.
253
-
254
- #### 4.4 Verify Services
255
-
256
- ```bash
257
- # Check running containers
258
- docker compose ps
259
-
260
- # You should see 5 running services:
261
- # - insforge-postgres
262
- # - insforge-postgrest
263
- # - insforge
264
- # - insforge-deno
265
- # - insforge-vector
266
- ```
267
-
268
- ### 5. Access Your InsForge Instance
269
-
270
- #### 5.1 Test Backend API
271
-
272
- ```bash
273
- curl http://your-external-ip:7130/api/health
274
- ```
275
-
276
- Expected response:
277
- ```json
278
- {
279
- "status": "ok",
280
- "version": "1.0.0",
281
- "service": "Insforge OSS Backend",
282
- "timestamp": "2025-10-17T..."
283
- }
284
- ```
285
-
286
- #### 5.2 Access Dashboard
287
-
288
- Open your browser and navigate to:
289
- ```text
290
- http://your-external-ip:7131
291
- ```
292
-
293
- #### 5.3 ⚠️ Important: Custom Admin Credentials Configuration
294
-
295
- > **🚧 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.
296
-
297
- **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.
298
-
299
- **Step 1: Update `.env` file**
300
-
301
- ```env
302
- # In your .env file
303
- ADMIN_EMAIL=your-custom-admin@example.com
304
- ADMIN_PASSWORD=your-secure-password-here
305
-
306
- ```
307
-
308
- After updating your `.env` file, manually edit the login page:
309
-
310
- ```bash
311
- nano ~/insforge/frontend/src/features/login/page/LoginPage.tsx
312
- ```
313
-
314
- Find this section (around line 38-41):
315
- ```typescript
316
- defaultValues: {
317
- email: 'admin@example.com',
318
- password: 'change-this-password',
319
- },
320
- ```
321
-
322
- Update the default values to match your `.env` file:
323
- ```typescript
324
- defaultValues: {
325
- email: 'your-custom-admin@example.com', // Update to match your ADMIN_EMAIL
326
- password: 'your-secure-password-here', // Update to match your ADMIN_PASSWORD
327
- },
328
- ```
329
-
330
- ### 6. Configure Domain (Optional but Recommended)
331
-
332
- #### 6.1 Reserve a Static External IP
333
-
334
- 1. In Google Cloud Console, go to **VPC network** → **External IP addresses**
335
- 2. Click **Reserve Static Address**
336
- 3. **Name**: `insforge-ip`
337
- 4. **Type**: Regional or Global (Regional for VM instances)
338
- 5. **Region**: Same as your VM instance
339
- 6. **Click Reserve**
340
-
341
- #### 6.2 Update DNS Records
342
-
343
- Point your domain's DNS records to the reserved static IP:
344
- ```text
345
- api.yourdomain.com → your-static-external-ip
346
- app.yourdomain.com → your-static-external-ip
347
- ```
348
-
349
- #### 6.3 Install Nginx Reverse Proxy
350
-
351
- ```bash
352
- sudo apt install nginx -y
353
- ```
354
-
355
- Create Nginx configuration:
356
-
357
- ```bash
358
- sudo nano /etc/nginx/sites-available/insforge
359
- ```
360
-
361
- Add the following configuration:
362
-
363
- ```nginx
364
- # Backend API
365
- server {
366
- listen 80;
367
- server_name api.yourdomain.com;
368
-
369
- location / {
370
- proxy_pass http://localhost:7130;
371
- proxy_http_version 1.1;
372
- proxy_set_header Upgrade $http_upgrade;
373
- proxy_set_header Connection 'upgrade';
374
- proxy_set_header Host $host;
375
- proxy_set_header X-Real-IP $remote_addr;
376
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
377
- proxy_set_header X-Forwarded-Proto $scheme;
378
- proxy_cache_bypass $http_upgrade;
379
- }
380
- }
381
-
382
- # Frontend Dashboard
383
- server {
384
- listen 80;
385
- server_name app.yourdomain.com;
386
-
387
- location / {
388
- proxy_pass http://localhost:7131;
389
- proxy_http_version 1.1;
390
- proxy_set_header Upgrade $http_upgrade;
391
- proxy_set_header Connection 'upgrade';
392
- proxy_set_header Host $host;
393
- proxy_set_header X-Real-IP $remote_addr;
394
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
395
- proxy_set_header X-Forwarded-Proto $scheme;
396
- proxy_cache_bypass $http_upgrade;
397
- }
398
- }
399
- ```
400
-
401
- Enable the configuration:
402
-
403
- ```bash
404
- sudo ln -s /etc/nginx/sites-available/insforge /etc/nginx/sites-enabled/
405
- sudo nginx -t
406
- sudo systemctl reload nginx
407
- ```
408
-
409
- #### 6.4 Install SSL Certificate (Recommended)
410
-
411
- ```bash
412
- # Install Certbot
413
- sudo apt install certbot python3-certbot-nginx -y
414
-
415
- # Obtain SSL certificates
416
- sudo certbot --nginx -d api.yourdomain.com -d app.yourdomain.com
417
-
418
- # Follow the prompts to complete setup
419
- ```
420
-
421
- Update your `.env` file with HTTPS URLs:
422
-
423
- ```bash
424
- cd ~/insforge
425
- nano .env
426
- ```
427
-
428
- Change:
429
- ```env
430
- API_BASE_URL=https://api.yourdomain.com
431
- VITE_API_BASE_URL=https://api.yourdomain.com
432
- ```
433
-
434
- Restart services:
435
-
436
- ```bash
437
- docker compose down
438
- docker compose up -d
439
- ```
440
-
441
- ## 🔧 Management & Maintenance
442
-
443
- ### View Logs
444
-
445
- ```bash
446
- # All services
447
- docker compose logs -f
448
-
449
- # Specific service
450
- docker compose logs -f insforge
451
- docker compose logs -f postgres
452
- docker compose logs -f deno
453
- ```
454
-
455
- ### Stop Services
456
-
457
- ```bash
458
- docker compose down
459
- ```
460
-
461
- ### Restart Services
462
-
463
- ```bash
464
- docker compose restart
465
- ```
466
-
467
- ### Update InsForge
468
-
469
- ```bash
470
- cd ~/insforge
471
- git pull origin main
472
- docker compose down
473
- docker compose up -d --build
474
- ```
475
-
476
- ### Backup Database
477
-
478
- ```bash
479
- # Create backup
480
- docker exec insforge-postgres pg_dump -U postgres insforge > backup_$(date +%Y%m%d_%H%M%S).sql
481
-
482
- # Store backup in Google Cloud Storage (optional)
483
- # First, install Google Cloud CLI and authenticate
484
- # Then:
485
- gsutil cp backup_$(date +%Y%m%d_%H%M%S).sql gs://your-backup-bucket/
486
- ```
487
-
488
- ### Monitor Resources
489
-
490
- ```bash
491
- # Check disk usage
492
- df -h
493
-
494
- # Check memory usage
495
- free -h
496
-
497
- # Check Docker stats
498
- docker stats
499
- ```
500
-
501
- ## 🐛 Troubleshooting
502
-
503
- ### Services Won't Start
504
-
505
- ```bash
506
- # Check logs for errors
507
- docker compose logs
508
-
509
- # Check disk space
510
- df -h
511
-
512
- # Check memory
513
- free -h
514
-
515
- # Restart Docker daemon
516
- sudo systemctl restart docker
517
- docker compose up -d
518
- ```
519
-
520
- ### Cannot Connect to Database
521
-
522
- ```bash
523
- # Check if PostgreSQL is running
524
- docker compose ps postgres
525
-
526
- # Check PostgreSQL logs
527
- docker compose logs postgres
528
-
529
- # Verify credentials in .env file
530
- cat .env | grep POSTGRES
531
- ```
532
-
533
- ### Port Already in Use
534
-
535
- ```bash
536
- # Check what's using the port
537
- sudo netstat -tulpn | grep :7130
538
-
539
- # Kill the process or change port in docker-compose.yml
540
- ```
541
-
542
- ### Out of Memory
543
-
544
- Consider upgrading to a larger instance type:
545
- ```text
546
- - Current: e2-small (2 vCPU, 2 GB RAM)
547
- - Upgrade to: e2-standard-2 (2 vCPU, 8 GB RAM)
548
- ```
549
-
550
- ### SSL Certificate Issues
551
-
552
- ```bash
553
- # Renew certificates
554
- sudo certbot renew
555
-
556
- # Test renewal
557
- sudo certbot renew --dry-run
558
- ```
559
-
560
- ## 📊 Performance Optimization
561
-
562
- ### For Production Workloads
563
-
564
- 1. **Upgrade Instance Type**: Use `e2-standard-2` or `e2-standard-4`
565
- 2. **Use Cloud SQL**: Migrate from containerized PostgreSQL to Google Cloud SQL for better reliability
566
- 3. **Enable Cloud Monitoring**: Monitor metrics and set up alerts
567
- 4. **Configure Backups**: Set up automated daily backups
568
- 5. **Use Cloud Storage**: Configure Google Cloud Storage for file uploads instead of local storage
569
-
570
- ### Database Optimization
571
-
572
- ```conf
573
- # Increase PostgreSQL shared_buffers (edit postgresql.conf in docker-init/db/)
574
- # Recommended: 25% of available RAM
575
- shared_buffers = 1GB
576
- effective_cache_size = 3GB
577
- ```
578
-
579
- ## 🔒 Security Best Practices
580
-
581
- 1. **Change Default Passwords**: Update admin and database passwords
582
- 2. **Enable Firewall**: Use Google Cloud Firewall rules effectively
583
- 3. **Regular Updates**: Keep system and Docker images updated
584
- 4. **SSL/TLS**: Always use HTTPS in production
585
- 5. **Backup Regularly**: Automate database backups
586
- 6. **Monitor Logs**: Set up log monitoring and alerts
587
- 7. **Limit SSH Access**: Restrict SSH to specific IP addresses
588
- 8. **Use Service Accounts**: Instead of API keys where possible
589
-
590
- ## 🆘 Support & Resources
591
-
592
- - **Documentation**: [https://docs.insforge.dev](https://docs.insforge.dev)
593
- - **GitHub Issues**: [https://github.com/insforge/insforge/issues](https://github.com/insforge/insforge/issues)
594
- - **Discord Community**: [https://discord.com/invite/MPxwj5xVvW](https://discord.com/invite/MPxwj5xVvW)
595
-
596
- ## 📝 Cost Estimation
597
-
598
- **Monthly Google Cloud Costs (approximate):**
599
-
600
- | Component | Type | Monthly Cost |
601
- |-----------|------|--------------|
602
- | Compute Engine | e2-medium (2 vCPU, 4 GB RAM) | ~$29 |
603
- | Persistent Disk (30 GB) | Standard | ~$3 |
604
- | Network Egress | First 1GB free | Variable |
605
- | **Total** | | **~$32/month** |
606
-
607
- > 💡 **Cost Optimization**: Use sustained use discounts for 24/7 running instances to save up to 30%. Consider preemptible instances for development/testing environments.
608
-
609
- ---
610
-
611
- **Congratulations! 🎉** Your InsForge instance is now running on Google Cloud Compute Engine. You can start building applications by connecting AI agents to your backend platform.
612
-
613
- For other production deployment strategies, check out our [deployment guides](./README.md).
1
+ # Deploy InsForge to Google Cloud Compute Engine
2
+
3
+ This guide will walk you through deploying InsForge on Google Cloud Compute Engine using Docker Compose.
4
+
5
+ ## 📋 Prerequisites
6
+
7
+ - Google Cloud Account with billing enabled
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 Compute Engine Instance
14
+
15
+ #### 1.1 Create Google Cloud Project
16
+
17
+ 1. **Log into Google Cloud Console** at [console.cloud.google.com](https://console.cloud.google.com)
18
+ 2. **Click "Select a project"** in the top navigation bar
19
+ 3. **Click "New Project"**
20
+ 4. **Enter project name** (e.g., `insforge-deployment`)
21
+ 5. **Click "Create"**
22
+ 6. **Wait for project creation to complete**
23
+
24
+ #### 1.2 Enable Required APIs
25
+
26
+ 1. In your project, navigate to **APIs & Services** → **Library**
27
+ 2. Search for and enable these APIs:
28
+ - **Compute Engine API**
29
+ - **Cloud Storage API** (if using for backups)
30
+ - **Cloud SQL Admin API** (if using Cloud SQL)
31
+
32
+ #### 1.3 Create Compute Engine Instance
33
+
34
+ 1. Navigate to **Compute Engine** → **VM instances**
35
+ 2. Click **"Create Instance"**
36
+ 3. Configure your instance:
37
+ - **Name**: `insforge-server` (or your preferred name)
38
+ - **Region**: Choose a region close to your users
39
+ - **Zone**: Select an availability zone (e.g., us-central1-a)
40
+ - **Machine configuration**:
41
+ - **Series**: N2 or E2
42
+ - **Machine type**: `e2-medium` or larger (minimum 2 vCPU, 4 GB RAM)
43
+ - For production: `e2-standard-2` (2 vCPU, 8 GB RAM) recommended
44
+ - For testing: `e2-small` (2 vCPU, 2 GB RAM) minimum
45
+ - **Boot disk**:
46
+ - **Operating system**: Ubuntu LTS (Ubuntu 22.04 LTS or newer)
47
+ - **Boot disk type**: Balanced persistent disk
48
+ - **Size**: 30 GB (minimum 20 GB recommended)
49
+ - **Firewall**:
50
+ - Allow HTTP traffic: **Checked**
51
+ - Allow HTTPS traffic: **Checked**
52
+
53
+ #### 1.4 Configure Firewall Rules
54
+
55
+ 1. Navigate to **VPC network** → **Firewall**
56
+ 2. Create or modify firewall rules to allow the following ports:
57
+
58
+ | Name | Direction | Targets | Protocols/ports | Source filters |
59
+ |------|-----------|---------|-----------------|----------------|
60
+ | insforge-ssh | Ingress | insforge-server | tcp:22 | Your IP address |
61
+ | insforge-http | Ingress | insforge-server | tcp:80 | 0.0.0.0/0 |
62
+ | insforge-https | Ingress | insforge-server | tcp:443 | 0.0.0.0/0 |
63
+ | insforge-backend | Ingress | insforge-server | tcp:7130 | 0.0.0.0/0 |
64
+ | insforge-frontend | Ingress | insforge-server | tcp:7131 | 0.0.0.0/0 |
65
+ | insforge-deno | Ingress | insforge-server | tcp:7133 | 0.0.0.0/0 |
66
+ | insforge-postgrest | Ingress | insforge-server | tcp:5430 | 0.0.0.0/0 |
67
+ | insforge-postgres | Ingress | insforge-server | tcp:5432 | 0.0.0.0/0 (only if needed externally) |
68
+
69
+ > ⚠️ **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.
70
+
71
+ ### 2. Connect to Your Compute Engine Instance
72
+
73
+ 1. In the Google Cloud Console, go to **Compute Engine** → **VM instances**
74
+ 2. Find your instance and click the **SSH** button in the same row, or:
75
+
76
+ ```bash
77
+ # Use gcloud CLI to SSH (if you have gcloud SDK installed locally)
78
+ gcloud compute ssh insforge-server --zone=your-zone
79
+ ```
80
+
81
+ ### 3. Install Dependencies
82
+
83
+ #### 3.1 Update System Packages
84
+
85
+ ```bash
86
+ sudo apt update && sudo apt upgrade -y
87
+ ```
88
+
89
+ #### 3.2 Install Docker
90
+
91
+ ```bash
92
+ # Add Docker's official GPG key
93
+ sudo apt-get update
94
+ sudo apt-get install ca-certificates curl gnupg
95
+ sudo install -m 0755 -d /etc/apt/keyrings
96
+ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
97
+ sudo chmod a+r /etc/apt/keyrings/docker.gpg
98
+
99
+ # Add Docker repository
100
+ echo \
101
+ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
102
+ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
103
+ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
104
+
105
+ # Install Docker
106
+ sudo apt-get update
107
+ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
108
+ ```
109
+
110
+ #### 3.3 Add Your User to Docker Group
111
+
112
+ After installing Docker, you need to add your user to the `docker` group to run Docker commands without `sudo`:
113
+
114
+ ```bash
115
+ # Add your user to the docker group
116
+ sudo usermod -aG docker $USER
117
+
118
+ # Apply the group changes
119
+ newgrp docker
120
+ ```
121
+
122
+ **Verify it works:**
123
+
124
+ ```bash
125
+ # This should now work without sudo
126
+ docker ps
127
+ ```
128
+
129
+ > 💡 **Note**: If `docker ps` doesn't work immediately, log out and log back in via SSH, then try again.
130
+
131
+ > ⚠️ **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 Compute Engine instance, but be cautious on shared systems.
132
+
133
+ #### 3.4 Install Git
134
+
135
+ ```bash
136
+ sudo apt install git -y
137
+ ```
138
+
139
+ ### 4. Deploy InsForge
140
+
141
+ #### 4.1 Clone Repository
142
+
143
+ ```bash
144
+ cd ~
145
+ git clone https://github.com/insforge/insforge.git
146
+ cd insforge
147
+ ```
148
+
149
+ #### 4.2 Create Environment Configuration
150
+
151
+ Create your `.env` file with production settings:
152
+
153
+ ```bash
154
+ nano .env
155
+ ```
156
+
157
+ Add the following configuration (customize the values):
158
+
159
+ ```env
160
+ # ============================================
161
+ # Server Configuration
162
+ # ============================================
163
+ PORT=7130
164
+
165
+ # ============================================
166
+ # Database Configuration
167
+ # ============================================
168
+ POSTGRES_USER=postgres
169
+ POSTGRES_PASSWORD=your-secure-postgres-password
170
+ POSTGRES_DB=insforge
171
+
172
+ # ============================================
173
+ # Security & Authentication
174
+ # ============================================
175
+ # IMPORTANT: Generate a strong random secret for production
176
+ JWT_SECRET=your-secret-key-here-must-be-32-char-or-above
177
+ ENCRYPTION_KEY=your-32-char-encryption-key-here
178
+
179
+ # Admin Account (used for initial setup)
180
+ ADMIN_EMAIL=admin@example.com
181
+ ADMIN_PASSWORD=change-this-password
182
+
183
+ # ============================================
184
+ # API Configuration
185
+ # ============================================
186
+ # Replace with your Compute Engine external IP or domain
187
+ API_BASE_URL=http://your-external-ip:7130
188
+ VITE_API_BASE_URL=http://your-external-ip:7130
189
+
190
+ # ============================================
191
+ # OAuth Providers (Optional)
192
+ # ============================================
193
+ # Google OAuth
194
+ GOOGLE_CLIENT_ID=
195
+ GOOGLE_CLIENT_SECRET=
196
+
197
+ # GitHub OAuth
198
+ GITHUB_CLIENT_ID=
199
+ GITHUB_CLIENT_SECRET=
200
+
201
+ # ============================================
202
+ # AWS Storage Configuration (Optional)
203
+ # ============================================
204
+ # For S3 file storage
205
+ AWS_S3_BUCKET=
206
+ AWS_REGION=
207
+ AWS_ACCESS_KEY_ID=
208
+ AWS_SECRET_ACCESS_KEY=
209
+
210
+ # ============================================
211
+ # AI/LLM Configuration (Optional)
212
+ # ============================================
213
+ OPENROUTER_API_KEY=
214
+
215
+ # ============================================
216
+ # Multi-tenant Cloud Configuration (Optional)
217
+ # ============================================
218
+ DEPLOYMENT_ID=
219
+ PROJECT_ID=
220
+ APP_KEY=
221
+ ACCESS_API_KEY=
222
+
223
+ # ============================================
224
+ # Advanced Configuration
225
+ # ============================================
226
+ DENO_ENV=production
227
+ WORKER_TIMEOUT_MS=30000
228
+ ```
229
+
230
+ **Generate Secure Secrets:**
231
+
232
+ ```bash
233
+ # Generate JWT_SECRET (32+ characters)
234
+ openssl rand -base64 32
235
+
236
+ # Generate ENCRYPTION_KEY (must be exactly 32 characters)
237
+ openssl rand -base64 24
238
+ ```
239
+
240
+ > 💡 **Important**: Save these secrets securely. You'll need them if you ever migrate or restore your instance.
241
+
242
+ #### 4.3 Start InsForge Services
243
+
244
+ ```bash
245
+ # Pull Docker images and start services
246
+ docker compose up -d
247
+
248
+ # View logs to ensure everything started correctly
249
+ docker compose logs -f
250
+ ```
251
+
252
+ Press `Ctrl+C` to exit log view.
253
+
254
+ #### 4.4 Verify Services
255
+
256
+ ```bash
257
+ # Check running containers
258
+ docker compose ps
259
+
260
+ # You should see 5 running services:
261
+ # - insforge-postgres
262
+ # - insforge-postgrest
263
+ # - insforge
264
+ # - insforge-deno
265
+ # - insforge-vector
266
+ ```
267
+
268
+ ### 5. Access Your InsForge Instance
269
+
270
+ #### 5.1 Test Backend API
271
+
272
+ ```bash
273
+ curl http://your-external-ip:7130/api/health
274
+ ```
275
+
276
+ Expected response:
277
+ ```json
278
+ {
279
+ "status": "ok",
280
+ "version": "1.0.0",
281
+ "service": "Insforge OSS Backend",
282
+ "timestamp": "2025-10-17T..."
283
+ }
284
+ ```
285
+
286
+ #### 5.2 Access Dashboard
287
+
288
+ Open your browser and navigate to:
289
+ ```text
290
+ http://your-external-ip:7131
291
+ ```
292
+
293
+ #### 5.3 ⚠️ Important: Custom Admin Credentials Configuration
294
+
295
+ > **🚧 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.
296
+
297
+ **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.
298
+
299
+ **Step 1: Update `.env` file**
300
+
301
+ ```env
302
+ # In your .env file
303
+ ADMIN_EMAIL=your-custom-admin@example.com
304
+ ADMIN_PASSWORD=your-secure-password-here
305
+
306
+ ```
307
+
308
+ After updating your `.env` file, manually edit the login page:
309
+
310
+ ```bash
311
+ nano ~/insforge/frontend/src/features/login/page/LoginPage.tsx
312
+ ```
313
+
314
+ Find this section (around line 38-41):
315
+ ```typescript
316
+ defaultValues: {
317
+ email: 'admin@example.com',
318
+ password: 'change-this-password',
319
+ },
320
+ ```
321
+
322
+ Update the default values to match your `.env` file:
323
+ ```typescript
324
+ defaultValues: {
325
+ email: 'your-custom-admin@example.com', // Update to match your ADMIN_EMAIL
326
+ password: 'your-secure-password-here', // Update to match your ADMIN_PASSWORD
327
+ },
328
+ ```
329
+
330
+ ### 6. Configure Domain (Optional but Recommended)
331
+
332
+ #### 6.1 Reserve a Static External IP
333
+
334
+ 1. In Google Cloud Console, go to **VPC network** → **External IP addresses**
335
+ 2. Click **Reserve Static Address**
336
+ 3. **Name**: `insforge-ip`
337
+ 4. **Type**: Regional or Global (Regional for VM instances)
338
+ 5. **Region**: Same as your VM instance
339
+ 6. **Click Reserve**
340
+
341
+ #### 6.2 Update DNS Records
342
+
343
+ Point your domain's DNS records to the reserved static IP:
344
+ ```text
345
+ api.yourdomain.com → your-static-external-ip
346
+ app.yourdomain.com → your-static-external-ip
347
+ ```
348
+
349
+ #### 6.3 Install Nginx Reverse Proxy
350
+
351
+ ```bash
352
+ sudo apt install nginx -y
353
+ ```
354
+
355
+ Create Nginx configuration:
356
+
357
+ ```bash
358
+ sudo nano /etc/nginx/sites-available/insforge
359
+ ```
360
+
361
+ Add the following configuration:
362
+
363
+ ```nginx
364
+ # Backend API
365
+ server {
366
+ listen 80;
367
+ server_name api.yourdomain.com;
368
+
369
+ location / {
370
+ proxy_pass http://localhost:7130;
371
+ proxy_http_version 1.1;
372
+ proxy_set_header Upgrade $http_upgrade;
373
+ proxy_set_header Connection 'upgrade';
374
+ proxy_set_header Host $host;
375
+ proxy_set_header X-Real-IP $remote_addr;
376
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
377
+ proxy_set_header X-Forwarded-Proto $scheme;
378
+ proxy_cache_bypass $http_upgrade;
379
+ }
380
+ }
381
+
382
+ # Frontend Dashboard
383
+ server {
384
+ listen 80;
385
+ server_name app.yourdomain.com;
386
+
387
+ location / {
388
+ proxy_pass http://localhost:7131;
389
+ proxy_http_version 1.1;
390
+ proxy_set_header Upgrade $http_upgrade;
391
+ proxy_set_header Connection 'upgrade';
392
+ proxy_set_header Host $host;
393
+ proxy_set_header X-Real-IP $remote_addr;
394
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
395
+ proxy_set_header X-Forwarded-Proto $scheme;
396
+ proxy_cache_bypass $http_upgrade;
397
+ }
398
+ }
399
+ ```
400
+
401
+ Enable the configuration:
402
+
403
+ ```bash
404
+ sudo ln -s /etc/nginx/sites-available/insforge /etc/nginx/sites-enabled/
405
+ sudo nginx -t
406
+ sudo systemctl reload nginx
407
+ ```
408
+
409
+ #### 6.4 Install SSL Certificate (Recommended)
410
+
411
+ ```bash
412
+ # Install Certbot
413
+ sudo apt install certbot python3-certbot-nginx -y
414
+
415
+ # Obtain SSL certificates
416
+ sudo certbot --nginx -d api.yourdomain.com -d app.yourdomain.com
417
+
418
+ # Follow the prompts to complete setup
419
+ ```
420
+
421
+ Update your `.env` file with HTTPS URLs:
422
+
423
+ ```bash
424
+ cd ~/insforge
425
+ nano .env
426
+ ```
427
+
428
+ Change:
429
+ ```env
430
+ API_BASE_URL=https://api.yourdomain.com
431
+ VITE_API_BASE_URL=https://api.yourdomain.com
432
+ ```
433
+
434
+ Restart services:
435
+
436
+ ```bash
437
+ docker compose down
438
+ docker compose up -d
439
+ ```
440
+
441
+ ## 🔧 Management & Maintenance
442
+
443
+ ### View Logs
444
+
445
+ ```bash
446
+ # All services
447
+ docker compose logs -f
448
+
449
+ # Specific service
450
+ docker compose logs -f insforge
451
+ docker compose logs -f postgres
452
+ docker compose logs -f deno
453
+ ```
454
+
455
+ ### Stop Services
456
+
457
+ ```bash
458
+ docker compose down
459
+ ```
460
+
461
+ ### Restart Services
462
+
463
+ ```bash
464
+ docker compose restart
465
+ ```
466
+
467
+ ### Update InsForge
468
+
469
+ ```bash
470
+ cd ~/insforge
471
+ git pull origin main
472
+ docker compose down
473
+ docker compose up -d --build
474
+ ```
475
+
476
+ ### Backup Database
477
+
478
+ ```bash
479
+ # Create backup
480
+ docker exec insforge-postgres pg_dump -U postgres insforge > backup_$(date +%Y%m%d_%H%M%S).sql
481
+
482
+ # Store backup in Google Cloud Storage (optional)
483
+ # First, install Google Cloud CLI and authenticate
484
+ # Then:
485
+ gsutil cp backup_$(date +%Y%m%d_%H%M%S).sql gs://your-backup-bucket/
486
+ ```
487
+
488
+ ### Monitor Resources
489
+
490
+ ```bash
491
+ # Check disk usage
492
+ df -h
493
+
494
+ # Check memory usage
495
+ free -h
496
+
497
+ # Check Docker stats
498
+ docker stats
499
+ ```
500
+
501
+ ## 🐛 Troubleshooting
502
+
503
+ ### Services Won't Start
504
+
505
+ ```bash
506
+ # Check logs for errors
507
+ docker compose logs
508
+
509
+ # Check disk space
510
+ df -h
511
+
512
+ # Check memory
513
+ free -h
514
+
515
+ # Restart Docker daemon
516
+ sudo systemctl restart docker
517
+ docker compose up -d
518
+ ```
519
+
520
+ ### Cannot Connect to Database
521
+
522
+ ```bash
523
+ # Check if PostgreSQL is running
524
+ docker compose ps postgres
525
+
526
+ # Check PostgreSQL logs
527
+ docker compose logs postgres
528
+
529
+ # Verify credentials in .env file
530
+ cat .env | grep POSTGRES
531
+ ```
532
+
533
+ ### Port Already in Use
534
+
535
+ ```bash
536
+ # Check what's using the port
537
+ sudo netstat -tulpn | grep :7130
538
+
539
+ # Kill the process or change port in docker-compose.yml
540
+ ```
541
+
542
+ ### Out of Memory
543
+
544
+ Consider upgrading to a larger instance type:
545
+ ```text
546
+ - Current: e2-small (2 vCPU, 2 GB RAM)
547
+ - Upgrade to: e2-standard-2 (2 vCPU, 8 GB RAM)
548
+ ```
549
+
550
+ ### SSL Certificate Issues
551
+
552
+ ```bash
553
+ # Renew certificates
554
+ sudo certbot renew
555
+
556
+ # Test renewal
557
+ sudo certbot renew --dry-run
558
+ ```
559
+
560
+ ## 📊 Performance Optimization
561
+
562
+ ### For Production Workloads
563
+
564
+ 1. **Upgrade Instance Type**: Use `e2-standard-2` or `e2-standard-4`
565
+ 2. **Use Cloud SQL**: Migrate from containerized PostgreSQL to Google Cloud SQL for better reliability
566
+ 3. **Enable Cloud Monitoring**: Monitor metrics and set up alerts
567
+ 4. **Configure Backups**: Set up automated daily backups
568
+ 5. **Use Cloud Storage**: Configure Google Cloud Storage for file uploads instead of local storage
569
+
570
+ ### Database Optimization
571
+
572
+ ```conf
573
+ # Increase PostgreSQL shared_buffers (edit postgresql.conf in docker-init/db/)
574
+ # Recommended: 25% of available RAM
575
+ shared_buffers = 1GB
576
+ effective_cache_size = 3GB
577
+ ```
578
+
579
+ ## 🔒 Security Best Practices
580
+
581
+ 1. **Change Default Passwords**: Update admin and database passwords
582
+ 2. **Enable Firewall**: Use Google Cloud Firewall rules effectively
583
+ 3. **Regular Updates**: Keep system and Docker images updated
584
+ 4. **SSL/TLS**: Always use HTTPS in production
585
+ 5. **Backup Regularly**: Automate database backups
586
+ 6. **Monitor Logs**: Set up log monitoring and alerts
587
+ 7. **Limit SSH Access**: Restrict SSH to specific IP addresses
588
+ 8. **Use Service Accounts**: Instead of API keys where possible
589
+
590
+ ## 🆘 Support & Resources
591
+
592
+ - **Documentation**: [https://docs.insforge.dev](https://docs.insforge.dev)
593
+ - **GitHub Issues**: [https://github.com/insforge/insforge/issues](https://github.com/insforge/insforge/issues)
594
+ - **Discord Community**: [https://discord.com/invite/MPxwj5xVvW](https://discord.com/invite/MPxwj5xVvW)
595
+
596
+ ## 📝 Cost Estimation
597
+
598
+ **Monthly Google Cloud Costs (approximate):**
599
+
600
+ | Component | Type | Monthly Cost |
601
+ |-----------|------|--------------|
602
+ | Compute Engine | e2-medium (2 vCPU, 4 GB RAM) | ~$29 |
603
+ | Persistent Disk (30 GB) | Standard | ~$3 |
604
+ | Network Egress | First 1GB free | Variable |
605
+ | **Total** | | **~$32/month** |
606
+
607
+ > 💡 **Cost Optimization**: Use sustained use discounts for 24/7 running instances to save up to 30%. Consider preemptible instances for development/testing environments.
608
+
609
+ ---
610
+
611
+ **Congratulations! 🎉** Your InsForge instance is now running on Google Cloud Compute Engine. You can start building applications by connecting AI agents to your backend platform.
612
+
613
+ For other production deployment strategies, check out our [deployment guides](./README.md).