insforge 0.3.3 → 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.
- package/.claude-plugin/marketplace.json +20 -0
- package/.cursor/rules/cursor-rules.mdc +94 -0
- package/.dockerignore +3 -0
- package/.env.example +33 -4
- package/.github/ISSUE_TEMPLATE/bug_report.yml +13 -60
- package/.github/ISSUE_TEMPLATE/config.yml +2 -2
- package/.github/ISSUE_TEMPLATE/feature_request.yml +10 -63
- package/.github/PULL_REQUEST_TEMPLATE.md +7 -0
- package/.github/workflows/build-image.yml +2 -1
- package/.github/workflows/e2e.yml +63 -0
- package/CHANGELOG.md +41 -0
- package/CLAUDE_PLUGIN.md +104 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/CONTRIBUTING.md +1 -1
- package/Dockerfile +4 -1
- package/README.md +66 -18
- package/assets/mcpInstallv2.png +0 -0
- package/assets/sampleResponse.png +0 -0
- package/auth/index.html +13 -0
- package/auth/package.json +28 -0
- package/auth/public/favicon.ico +0 -0
- package/auth/src/App.tsx +33 -0
- package/auth/src/components/ErrorCard.tsx +37 -0
- package/auth/src/components/Layout.tsx +13 -0
- package/auth/src/index.css +19 -0
- package/auth/src/lib/broadcastService.ts +115 -0
- package/auth/src/lib/utils.ts +11 -0
- package/auth/src/main.tsx +22 -0
- package/auth/src/pages/ForgotPasswordPage.tsx +11 -0
- package/auth/src/pages/ResetPasswordPage.tsx +11 -0
- package/auth/src/pages/SignInPage.tsx +57 -0
- package/auth/src/pages/SignUpPage.tsx +57 -0
- package/auth/src/pages/VerifyEmailPage.tsx +20 -0
- package/auth/src/vite-env.d.ts +10 -0
- package/auth/tsconfig.json +32 -0
- package/auth/tsconfig.node.json +11 -0
- package/auth/vite.config.ts +25 -0
- package/backend/package.json +9 -9
- package/backend/src/api/{middleware → middlewares}/auth.ts +8 -9
- package/backend/src/api/middlewares/rate-limiters.ts +127 -0
- package/backend/src/api/routes/{ai.ts → ai/index.routes.ts} +20 -24
- package/backend/src/api/routes/auth/index.routes.ts +570 -0
- package/backend/src/api/routes/auth/oauth.routes.ts +448 -0
- package/backend/src/api/routes/{database.advance.ts → database/advance.routes.ts} +107 -65
- package/backend/src/api/routes/database/index.routes.ts +13 -0
- package/backend/src/api/routes/{database.records.ts → database/records.routes.ts} +22 -8
- package/backend/src/api/routes/{database.tables.ts → database/tables.routes.ts} +20 -23
- package/backend/src/api/routes/docs/index.routes.ts +76 -0
- package/backend/src/api/routes/functions/index.routes.ts +188 -0
- package/backend/src/api/routes/{logs.ts → logs/index.routes.ts} +25 -30
- package/backend/src/api/routes/{metadata.ts → metadata/index.routes.ts} +21 -31
- package/backend/src/api/routes/{secrets.ts → secrets/index.routes.ts} +27 -22
- package/backend/src/api/routes/{storage.ts → storage/index.routes.ts} +34 -53
- package/backend/src/api/routes/usage/index.routes.ts +89 -0
- package/backend/src/infra/config/app.config.ts +51 -0
- package/backend/src/{core/database/manager.ts → infra/database/database.manager.ts} +76 -85
- package/backend/src/infra/database/migrations/013_create-auth-schema-functions.sql +44 -0
- package/backend/src/infra/database/migrations/014_add-updated-at-trigger-user-table.sql +8 -0
- package/backend/src/infra/database/migrations/015_create-auth-config-and-email-otp-tables.sql +60 -0
- package/backend/src/infra/database/migrations/016_update-auth-config-and-email-otp.sql +24 -0
- package/backend/src/{core/secrets/encryption.ts → infra/security/encryption.manager.ts} +3 -2
- package/backend/src/infra/security/token.manager.ts +125 -0
- package/backend/src/{core/socket/socket.ts → infra/socket/socket.manager.ts} +15 -15
- package/backend/src/providers/ai/openrouter.provider.ts +377 -0
- package/backend/src/providers/email/base.provider.ts +41 -0
- package/backend/src/providers/email/cloud.provider.ts +187 -0
- package/backend/src/{core/logs/providers → providers/logs}/base.provider.ts +11 -11
- package/backend/src/{core/logs/providers → providers/logs}/cloudwatch.provider.ts +61 -38
- package/backend/src/providers/logs/local.provider.ts +185 -0
- package/backend/src/providers/oauth/base.provider.ts +29 -0
- package/backend/src/providers/oauth/discord.provider.ts +195 -0
- package/backend/src/providers/oauth/facebook.provider.ts +194 -0
- package/backend/src/providers/oauth/github.provider.ts +208 -0
- package/backend/src/providers/oauth/google.provider.ts +249 -0
- package/backend/src/providers/oauth/index.ts +7 -0
- package/backend/src/providers/oauth/linkedin.provider.ts +240 -0
- package/backend/src/providers/oauth/microsoft.provider.ts +169 -0
- package/backend/src/providers/oauth/x.provider.ts +202 -0
- package/backend/src/providers/storage/base.provider.ts +29 -0
- package/backend/src/providers/storage/local.provider.ts +103 -0
- package/backend/src/providers/storage/s3.provider.ts +313 -0
- package/backend/src/server.ts +70 -74
- package/backend/src/{core/ai/config.ts → services/ai/ai-config.service.ts} +19 -24
- package/backend/src/services/ai/ai-model.service.ts +60 -0
- package/backend/src/{core/ai/usage.ts → services/ai/ai-usage.service.ts} +28 -35
- package/backend/src/{core/ai/chat.ts → services/ai/chat-completion.service.ts} +37 -24
- package/backend/src/services/ai/helpers.ts +64 -0
- package/backend/src/{core/ai/image.ts → services/ai/image-generation.service.ts} +17 -19
- package/backend/src/services/ai/index.ts +13 -0
- package/backend/src/services/auth/auth-config.service.ts +250 -0
- package/backend/src/services/auth/auth-otp.service.ts +424 -0
- package/backend/src/services/auth/auth.service.ts +1136 -0
- package/backend/src/services/auth/index.ts +4 -0
- package/backend/src/{core/auth/oauth.ts → services/auth/oauth-config.service.ts} +106 -52
- package/backend/src/{core/database/advance.ts → services/database/database-advance.service.ts} +97 -131
- package/backend/src/services/database/database-table.service.ts +811 -0
- package/backend/src/services/email/email.service.ts +75 -0
- package/backend/src/{core/functions/functions.ts → services/functions/function.service.ts} +95 -88
- package/backend/src/{core/logs/audit.ts → services/logs/audit.service.ts} +92 -75
- package/backend/src/services/logs/log.service.ts +73 -0
- package/backend/src/{core/secrets/secrets.ts → services/secrets/secret.service.ts} +48 -66
- package/backend/src/services/storage/storage.service.ts +617 -0
- package/backend/src/services/usage/usage.service.ts +149 -0
- package/backend/src/types/auth.ts +66 -2
- package/backend/src/types/email.ts +8 -0
- package/backend/src/types/error-constants.ts +4 -0
- package/backend/src/types/logs.ts +0 -29
- package/backend/src/{core/socket/types.ts → types/socket.ts} +5 -6
- package/backend/src/utils/environment.ts +9 -3
- package/backend/src/utils/logger.ts +20 -2
- package/backend/src/utils/seed.ts +150 -57
- package/backend/src/utils/sql-parser.ts +1 -1
- package/backend/src/utils/utils.ts +114 -0
- package/backend/src/utils/validations.ts +40 -4
- package/backend/tests/local/test-ai-config.sh +129 -0
- package/backend/tests/local/test-ai-usage.sh +80 -0
- package/backend/tests/local/test-auth-router.sh +1 -1
- package/backend/tests/local/test-e2e.sh +1 -1
- package/backend/tests/local/test-functions.sh +123 -0
- package/backend/tests/local/test-logs.sh +132 -0
- package/backend/tests/local/test-public-bucket.sh +3 -3
- package/backend/tests/local/test-secrets.sh +14 -12
- package/backend/tests/local/test-traditional-rest.sh +2 -2
- package/backend/tests/manual/test-rawsql-modes.sh +244 -0
- package/backend/tests/test-config.sh +37 -1
- package/backend/tests/unit/cloud-token.test.ts +48 -0
- package/backend/tests/unit/constant.test.ts +8 -0
- package/backend/tests/unit/email.test.ts +372 -0
- package/backend/tests/unit/environment.test.ts +59 -0
- package/backend/tests/unit/helpers.test.ts +63 -0
- package/backend/tests/unit/logger.test.ts +22 -0
- package/backend/tests/unit/rate-limit.test.ts +154 -0
- package/backend/tests/unit/response.test.ts +58 -0
- package/backend/tests/unit/sql-parser.test.ts +74 -0
- package/backend/tests/unit/uuid.test.ts +21 -0
- package/backend/tests/unit/validations.test.ts +80 -0
- package/backend/tsconfig.json +1 -1
- package/backend/vitest.config.ts +11 -0
- package/claude-plugin/.claude-plugin/plugin.json +24 -0
- package/claude-plugin/README.md +133 -0
- package/claude-plugin/skills/insforge-schema-patterns/SKILL.md +270 -0
- package/docker-compose.prod.yml +60 -4
- package/docker-compose.yml +65 -4
- package/docker-init/db/db-init.sql +6 -34
- package/docker-init/logs/vector.yml +236 -0
- package/docs/README.md +44 -0
- package/docs/changelog.mdx +67 -0
- package/docs/core-concepts/ai/architecture.mdx +373 -0
- package/docs/core-concepts/ai/sdk.mdx +213 -0
- package/docs/core-concepts/authentication/architecture.mdx +278 -0
- package/docs/core-concepts/authentication/sdk.mdx +414 -0
- package/docs/core-concepts/authentication/ui-components/customization.mdx +529 -0
- package/docs/core-concepts/authentication/ui-components/nextjs.mdx +221 -0
- package/docs/core-concepts/authentication/ui-components/react-router.mdx +184 -0
- package/docs/core-concepts/authentication/ui-components/react.mdx +129 -0
- package/docs/core-concepts/database/architecture.mdx +256 -0
- package/docs/core-concepts/database/sdk.mdx +382 -0
- package/docs/core-concepts/functions/architecture.mdx +105 -0
- package/docs/core-concepts/functions/sdk.mdx +184 -0
- package/docs/core-concepts/storage/architecture.mdx +243 -0
- package/docs/core-concepts/storage/sdk.mdx +253 -0
- package/docs/deployment/README.md +94 -0
- package/docs/deployment/deploy-to-aws-ec2.md +565 -0
- package/docs/deployment/deploy-to-azure-virtual-machines.md +313 -0
- package/docs/deployment/deploy-to-google-cloud-compute-engine.md +613 -0
- package/docs/deployment/deploy-to-render.md +441 -0
- package/docs/docs.json +210 -0
- package/docs/examples/framework-guides/nextjs.mdx +131 -0
- package/docs/examples/framework-guides/nuxt.mdx +165 -0
- package/docs/examples/framework-guides/react.mdx +165 -0
- package/docs/examples/framework-guides/svelte.mdx +153 -0
- package/docs/examples/framework-guides/vue.mdx +159 -0
- package/docs/examples/overview.mdx +67 -0
- package/docs/favicon.svg +19 -0
- package/docs/images/changelog/nov-2025/auth-components.webp +0 -0
- package/docs/images/changelog/nov-2025/database-metadata.webp +0 -0
- package/docs/images/changelog/nov-2025/quickstart-prompts.webp +0 -0
- package/docs/images/changelog/nov-2025/sql-editor.webp +0 -0
- package/docs/images/changelog/nov-2025/usage-page.webp +0 -0
- package/docs/images/changelog/october-2025/csv-upload.webp +0 -0
- package/docs/images/changelog/october-2025/logs-feature.webp +0 -0
- package/docs/images/changelog/october-2025/oauth-providers.webp +0 -0
- package/docs/images/checks-passed.png +0 -0
- package/docs/images/dashboard-connect-expanded.png +0 -0
- package/docs/images/dashboard-connect.png +0 -0
- package/docs/images/hero-dark.png +0 -0
- package/docs/images/hero-light.png +0 -0
- package/docs/images/icons/ai.svg +4 -0
- package/docs/images/icons/auth.svg +1 -0
- package/docs/images/icons/database.svg +1 -0
- package/docs/images/icons/function.svg +1 -0
- package/docs/images/icons/storage.svg +1 -0
- package/docs/images/logos/nextjs.svg +4 -0
- package/docs/images/logos/nuxt.svg +4 -0
- package/docs/images/logos/react.svg +5 -0
- package/docs/images/logos/svelte.svg +4 -0
- package/docs/images/logos/vue.svg +5 -0
- package/docs/images/mcp-install.png +0 -0
- package/docs/images/onboarding-mcp.png +0 -0
- package/docs/insforge-instructions-sdk.md +55 -374
- package/docs/introduction.mdx +45 -0
- package/docs/logo/dark.svg +22 -0
- package/docs/logo/light.svg +20 -0
- package/docs/partnership.mdx +647 -0
- package/docs/quickstart.mdx +83 -0
- package/docs/showcase/2048-arena.png +0 -0
- package/docs/showcase/framegen-cloud.png +0 -0
- package/docs/showcase/line-connect-race.png +0 -0
- package/docs/showcase/moment-vibe.png +0 -0
- package/docs/showcase/national-flags.png +0 -0
- package/docs/showcase/pokemon-vibe.png +0 -0
- package/docs/showcase/pure-browse-buy.png +0 -0
- package/docs/showcase.mdx +52 -0
- package/docs/snippets/sdk-installation.mdx +22 -0
- package/docs/snippets/service-icons.mdx +27 -0
- package/eslint.config.js +10 -3
- package/frontend/package.json +10 -4
- package/frontend/src/App.tsx +13 -82
- package/frontend/src/assets/icons/connected.svg +3 -0
- package/frontend/src/assets/icons/loader.svg +9 -0
- package/frontend/src/assets/logos/apple.svg +4 -0
- package/frontend/src/assets/logos/discord.svg +1 -1
- package/frontend/src/assets/logos/facebook.svg +3 -0
- package/frontend/src/assets/logos/instagram.svg +2 -0
- package/frontend/src/assets/logos/linkedin.svg +3 -0
- package/frontend/src/assets/logos/microsoft.svg +1 -0
- package/frontend/src/assets/logos/spotify.svg +17 -0
- package/frontend/src/assets/logos/tiktok.svg +6 -0
- package/frontend/src/assets/logos/x.svg +3 -0
- package/frontend/src/components/Checkbox.tsx +27 -29
- package/frontend/src/components/CodeBlock.tsx +55 -2
- package/frontend/src/components/CodeEditor.tsx +92 -0
- package/frontend/src/components/ConfirmDialog.tsx +1 -1
- package/frontend/src/components/ConnectCTA.tsx +38 -0
- package/frontend/src/components/CopyButton.tsx +52 -15
- package/frontend/src/components/ErrorState.tsx +1 -2
- package/frontend/src/components/FeatureSidebar.tsx +6 -6
- package/frontend/src/components/FeatureSidebarItem.tsx +2 -2
- package/frontend/src/components/JsonHighlight.tsx +21 -9
- package/frontend/src/components/ProjectInfoModal.tsx +128 -0
- package/frontend/src/components/PromptDialog.tsx +1 -4
- package/frontend/src/components/SearchInput.tsx +1 -2
- package/frontend/src/components/Stepper.tsx +53 -0
- package/frontend/src/components/ThemeToggle.tsx +3 -3
- package/frontend/src/components/datagrid/DataGrid.tsx +25 -32
- package/frontend/src/components/datagrid/cell-editors/DateCellEditor.tsx +1 -2
- package/frontend/src/components/datagrid/cell-editors/JsonCellEditor.tsx +2 -4
- package/frontend/src/components/datagrid/index.ts +23 -0
- package/frontend/src/components/index.ts +23 -30
- package/frontend/src/components/layout/AppHeader.tsx +133 -92
- package/frontend/src/components/layout/AppSidebar.tsx +80 -170
- package/frontend/src/components/layout/Layout.tsx +12 -23
- package/frontend/src/components/layout/PrimaryMenu.tsx +187 -0
- package/frontend/src/components/layout/SecondaryMenu.tsx +70 -0
- package/frontend/src/components/layout/index.ts +5 -0
- package/frontend/src/components/radix/Tooltip.tsx +24 -13
- package/frontend/src/components/radix/index.ts +22 -0
- package/frontend/src/features/ai/components/AIConfigCard.tsx +129 -83
- package/frontend/src/features/ai/components/AIEmptyState.tsx +12 -7
- package/frontend/src/features/ai/components/ModalityFilterSidebar.tsx +101 -0
- package/frontend/src/features/ai/components/ModelSelectionDialog.tsx +135 -0
- package/frontend/src/features/ai/components/ModelSelectionGrid.tsx +51 -0
- package/frontend/src/features/ai/components/SystemPromptDialog.tsx +118 -0
- package/frontend/src/features/ai/components/index.ts +6 -0
- package/frontend/src/features/ai/helpers.ts +57 -71
- package/frontend/src/features/ai/hooks/useAIConfigs.ts +39 -113
- package/frontend/src/features/ai/hooks/useAIUsage.ts +0 -2
- package/frontend/src/features/ai/page/AIPage.tsx +67 -79
- package/frontend/src/features/ai/services/ai.service.ts +5 -5
- package/frontend/src/features/auth/components/AuthPreview.tsx +96 -0
- package/frontend/src/features/auth/components/OAuthConfigDialog.tsx +53 -30
- package/frontend/src/features/auth/components/UserFormDialog.tsx +13 -6
- package/frontend/src/features/auth/components/UsersDataGrid.tsx +44 -14
- package/frontend/src/features/auth/components/index.ts +5 -0
- package/frontend/src/features/auth/helpers.tsx +200 -0
- package/frontend/src/features/auth/hooks/useAnonToken.ts +30 -0
- package/frontend/src/features/auth/hooks/useAuthConfig.ts +48 -0
- package/frontend/src/features/auth/hooks/useOAuthConfig.ts +14 -10
- package/frontend/src/features/auth/hooks/useUsers.ts +43 -5
- package/frontend/src/features/auth/index.ts +3 -2
- package/frontend/src/features/auth/page/AuthMethodsPage.tsx +275 -0
- package/frontend/src/features/auth/page/ConfigurationPage.tsx +395 -0
- package/frontend/src/features/auth/page/UsersPage.tsx +285 -0
- package/frontend/src/features/auth/services/anonToken.service.ts +11 -0
- package/frontend/src/features/auth/services/config.service.ts +19 -0
- package/frontend/src/features/auth/services/{oauth.service.ts → oauth-config.service.ts} +4 -4
- package/frontend/src/features/auth/services/{auth.service.ts → user.service.ts} +7 -53
- package/frontend/src/features/dashboard/components/ConnectionSuccessBanner.tsx +35 -0
- package/frontend/src/features/dashboard/components/PromptCard.tsx +21 -0
- package/frontend/src/features/dashboard/components/PromptDialog.tsx +103 -0
- package/frontend/src/features/dashboard/components/StatsCard.tsx +50 -0
- package/frontend/src/features/dashboard/components/index.ts +4 -0
- package/frontend/src/features/dashboard/page/DashboardPage.tsx +187 -169
- package/frontend/src/features/dashboard/prompts/ai-chatbot.ts +13 -0
- package/frontend/src/features/dashboard/prompts/crm-system.ts +13 -0
- package/frontend/src/features/dashboard/prompts/ecommerce-platform.ts +12 -0
- package/frontend/src/features/dashboard/prompts/index.ts +31 -0
- package/frontend/src/features/dashboard/prompts/instagram-clone.ts +11 -0
- package/frontend/src/features/dashboard/prompts/notion-clone.ts +14 -0
- package/frontend/src/features/dashboard/prompts/reddit-clone.ts +12 -0
- package/frontend/src/features/database/components/DatabaseDataGrid.tsx +48 -17
- package/frontend/src/features/database/components/ForeignKeyCell.tsx +15 -34
- package/frontend/src/features/database/components/ForeignKeyPopover.tsx +19 -20
- package/frontend/src/features/database/components/LinkRecordModal.tsx +120 -125
- package/frontend/src/features/database/components/RecordFormDialog.tsx +22 -33
- package/frontend/src/features/database/components/RecordFormField.tsx +45 -47
- package/frontend/src/features/database/components/TableEmptyState.tsx +6 -5
- package/frontend/src/features/database/components/TableForm.tsx +28 -15
- package/frontend/src/features/database/components/TableFormColumn.tsx +2 -3
- package/frontend/src/features/database/components/TableSidebar.tsx +1 -1
- package/frontend/src/features/database/components/TablesEmptyState.tsx +48 -0
- package/frontend/src/features/database/components/TemplateCard.tsx +37 -0
- package/frontend/src/features/database/components/TemplatePreview.tsx +92 -0
- package/frontend/src/features/database/components/index.ts +19 -0
- package/frontend/src/features/database/constants.ts +28 -2
- package/frontend/src/features/database/contexts/SQLEditorContext.tsx +188 -0
- package/frontend/src/features/database/helpers.ts +2 -2
- package/frontend/src/features/database/hooks/useCSVImport.ts +29 -0
- package/frontend/src/features/database/hooks/useFullMetadata.ts +18 -0
- package/frontend/src/features/database/hooks/useRawSQL.ts +55 -0
- package/frontend/src/features/database/hooks/useRecords.ts +139 -0
- package/frontend/src/features/database/hooks/useTables.ts +131 -0
- package/frontend/src/features/database/index.ts +6 -1
- package/frontend/src/features/database/page/FunctionsPage.tsx +211 -0
- package/frontend/src/features/database/page/IndexesPage.tsx +240 -0
- package/frontend/src/features/database/page/PoliciesPage.tsx +248 -0
- package/frontend/src/features/database/page/SQLEditorPage.tsx +382 -0
- package/frontend/src/features/database/page/{DatabasePage.tsx → TablesPage.tsx} +186 -185
- package/frontend/src/features/database/page/TemplatesPage.tsx +39 -0
- package/frontend/src/features/database/page/TriggersPage.tsx +242 -0
- package/frontend/src/features/database/services/advance.service.ts +66 -0
- package/frontend/src/features/database/services/{database.service.ts → record.service.ts} +67 -64
- package/frontend/src/features/database/services/table.service.ts +64 -0
- package/frontend/src/features/database/templates/ai-chatbot.ts +402 -0
- package/frontend/src/features/database/templates/crm-system.ts +528 -0
- package/frontend/src/features/database/templates/ecommerce-platform.ts +553 -0
- package/frontend/src/features/database/templates/index.ts +34 -0
- package/frontend/src/features/database/templates/instagram-clone.ts +222 -0
- package/frontend/src/features/database/templates/notion-clone.ts +483 -0
- package/frontend/src/features/database/templates/reddit-clone.ts +526 -0
- package/frontend/src/features/functions/components/FunctionRow.tsx +2 -1
- package/frontend/src/features/functions/components/FunctionsSidebar.tsx +1 -1
- package/frontend/src/features/functions/components/SecretRow.tsx +1 -1
- package/frontend/src/features/functions/components/index.ts +5 -0
- package/frontend/src/features/functions/hooks/useFunctions.ts +4 -4
- package/frontend/src/features/{secrets → functions}/hooks/useSecrets.ts +5 -5
- package/frontend/src/features/functions/page/FunctionsPage.tsx +160 -17
- package/frontend/src/features/functions/{components/SecretsContent.tsx → page/SecretsPage.tsx} +8 -12
- package/frontend/src/features/functions/services/{functions.service.ts → function.service.ts} +2 -2
- package/frontend/src/features/{secrets/services/secrets.service.ts → functions/services/secret.service.ts} +2 -2
- package/frontend/src/features/login/hooks/usePartnerOrigin.ts +27 -0
- package/frontend/src/features/login/page/CloudLoginPage.tsx +79 -54
- package/frontend/src/features/login/page/LoginPage.tsx +16 -23
- package/frontend/src/features/login/services/partnership.service.ts +65 -0
- package/frontend/src/features/logs/components/LogsDataGrid.tsx +89 -0
- package/frontend/src/features/logs/components/SeverityBadge.tsx +18 -0
- package/frontend/src/features/logs/components/index.ts +2 -0
- package/frontend/src/features/logs/helpers.ts +24 -0
- package/frontend/src/features/logs/hooks/useAuditLogs.ts +4 -4
- package/frontend/src/features/logs/hooks/useLogSources.ts +137 -0
- package/frontend/src/features/logs/hooks/useLogs.ts +163 -0
- package/frontend/src/features/logs/hooks/useMcpUsage.ts +181 -0
- package/frontend/src/features/logs/index.ts +8 -2
- package/frontend/src/features/logs/page/AuditsPage.tsx +91 -38
- package/frontend/src/features/logs/page/LogsPage.tsx +152 -0
- package/frontend/src/features/logs/page/MCPLogsPage.tsx +84 -0
- package/frontend/src/features/logs/services/audit.service.ts +63 -0
- package/frontend/src/features/logs/services/log.service.ts +15 -110
- package/frontend/src/features/logs/services/usage.service.ts +31 -0
- package/frontend/src/features/onboard/components/McpConnectionStatus.tsx +68 -0
- package/frontend/src/features/onboard/components/OnboardingModal.tsx +267 -0
- package/frontend/src/features/onboard/components/VideoDemoModal.tsx +38 -0
- package/frontend/src/features/onboard/components/index.ts +4 -0
- package/frontend/src/features/onboard/components/mcp/CursorDeeplinkGenerator.tsx +2 -2
- package/frontend/src/features/onboard/components/mcp/{mcp-helper.tsx → helpers.tsx} +8 -8
- package/frontend/src/features/onboard/components/mcp/index.ts +2 -3
- package/frontend/src/features/onboard/index.ts +13 -3
- package/frontend/src/features/storage/components/BucketEmptyState.tsx +9 -6
- package/frontend/src/features/storage/components/BucketFormDialog.tsx +25 -41
- package/frontend/src/features/storage/components/FilePreviewDialog.tsx +20 -8
- package/frontend/src/features/storage/components/StorageDataGrid.tsx +4 -3
- package/frontend/src/features/storage/components/StorageManager.tsx +23 -34
- package/frontend/src/features/storage/components/index.ts +12 -0
- package/frontend/src/features/storage/hooks/useStorage.ts +208 -0
- package/frontend/src/features/storage/page/StoragePage.tsx +41 -115
- package/frontend/src/features/storage/services/storage.service.ts +22 -1
- package/frontend/src/features/visualizer/components/AuthNode.tsx +72 -56
- package/frontend/src/features/visualizer/components/BucketNode.tsx +4 -4
- package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +108 -80
- package/frontend/src/features/visualizer/components/TableNode.tsx +34 -41
- package/frontend/src/features/visualizer/components/VisualizerSkeleton.tsx +12 -4
- package/frontend/src/features/visualizer/page/VisualizerPage.tsx +33 -29
- package/frontend/src/index.css +1 -0
- package/frontend/src/lib/analytics/posthog.tsx +27 -0
- package/frontend/src/lib/contexts/AuthContext.tsx +38 -31
- package/frontend/src/lib/contexts/SocketContext.tsx +5 -6
- package/frontend/src/{features/metadata → lib}/hooks/useMetadata.ts +1 -1
- package/frontend/src/lib/hooks/useToast.tsx +6 -2
- package/frontend/src/lib/routing/AppRoutes.tsx +84 -0
- package/frontend/src/lib/routing/RequireAuth.tsx +27 -0
- package/frontend/src/lib/utils/cloudMessaging.ts +20 -0
- package/frontend/src/lib/utils/menuItems.ts +183 -0
- package/frontend/src/lib/utils/{validation-schemas.ts → schemaValidations.ts} +10 -5
- package/frontend/src/lib/utils/utils.ts +19 -1
- package/frontend/src/vite-env.d.ts +1 -0
- package/frontend/vite.config.ts +5 -3
- package/functions/server.ts +28 -3
- package/functions/worker-template.js +15 -4
- package/i18n/README.ar.md +130 -0
- package/i18n/README.de.md +130 -0
- package/i18n/README.es.md +154 -0
- package/i18n/README.fr.md +134 -0
- package/i18n/README.hi.md +129 -0
- package/i18n/README.ja.md +174 -0
- package/i18n/README.ko.md +137 -0
- package/i18n/README.pt-BR.md +131 -0
- package/i18n/README.ru.md +129 -0
- package/i18n/README.zh-CN.md +133 -0
- package/openapi/ai.yaml +31 -4
- package/openapi/auth.yaml +827 -146
- package/package.json +16 -7
- package/shared-schemas/package.json +1 -1
- package/shared-schemas/src/ai-api.schema.ts +34 -58
- package/shared-schemas/src/ai.schema.ts +5 -0
- package/shared-schemas/src/auth-api.schema.ts +154 -8
- package/shared-schemas/src/auth.schema.ts +42 -6
- package/shared-schemas/src/cloud-events.schema.ts +57 -0
- package/shared-schemas/src/database-api.schema.ts +3 -3
- package/shared-schemas/src/database.schema.ts +1 -1
- package/shared-schemas/src/index.ts +1 -0
- package/shared-schemas/src/logs-api.schema.ts +7 -1
- package/shared-schemas/src/logs.schema.ts +26 -0
- package/shared-schemas/src/metadata.schema.ts +9 -4
- package/test-gemini.sh +35 -0
- package/test-usage-admin.sh +57 -0
- package/test-usage.sh +50 -0
- package/zeabur/README.md +13 -0
- package/zeabur/template.yml +1032 -0
- package/.github/workflows/deploy-aws.yml +0 -130
- package/backend/src/api/routes/agent.ts +0 -29
- package/backend/src/api/routes/auth.oauth.ts +0 -482
- package/backend/src/api/routes/auth.ts +0 -386
- package/backend/src/api/routes/docs.ts +0 -66
- package/backend/src/api/routes/functions.ts +0 -183
- package/backend/src/api/routes/openapi.ts +0 -82
- package/backend/src/api/routes/usage.ts +0 -96
- package/backend/src/core/ai/client.ts +0 -242
- package/backend/src/core/ai/model.ts +0 -117
- package/backend/src/core/auth/auth.ts +0 -780
- package/backend/src/core/database/table.ts +0 -772
- package/backend/src/core/documentation/agent.ts +0 -689
- package/backend/src/core/documentation/openapi.ts +0 -856
- package/backend/src/core/logs/analytics.ts +0 -76
- package/backend/src/core/logs/providers/localdb.provider.ts +0 -246
- package/backend/src/core/storage/storage.ts +0 -923
- package/backend/src/utils/cloud-token.ts +0 -39
- package/backend/src/utils/helpers.ts +0 -49
- package/backend/src/utils/uuid.ts +0 -9
- package/backend/tests/manual/test-better-auth.sh +0 -303
- package/docker-init/db/logs.sql +0 -9
- package/frontend/README.md +0 -112
- package/frontend/src/components/datagrid/index.tsx +0 -20
- package/frontend/src/components/layout/CloudLayout.tsx +0 -95
- package/frontend/src/features/ai/components/AIConfigDialog.tsx +0 -76
- package/frontend/src/features/ai/components/AIConfigForm.tsx +0 -222
- package/frontend/src/features/ai/components/fields/ModalityField.tsx +0 -87
- package/frontend/src/features/ai/components/fields/ModelSelectionField.tsx +0 -134
- package/frontend/src/features/ai/components/fields/SystemPromptField.tsx +0 -33
- package/frontend/src/features/auth/components/AddOAuthDialog.tsx +0 -106
- package/frontend/src/features/auth/components/AuthMethodTab.tsx +0 -238
- package/frontend/src/features/auth/components/UsersTab.tsx +0 -114
- package/frontend/src/features/auth/page/AuthenticationPage.tsx +0 -169
- package/frontend/src/features/database/hooks/UseLinkModal.tsx +0 -78
- package/frontend/src/features/functions/components/FunctionViewer.tsx +0 -46
- package/frontend/src/features/functions/components/FunctionsContent.tsx +0 -88
- package/frontend/src/features/login/components/AuthErrorBoundary.tsx +0 -87
- package/frontend/src/features/login/components/PrivateRoute.tsx +0 -24
- package/frontend/src/features/logs/components/AnalyticsLogsTable.tsx +0 -313
- package/frontend/src/features/logs/components/LogsTable.tsx +0 -199
- package/frontend/src/features/logs/page/AnalyticsLogsPage.tsx +0 -530
- package/frontend/src/features/metadata/index.ts +0 -0
- package/frontend/src/features/metadata/page/MetadataPage.tsx +0 -136
- package/frontend/src/features/onboard/components/CompletionCard.tsx +0 -41
- package/frontend/src/features/onboard/components/OnboardButton.tsx +0 -84
- package/frontend/src/features/onboard/components/StepContent.tsx +0 -91
- package/frontend/src/features/onboard/components/TestConnectionStep.tsx +0 -53
- package/frontend/src/features/onboard/components/mcp/McpInstallation.tsx +0 -144
- package/frontend/src/features/onboard/page/OnBoardPage.tsx +0 -104
- package/frontend/src/features/onboard/types.ts +0 -8
- package/frontend/src/lib/contexts/OnboardStepContext.tsx +0 -68
- package/frontend/src/lib/hooks/useOnboardingCompletion.ts +0 -29
- /package/backend/src/api/{middleware → middlewares}/error.ts +0 -0
- /package/backend/src/api/{middleware → middlewares}/upload.ts +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/000_create-base-tables.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/001_create-helper-functions.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/002_rename-auth-tables.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/003_create-users-table.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/004_add-reload-postgrest-func.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/005_enable-project-admin-modify-users.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/006_modify-ai-usage-table.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/007_drop-metadata-table.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/008_add-system-tables.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/009_add-function-secrets.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/010_modify-ai-config-modalities.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/011_refactor-secrets-table.sql +0 -0
- /package/backend/{migrations → src/infra/database/migrations}/012_add-storage-uploaded-by.sql +0 -0
- /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).
|