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
|
@@ -106,7 +106,7 @@ export const jsonSchema = z
|
|
|
106
106
|
}
|
|
107
107
|
}),
|
|
108
108
|
z.object({}).passthrough(),
|
|
109
|
-
z.array(z.
|
|
109
|
+
z.array(z.unknown()),
|
|
110
110
|
z.null(),
|
|
111
111
|
])
|
|
112
112
|
.catch(() => {
|
|
@@ -115,12 +115,17 @@ export const jsonSchema = z
|
|
|
115
115
|
|
|
116
116
|
export const stringSchema = z.union([z.string(), z.null()]);
|
|
117
117
|
|
|
118
|
-
|
|
119
|
-
export const
|
|
118
|
+
// Auth validation schemas
|
|
119
|
+
export const emailSchema = z
|
|
120
|
+
.string()
|
|
121
|
+
.min(1, 'Email is required')
|
|
122
|
+
.email('Please enter a valid email address')
|
|
123
|
+
.toLowerCase()
|
|
124
|
+
.trim();
|
|
120
125
|
|
|
121
126
|
export const loginFormSchema = z.object({
|
|
122
127
|
email: emailSchema,
|
|
123
|
-
password:
|
|
128
|
+
password: z.string(),
|
|
124
129
|
});
|
|
125
130
|
|
|
126
|
-
export type
|
|
131
|
+
export type LoginForm = z.infer<typeof loginFormSchema>;
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
dateTimeSchema,
|
|
13
13
|
jsonSchema,
|
|
14
14
|
stringSchema,
|
|
15
|
-
} from './
|
|
15
|
+
} from './schemaValidations';
|
|
16
16
|
import { v4 as uuidv4 } from 'uuid';
|
|
17
17
|
import type { ConvertedValue, DisplayValue, ValueConversionResult } from '@/components/datagrid';
|
|
18
18
|
|
|
@@ -163,3 +163,21 @@ export const getBackendUrl = () => {
|
|
|
163
163
|
const isHttp = window.location.protocol === 'http:';
|
|
164
164
|
return isHttp ? 'http://localhost:7130' : window.location.origin;
|
|
165
165
|
};
|
|
166
|
+
|
|
167
|
+
export const isIframe = () => {
|
|
168
|
+
return window.self !== window.top;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Formats a timestamp string to a human-readable format
|
|
173
|
+
* Used consistently across the application for displaying timestamps
|
|
174
|
+
* @param timestamp - ISO timestamp string
|
|
175
|
+
* @returns Formatted date string (e.g., "Jan 15, 2025, 03:30 PM")
|
|
176
|
+
*/
|
|
177
|
+
export function formatTime(timestamp: string): string {
|
|
178
|
+
const date = parseISO(timestamp);
|
|
179
|
+
if (!isValid(date)) {
|
|
180
|
+
return timestamp; // Return original if invalid
|
|
181
|
+
}
|
|
182
|
+
return format(date, 'MMM dd, yyyy, hh:mm a');
|
|
183
|
+
}
|
package/frontend/vite.config.ts
CHANGED
|
@@ -4,6 +4,8 @@ import svgr from 'vite-plugin-svgr';
|
|
|
4
4
|
import tailwindcss from '@tailwindcss/vite';
|
|
5
5
|
import path from 'path';
|
|
6
6
|
|
|
7
|
+
const BACKEND_URL = process.env.VITE_API_BASE_URL || 'http://localhost:7130';
|
|
8
|
+
|
|
7
9
|
export default defineConfig({
|
|
8
10
|
plugins: [react(), tailwindcss(), svgr()],
|
|
9
11
|
resolve: {
|
|
@@ -17,15 +19,15 @@ export default defineConfig({
|
|
|
17
19
|
port: 7131,
|
|
18
20
|
proxy: {
|
|
19
21
|
'/api': {
|
|
20
|
-
target:
|
|
22
|
+
target: BACKEND_URL,
|
|
21
23
|
changeOrigin: true,
|
|
22
24
|
},
|
|
23
25
|
'/functions': {
|
|
24
|
-
target:
|
|
26
|
+
target: BACKEND_URL,
|
|
25
27
|
changeOrigin: true,
|
|
26
28
|
},
|
|
27
29
|
'/socket.io': {
|
|
28
|
-
target:
|
|
30
|
+
target: BACKEND_URL,
|
|
29
31
|
ws: true,
|
|
30
32
|
changeOrigin: true,
|
|
31
33
|
},
|
package/functions/server.ts
CHANGED
|
@@ -80,7 +80,7 @@ async function getFunctionCode(slug: string): Promise<string | null> {
|
|
|
80
80
|
WHERE slug = ${slug} AND status = 'active'
|
|
81
81
|
`;
|
|
82
82
|
|
|
83
|
-
if (result.rows.length
|
|
83
|
+
if (!result.rows.length) {
|
|
84
84
|
return null;
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -244,6 +244,7 @@ Deno.serve({ port }, async (req: Request) => {
|
|
|
244
244
|
const slugMatch = pathname.match(/^\/([a-zA-Z0-9_-]+)$/);
|
|
245
245
|
if (slugMatch) {
|
|
246
246
|
const slug = slugMatch[1];
|
|
247
|
+
const startTime = Date.now();
|
|
247
248
|
|
|
248
249
|
// Get function code from database
|
|
249
250
|
const code = await getFunctionCode(slug);
|
|
@@ -257,9 +258,33 @@ Deno.serve({ port }, async (req: Request) => {
|
|
|
257
258
|
|
|
258
259
|
// Execute in worker with original request
|
|
259
260
|
try {
|
|
260
|
-
|
|
261
|
+
const response = await executeInWorker(code, req);
|
|
262
|
+
const duration = Date.now() - startTime;
|
|
263
|
+
|
|
264
|
+
// Log completed invocations only
|
|
265
|
+
console.log(
|
|
266
|
+
JSON.stringify({
|
|
267
|
+
timestamp: new Date().toISOString(),
|
|
268
|
+
level: 'info',
|
|
269
|
+
slug,
|
|
270
|
+
method: req.method,
|
|
271
|
+
status: response.status,
|
|
272
|
+
duration: `${duration}ms`,
|
|
273
|
+
})
|
|
274
|
+
);
|
|
275
|
+
|
|
276
|
+
return response;
|
|
261
277
|
} catch (error) {
|
|
262
|
-
|
|
278
|
+
const duration = Date.now() - startTime;
|
|
279
|
+
console.error(
|
|
280
|
+
JSON.stringify({
|
|
281
|
+
timestamp: new Date().toISOString(),
|
|
282
|
+
level: 'error',
|
|
283
|
+
slug,
|
|
284
|
+
error: error instanceof Error ? error.message : String(error),
|
|
285
|
+
duration: `${duration}ms`,
|
|
286
|
+
})
|
|
287
|
+
);
|
|
263
288
|
return new Response(JSON.stringify({ error: 'Function execution failed' }), {
|
|
264
289
|
status: 500,
|
|
265
290
|
headers: { 'Content-Type': 'application/json' },
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
|
|
10
10
|
// Import SDK at worker level - this will be available to all functions
|
|
11
11
|
import { createClient } from 'npm:@insforge/sdk';
|
|
12
|
+
// Import base64 utilities for encoding/decoding
|
|
13
|
+
import { encodeBase64, decodeBase64 } from 'https://deno.land/std@0.224.0/encoding/base64.ts';
|
|
12
14
|
|
|
13
15
|
// Handle the single message with code, request data, and secrets
|
|
14
16
|
self.onmessage = async (e) => {
|
|
@@ -48,17 +50,26 @@ self.onmessage = async (e) => {
|
|
|
48
50
|
* - module.exports (to export their function)
|
|
49
51
|
* - createClient (the Insforge SDK)
|
|
50
52
|
* - Deno (for Deno.env.get() etc.)
|
|
53
|
+
* - encodeBase64, decodeBase64 (base64 encoding utilities)
|
|
51
54
|
*
|
|
52
55
|
* We inject our mockDeno as the 'Deno' parameter, so when the user's code
|
|
53
56
|
* calls Deno.env.get('MY_SECRET'), it's actually calling mockDeno.env.get('MY_SECRET')
|
|
54
57
|
*/
|
|
55
|
-
const wrapper = new Function(
|
|
58
|
+
const wrapper = new Function(
|
|
59
|
+
'exports',
|
|
60
|
+
'module',
|
|
61
|
+
'createClient',
|
|
62
|
+
'Deno',
|
|
63
|
+
'encodeBase64',
|
|
64
|
+
'decodeBase64',
|
|
65
|
+
code
|
|
66
|
+
);
|
|
56
67
|
const exports = {};
|
|
57
68
|
const module = { exports };
|
|
58
69
|
|
|
59
|
-
// Execute the wrapper, passing mockDeno as the Deno global
|
|
60
|
-
// This makes Deno.env.get() available inside the user's function
|
|
61
|
-
wrapper(exports, module, createClient, mockDeno);
|
|
70
|
+
// Execute the wrapper, passing mockDeno as the Deno global and utility functions
|
|
71
|
+
// This makes Deno.env.get(), encodeBase64(), and decodeBase64() available inside the user's function
|
|
72
|
+
wrapper(exports, module, createClient, mockDeno, encodeBase64, decodeBase64);
|
|
62
73
|
|
|
63
74
|
// Get the exported function
|
|
64
75
|
const functionHandler = module.exports || exports.default || exports;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<a href="https://insforge.dev">
|
|
3
|
+
<img src="../assets/banner.png" alt="Insforge Logo">
|
|
4
|
+
</a>
|
|
5
|
+
|
|
6
|
+
</div>
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="#quickstart-tldr">ابدأ الآن</a> ·
|
|
9
|
+
<a href="https://docs.insforge.dev/introduction">توثيق</a> ·
|
|
10
|
+
<a href="https://discord.gg/MPxwj5xVvW">Discord</a>
|
|
11
|
+
</p>
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="License"></a>
|
|
14
|
+
<a href="https://discord.gg/MPxwj5xVvW"><img src="https://img.shields.io/badge/Discord-Join%20Community-7289DA?logo=discord&logoColor=white" alt="Discord"></a>
|
|
15
|
+
<a href="https://github.com/InsForge/insforge/stargazers"><img src="https://img.shields.io/github/stars/InsForge/insforge?style=social" alt="GitHub Stars"></a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
# InsForge
|
|
19
|
+
|
|
20
|
+
**InsForge هو البديل الأصلي لـ Supabase.** نعمل على تطوير ميزات Supabase بطريقة تعتمد على الذكاء الاصطناعي، مما يُمكّن وكلاء الذكاء الاصطناعي من بناء وإدارة تطبيقات متكاملة بشكل مستقل.
|
|
21
|
+
## الميزات الرئيسية وحالات الاستخدام
|
|
22
|
+
|
|
23
|
+
### الميزات الأساسية:
|
|
24
|
+
- **المصادقة** - نظام إدارة مستخدمين متكامل
|
|
25
|
+
- **قاعدة بيانات** - مرونة في تخزين واسترجاع البيانات
|
|
26
|
+
- **التخزين** - إدارة وتنظيم الملفات
|
|
27
|
+
- **وظائف بدون خادم** - قوة حوسبة قابلة للتطوير
|
|
28
|
+
- **نشر الموقع** *(قريبًا)* - سهولة نشر التطبيقات
|
|
29
|
+
|
|
30
|
+
### حالات الاستخدام: بناء تطبيقات متكاملة باستخدام اللغة الطبيعية
|
|
31
|
+
- **ربط وكلاء الذكاء الاصطناعي بـ InsForge** - تمكين Claude أو GPT أو وكلاء الذكاء الاصطناعي الآخرين لإدارة الواجهة الخلفية
|
|
32
|
+
- **إضافة واجهة خلفية لمشاريع برمجة Vibe على غرار Lovable أو Bolt** - واجهة خلفية فورية للواجهات الأمامية المُولّدة بالذكاء الاصطناعي
|
|
33
|
+
|
|
34
|
+
## أمثلة سريعة:
|
|
35
|
+
<td align="center">
|
|
36
|
+
<img src="../assets/userflow.png" alt="userFlow">
|
|
37
|
+
<br>
|
|
38
|
+
</td>
|
|
39
|
+
|
|
40
|
+
<a id="quickstart-tldr"></a>
|
|
41
|
+
## البدء السريع (TL;DR)
|
|
42
|
+
### 1. تثبيت وتشغيل InsForge
|
|
43
|
+
|
|
44
|
+
**استخدام Docker (موصى به)**
|
|
45
|
+
المتطلبات الأساسية: [Docker](https://www.docker.com/) + [Node.js](https://nodejs.org/)
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Run with Docker
|
|
49
|
+
git clone https://github.com/insforge/insforge.git
|
|
50
|
+
cd insforge
|
|
51
|
+
cp .env.example .env
|
|
52
|
+
docker compose up
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 2. توصيل وكيل الذكاء الاصطناعي
|
|
56
|
+
|
|
57
|
+
تفضل بزيارة لوحة تحكم InsForge (افتراضيًا: http://localhost:7131)، وسجّل الدخول، واتبع دليل "التوصيل"(Connect)، ثم قم بإعداد خادم MCP الخاص بك.
|
|
58
|
+
|
|
59
|
+
<div align="center">
|
|
60
|
+
<table>
|
|
61
|
+
<tr>
|
|
62
|
+
<td align="center">
|
|
63
|
+
<img src="../assets/signin.png" alt="Sign In">
|
|
64
|
+
<br>
|
|
65
|
+
<em>تسجيل الدخول إلى InsForge</em>
|
|
66
|
+
</td>
|
|
67
|
+
<td align="center">
|
|
68
|
+
<img src="../assets/mcpInstallv2.png" alt="MCP Configuration">
|
|
69
|
+
<br>
|
|
70
|
+
<em>تكوين اتصال MCP</em>
|
|
71
|
+
</td>
|
|
72
|
+
</tr>
|
|
73
|
+
</table>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
### 3. اختبر الاتصال
|
|
77
|
+
|
|
78
|
+
في وكيلك، أرسل:
|
|
79
|
+
```
|
|
80
|
+
InsForge is my backend platform, what is my current backend structure?
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
<div align="center">
|
|
84
|
+
<img src="../assets/sampleResponse.png" alt="Successful Connection Response" width="600">
|
|
85
|
+
<br>
|
|
86
|
+
<em>عينة من استدعاءات الاستجابة الناجحة لأدوات insforge MCP</em>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
### 4. ابدأ باستخدام InsForge
|
|
90
|
+
|
|
91
|
+
ابدأ ببناء مشروعك في مجلد جديد! أنشئ تطبيقك التالي لإدارة المهام، أو نسخة من إنستغرام، أو منصتك الإلكترونية في ثوانٍ!
|
|
92
|
+
|
|
93
|
+
**نماذج لمقترحات المشروع:**
|
|
94
|
+
- "Build a todo app with user authentication"
|
|
95
|
+
- "Create an Instagram with image upload"
|
|
96
|
+
|
|
97
|
+
## بنيان
|
|
98
|
+
|
|
99
|
+
<div align="center">
|
|
100
|
+
<img src="../assets/archDiagram.png" alt="Architecture Diagram">
|
|
101
|
+
<br>
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
## المساهمة
|
|
107
|
+
|
|
108
|
+
**المساهمة**: إذا كنت مهتمًا بالمساهمة، يمكنك الاطلاع على دليلنا هنا [CONTRIBUTING.md](CONTRIBUTING.md). نحن نقدر حقًا طلبات السحب، ونقدر جميع أنواع المساعدة !
|
|
109
|
+
|
|
110
|
+
**الدعم**: إذا كنت بحاجة إلى أي مساعدة أو دعم، فنحن نستجيب على قناتنا [Discord channel](https://discord.gg/MPxwj5xVvW)، ولا تتردد في مراسلتنا عبر البريد الإلكتروني [info@insforge.dev](mailto:info@insforge.dev) أيضاً!
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
## التوثيق والدعم
|
|
114
|
+
|
|
115
|
+
### التوثيق
|
|
116
|
+
- **[الوثائق الرسمية](https://docs.insforge.dev/introduction)** - أدلة شاملة ومراجع لواجهات برمجة التطبيقات
|
|
117
|
+
|
|
118
|
+
### المجتمع
|
|
119
|
+
- انضم إلى مجتمعنا النابض بالحياة **[Discord](https://discord.gg/D3Vf8zD2ZS)**
|
|
120
|
+
- تابعنا للحصول على التحديثات والنصائح **[Twitter](https://x.com/InsForge_dev)**
|
|
121
|
+
|
|
122
|
+
### للتواصل
|
|
123
|
+
- **البريد الإلكتروني**: info@insforge.dev
|
|
124
|
+
|
|
125
|
+
## الترخيص
|
|
126
|
+
تم ترخيص هذا المشروع بموجب ترخيص Apache 2.0 - راجع ملف [LICENSE](LICENSE) للحصول على التفاصيل.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
[](https://www.star-history.com/#InsForge/insforge&Date)
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<a href="https://insforge.dev">
|
|
3
|
+
<img src="assets/banner.png" alt="Insforge Logo">
|
|
4
|
+
</a>
|
|
5
|
+
|
|
6
|
+
</div>
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="#quickstart-tldr">Erste Schritte</a> ·
|
|
9
|
+
<a href="https://docs.insforge.dev/introduction">Dokumentation</a> ·
|
|
10
|
+
<a href="https://discord.com/invite/MPxwj5xVvW">Discord</a>
|
|
11
|
+
</p>
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="Lizenz"></a>
|
|
14
|
+
<a href="https://discord.com/invite/MPxwj5xVvW"><img src="https://img.shields.io/badge/Discord-Join%20Community-7289DA?logo=discord&logoColor=white" alt="Discord"></a>
|
|
15
|
+
<a href="https://github.com/InsForge/insforge/stargazers"><img src="https://img.shields.io/github/stars/InsForge/insforge?style=social" alt="GitHub Sterne"></a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
# InsForge
|
|
19
|
+
|
|
20
|
+
**InsForge ist die Agent-Native Supabase Alternative.** Wir entwickeln die Funktionen von Supabase auf eine AI-native Weise und ermöglichen es AI Agenten, vollständige Anwendungen autonom zu erstellen und zu verwalten.
|
|
21
|
+
|
|
22
|
+
## Hauptfunktionen & Anwendungsfälle
|
|
23
|
+
|
|
24
|
+
### Kernfunktionen:
|
|
25
|
+
- **Authentifizierung** - Vollständiges Benutzerverwaltungssystem
|
|
26
|
+
- **Datenbank** - Flexible Datenspeicherung und -abruf
|
|
27
|
+
- **Speicher** - Dateiverwaltung und -organisation
|
|
28
|
+
- **Serverless Functions** - Skalierbare Rechenleistung
|
|
29
|
+
- **Website-Deployment** *(in Kürze)* - Einfache Anwendungsbereitstellung
|
|
30
|
+
|
|
31
|
+
### Anwendungsfälle: Entwicklung von Full-Stack-Anwendungen mit natürlicher Sprache
|
|
32
|
+
- **AI-Agenten mit InsForge verbinden** - Ermöglichen Sie Claude, GPT oder anderen AI-Agenten die Verwaltung Ihres Backends
|
|
33
|
+
- **Backend zu Lovable oder Bolt-Style Vibe Coding-Projekten hinzufügen** - Sofortiges Backend für AI-generierte Frontends
|
|
34
|
+
|
|
35
|
+
## Prompt-Beispiele:
|
|
36
|
+
|
|
37
|
+
<td align="center">
|
|
38
|
+
<img src="assets/userflow.png" alt="Benutzerablauf">
|
|
39
|
+
<br>
|
|
40
|
+
</td>
|
|
41
|
+
|
|
42
|
+
## Schnellstart TLDR;
|
|
43
|
+
|
|
44
|
+
### 1. InsForge installieren und ausführen
|
|
45
|
+
|
|
46
|
+
**Docker verwenden (Empfohlen)**
|
|
47
|
+
Voraussetzungen: [Docker](https://www.docker.com/) + [Node.js](https://nodejs.org/)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Mit Docker ausführen
|
|
51
|
+
git clone https://github.com/insforge/insforge.git
|
|
52
|
+
cd insforge
|
|
53
|
+
cp .env.example .env
|
|
54
|
+
docker compose up
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 2. AI-Agent verbinden
|
|
58
|
+
|
|
59
|
+
Besuchen Sie das InsForge Dashboard (Standard: http://localhost:7131), melden Sie sich an und folgen Sie der "Verbinden"-Anleitung, um Ihren MCP einzurichten.
|
|
60
|
+
|
|
61
|
+
<div align="center">
|
|
62
|
+
<table>
|
|
63
|
+
<tr>
|
|
64
|
+
<td align="center">
|
|
65
|
+
<img src="assets/signin.png" alt="Anmelden">
|
|
66
|
+
<br>
|
|
67
|
+
<em>Bei InsForge anmelden</em>
|
|
68
|
+
</td>
|
|
69
|
+
<td align="center">
|
|
70
|
+
<img src="assets/mcpInstallv2.png" alt="MCP-Konfiguration">
|
|
71
|
+
<br>
|
|
72
|
+
<em>MCP-Verbindung konfigurieren</em>
|
|
73
|
+
</td>
|
|
74
|
+
</tr>
|
|
75
|
+
</table>
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
### 3. Verbindung testen
|
|
79
|
+
|
|
80
|
+
Senden Sie in Ihrem Agenten:
|
|
81
|
+
```
|
|
82
|
+
InsForge ist meine Backend-Plattform, wie ist meine aktuelle Backend-Struktur?
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
<div align="center">
|
|
86
|
+
<img src="assets/sampleResponse.png" alt="Erfolgreiche Verbindungsantwort" width="600">
|
|
87
|
+
<br>
|
|
88
|
+
<em>Beispiel einer erfolgreichen Antwort beim Aufruf von InsForge MCP-Tools</em>
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
### 4. InsForge verwenden
|
|
92
|
+
|
|
93
|
+
Beginnen Sie mit der Entwicklung Ihres Projekts in einem neuen Verzeichnis! Erstellen Sie Ihre nächste Todo-App, Instagram-Klon oder Online-Plattform in Sekundenschnelle!
|
|
94
|
+
|
|
95
|
+
**Beispiel-Projekt-Prompts:**
|
|
96
|
+
- "Erstelle eine Todo-App mit Benutzerauthentifizierung"
|
|
97
|
+
- "Erstelle ein Instagram mit Bild-Upload"
|
|
98
|
+
|
|
99
|
+
## Architektur
|
|
100
|
+
|
|
101
|
+
<div align="center">
|
|
102
|
+
<img src="assets/archDiagram.png" alt="Architekturdiagramm">
|
|
103
|
+
<br>
|
|
104
|
+
</div>
|
|
105
|
+
|
|
106
|
+
## Mitwirken
|
|
107
|
+
|
|
108
|
+
**Mitwirken**: Wenn Sie interessiert sind mitzuwirken, finden Sie unseren Leitfaden hier [CONTRIBUTING.md](CONTRIBUTING.md). Wir freuen uns sehr über Pull Requests, jede Art von Hilfe wird geschätzt!
|
|
109
|
+
|
|
110
|
+
**Unterstützung**: Wenn Sie Hilfe oder Unterstützung benötigen, sind wir in unserem [Discord-Kanal](https://discord.com/invite/MPxwj5xVvW) erreichbar, und Sie können uns auch gerne eine E-Mail an [info@insforge.dev](mailto:info@insforge.dev) schicken!
|
|
111
|
+
|
|
112
|
+
## Dokumentation & Unterstützung
|
|
113
|
+
|
|
114
|
+
### Dokumentation
|
|
115
|
+
- **[Offizielle Dokumentation](https://docs.insforge.dev/introduction)** - Umfassende Anleitungen und API-Referenzen
|
|
116
|
+
|
|
117
|
+
### Community
|
|
118
|
+
- **[Discord](https://discord.com/invite/MPxwj5xVvW)** - Treten Sie unserer lebendigen Community bei
|
|
119
|
+
- **[Twitter](https://x.com/InsForge_dev)** - Folgen Sie uns für Updates und Tipps
|
|
120
|
+
|
|
121
|
+
### Kontakt
|
|
122
|
+
- **E-Mail**: info@insforge.dev
|
|
123
|
+
|
|
124
|
+
## Lizenz
|
|
125
|
+
|
|
126
|
+
Dieses Projekt steht unter der Apache License 2.0 - siehe die [LICENSE](LICENSE) Datei für Details.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
[](https://www.star-history.com/#InsForge/insforge&Date)
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<a href="https://insforge.dev">
|
|
3
|
+
<img src="../assets/banner.png" alt="Logo de InsForge">
|
|
4
|
+
</a>
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="#inicio-rápido-tldr">Comenzar</a> ·
|
|
9
|
+
<a href="https://docs.insforge.dev/introduction">Documentación</a> ·
|
|
10
|
+
<a href="https://discord.com/invite/MPxwj5xVvW">Discord</a>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="Licencia"></a>
|
|
15
|
+
<a href="https://discord.com/invite/MPxwj5xVvW"><img src="https://img.shields.io/badge/Discord-Unirse%20a%20la%20Comunidad-7289DA?logo=discord&logoColor=white" alt="Discord"></a>
|
|
16
|
+
<a href="https://github.com/InsForge/insforge/stargazers"><img src="https://img.shields.io/github/stars/InsForge/insforge?style=social" alt="Estrellas en GitHub"></a>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
# InsForge
|
|
20
|
+
|
|
21
|
+
**InsForge es la alternativa nativa para agentes de Supabase.**
|
|
22
|
+
Estamos construyendo las funcionalidades de Supabase de una manera nativa para IA, permitiendo que los agentes de inteligencia artificial creen y administren aplicaciones full-stack de forma autónoma.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Funciones Clave y Casos de Uso
|
|
27
|
+
|
|
28
|
+
### Funciones Principales:
|
|
29
|
+
- **Autenticación** - Sistema completo de gestión de usuarios
|
|
30
|
+
- **Base de Datos** - Almacenamiento y recuperación de datos flexible
|
|
31
|
+
- **Almacenamiento** - Gestión y organización de archivos
|
|
32
|
+
- **Funciones Serverless** - Potencia de cómputo escalable
|
|
33
|
+
- **Despliegue de Sitios** *(próximamente)* - Despliegue de aplicaciones fácilmente
|
|
34
|
+
|
|
35
|
+
### Casos de Uso: Crear aplicaciones full-stack usando lenguaje natural
|
|
36
|
+
- **Conecta agentes de IA a InsForge** - Permite que Claude, GPT u otros agentes de IA administren tu Backend
|
|
37
|
+
- **Agrega un Backend a proyectos tipo Lovable o Bolt** - Backend instantáneo para Frontends generados por IA
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Ejemplos de Prompts:
|
|
42
|
+
|
|
43
|
+
<td align="center">
|
|
44
|
+
<img src="../assets/userflow.png" alt="Flujo de usuario">
|
|
45
|
+
<br>
|
|
46
|
+
</td>
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Inicio Rápido (TLDR)
|
|
51
|
+
|
|
52
|
+
### 1. Instalar y ejecutar InsForge
|
|
53
|
+
|
|
54
|
+
**Usar Docker (Recomendado)**
|
|
55
|
+
Requisitos previos: [Docker](https://www.docker.com/) + [Node.js](https://nodejs.org/)
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Ejecutar con Docker
|
|
59
|
+
git clone https://github.com/insforge/insforge.git
|
|
60
|
+
cd insforge
|
|
61
|
+
cp .env.example .env
|
|
62
|
+
docker compose up
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
### 2. Conectar un Agente de IA
|
|
68
|
+
|
|
69
|
+
Visita el **Panel de Control de InsForge** (por defecto: http://localhost:7131), inicia sesión y sigue la guía “Connect” para configurar tu MCP.
|
|
70
|
+
|
|
71
|
+
<div align="center">
|
|
72
|
+
<table>
|
|
73
|
+
<tr>
|
|
74
|
+
<td align="center">
|
|
75
|
+
<img src="../assets/signin.png" alt="Iniciar Sesión">
|
|
76
|
+
<br>
|
|
77
|
+
<em>Inicia sesión en InsForge</em>
|
|
78
|
+
</td>
|
|
79
|
+
<td align="center">
|
|
80
|
+
<img src="../assets/mcpInstallv2.png" alt="Configuración MCP">
|
|
81
|
+
<br>
|
|
82
|
+
<em>Configura la conexión MCP</em>
|
|
83
|
+
</td>
|
|
84
|
+
</tr>
|
|
85
|
+
</table>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
### 3. Probar la Conexión
|
|
91
|
+
|
|
92
|
+
En tu agente, envía:
|
|
93
|
+
```
|
|
94
|
+
InsForge es mi plataforma Backend, ¿cuál es mi estructura actual de Backend?
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
<div align="center">
|
|
98
|
+
<img src="../assets/sampleResponse.png" alt="Respuesta de Conexión Exitosa" width="600">
|
|
99
|
+
<br>
|
|
100
|
+
<em>Ejemplo de respuesta exitosa usando las herramientas MCP de InsForge</em>
|
|
101
|
+
</div>
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
### 4. Comienza a Usar InsForge
|
|
106
|
+
|
|
107
|
+
Empieza a construir tu proyecto en un nuevo directorio.
|
|
108
|
+
¡Crea tu próxima aplicación de tareas, clon de Instagram o plataforma en línea en segundos!
|
|
109
|
+
|
|
110
|
+
**Ejemplos de Prompts de Proyecto:**
|
|
111
|
+
- “Crea una aplicación de tareas con autenticación de usuario”
|
|
112
|
+
- “Crea un Instagram con carga de imágenes”
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Arquitectura
|
|
117
|
+
|
|
118
|
+
<div align="center">
|
|
119
|
+
<img src="../assets/archDiagram.png" alt="Diagrama de Arquitectura">
|
|
120
|
+
<br>
|
|
121
|
+
</div>
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Contribuir
|
|
126
|
+
|
|
127
|
+
**Contribuciones:** Si estás interesado en contribuir, revisa nuestra guía [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
128
|
+
Agradecemos mucho los *pull requests* — ¡toda ayuda es bienvenida!
|
|
129
|
+
|
|
130
|
+
**Soporte:** Si necesitas ayuda, somos muy receptivos en nuestro [canal de Discord](https://discord.com/invite/MPxwj5xVvW), o puedes escribirnos a [info@insforge.dev](mailto:info@insforge.dev).
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Documentación y Soporte
|
|
135
|
+
|
|
136
|
+
### Documentación
|
|
137
|
+
- **[Documentación Oficial](https://docs.insforge.dev/introduction)** - Guías completas y referencias de API
|
|
138
|
+
|
|
139
|
+
### Comunidad
|
|
140
|
+
- **[Discord](https://discord.com/invite/MPxwj5xVvW)** - Únete a nuestra comunidad activa
|
|
141
|
+
- **[Twitter](https://x.com/InsForge_dev)** - Síguenos para actualizaciones y consejos
|
|
142
|
+
|
|
143
|
+
### Contacto
|
|
144
|
+
- **Correo Electrónico:** info@insforge.dev
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Licencia
|
|
149
|
+
|
|
150
|
+
Este proyecto está licenciado bajo la **Licencia Apache 2.0** – consulta el archivo [LICENSE](LICENSE) para más detalles.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
[](https://www.star-history.com/#InsForge/insforge&Date)
|