insforge 0.3.2 → 1.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -781
- 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,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "insforge-official-marketplace",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "InsForge Team",
|
|
5
|
+
"email": "tony.chang@insforge.dev"
|
|
6
|
+
},
|
|
7
|
+
"plugins": [
|
|
8
|
+
{
|
|
9
|
+
"name": "insforge",
|
|
10
|
+
"source": "./claude-plugin",
|
|
11
|
+
"description": "Official InsForge plugin with schema patterns, best practices for database design, RLS policies, and SDK usage examples. Includes patterns for social graphs, multi-tenancy, and complex relationships.",
|
|
12
|
+
"version": "1.0.0",
|
|
13
|
+
"author": {
|
|
14
|
+
"name": "InsForge Team"
|
|
15
|
+
},
|
|
16
|
+
"category": "database",
|
|
17
|
+
"tags": ["insforge", "postgresql", "postgrest", "database", "baas", "backend", "rls", "schema"]
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Instructions building apps with MCP
|
|
3
|
+
globs: *
|
|
4
|
+
alwaysApply: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# InsForge SDK Documentation - Overview
|
|
8
|
+
|
|
9
|
+
## What is InsForge?
|
|
10
|
+
|
|
11
|
+
Backend-as-a-service (BaaS) platform providing:
|
|
12
|
+
|
|
13
|
+
- **Database**: PostgreSQL with PostgREST API
|
|
14
|
+
- **Authentication**: Email/password + OAuth (Google, GitHub)
|
|
15
|
+
- **Storage**: File upload/download
|
|
16
|
+
- **AI**: Chat completions and image generation (OpenAI-compatible)
|
|
17
|
+
- **Functions**: Serverless function deployment
|
|
18
|
+
|
|
19
|
+
## Installation
|
|
20
|
+
|
|
21
|
+
### 🚨 CRITICAL: Follow these steps in order
|
|
22
|
+
|
|
23
|
+
### Step 1: Download Template
|
|
24
|
+
|
|
25
|
+
Use the `download-template` MCP tool to create a new project with your backend URL and anon key pre-configured.
|
|
26
|
+
|
|
27
|
+
### Step 2: Install SDK
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install @insforge/sdk@latest
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Step 3: Create SDK Client
|
|
34
|
+
|
|
35
|
+
You must create a client instance using `createClient()` with your base URL and anon key:
|
|
36
|
+
|
|
37
|
+
```javascript
|
|
38
|
+
import { createClient } from '@insforge/sdk';
|
|
39
|
+
|
|
40
|
+
const client = createClient({
|
|
41
|
+
baseUrl: 'https://your-app.region.insforge.app', // Your InsForge backend URL
|
|
42
|
+
anonKey: 'your-anon-key-here' // Get this from backend metadata
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**API BASE URL**: Your API base URL is `https://your-app.region.insforge.app`.
|
|
48
|
+
|
|
49
|
+
## Getting Detailed Documentation
|
|
50
|
+
|
|
51
|
+
### 🚨 CRITICAL: Always Fetch Documentation Before Writing Code
|
|
52
|
+
|
|
53
|
+
Before writing or editing any InsForge integration code, you **MUST** call the `fetch-docs` MCP tool to get the latest SDK documentation. This ensures you have accurate, up-to-date implementation patterns.
|
|
54
|
+
|
|
55
|
+
### Use the InsForge `fetch-docs` MCP tool to get specific SDK documentation:
|
|
56
|
+
|
|
57
|
+
Available documentation types:
|
|
58
|
+
|
|
59
|
+
- `"instructions"` - Essential backend setup (START HERE)
|
|
60
|
+
- `"db-sdk"` - Database operations with SDK
|
|
61
|
+
- **Authentication** - Choose based on implementation:
|
|
62
|
+
- `"auth-components-react"` - Frontend auth for React+Vite (singlepage App)
|
|
63
|
+
- `"auth-components-react-router"` - Frontend auth for React(Vite+React Router) (Multipage App)
|
|
64
|
+
- `"storage-sdk"` - File storage operations
|
|
65
|
+
- `"functions-sdk"` - Serverless functions invocation
|
|
66
|
+
- `"ai-integration-sdk"` - AI chat and image generation
|
|
67
|
+
|
|
68
|
+
## When to Use SDK vs MCP Tools
|
|
69
|
+
|
|
70
|
+
### Always SDK for Application Logic:
|
|
71
|
+
|
|
72
|
+
- Authentication (register, login, logout, profiles)
|
|
73
|
+
- Database CRUD (select, insert, update, delete)
|
|
74
|
+
- Storage operations (upload, download files)
|
|
75
|
+
- AI operations (chat, image generation)
|
|
76
|
+
- Serverless function invocation
|
|
77
|
+
|
|
78
|
+
### Use MCP Tools for Infrastructure:
|
|
79
|
+
|
|
80
|
+
- Project scaffolding (`download-template`) - Download starter templates with InsForge integration
|
|
81
|
+
- Backend setup and metadata (`get-backend-metadata`)
|
|
82
|
+
- Database schema management (`run-raw-sql`, `get-table-schema`)
|
|
83
|
+
- Storage bucket creation (`create-bucket`, `list-buckets`, `delete-bucket`)
|
|
84
|
+
- Serverless function deployment (`create-function`, `update-function`, `delete-function`)
|
|
85
|
+
|
|
86
|
+
## Important Notes
|
|
87
|
+
|
|
88
|
+
- Use the right framework-specific component package for production-ready auth
|
|
89
|
+
- SDK returns `{data, error}` structure for all operations
|
|
90
|
+
- Database inserts require array format: `[{...}]`
|
|
91
|
+
- Serverless functions have single endpoint (no subpaths)
|
|
92
|
+
- Storage: Upload files to buckets, store URLs in database
|
|
93
|
+
- AI operations are OpenAI-compatible
|
|
94
|
+
- **EXTRA IMPORTANT**: Use Tailwind CSS 3.4 (do not upgrade to v4). Lock these dependencies in `package.json`
|
package/.dockerignore
CHANGED
package/.env.example
CHANGED
|
@@ -24,15 +24,28 @@ ACCESS_API_KEY=ik_your-api-key-here-32-chars-minimum
|
|
|
24
24
|
# Cloud API Host (Optional)
|
|
25
25
|
CLOUD_API_HOST=https://api.insforge.dev
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# Storage + Logs Configuration
|
|
30
|
+
# Storage: Set AWS_S3_BUCKET, AWS_REGION + credentials to use S3 (otherwise uses local filesystem)
|
|
31
|
+
# Logs: Set AWS_REGION + credentials to enable CloudWatch logging (otherwise uses file-based logging)
|
|
29
32
|
AWS_S3_BUCKET=
|
|
30
|
-
AWS_REGION=
|
|
33
|
+
AWS_REGION=
|
|
34
|
+
AWS_ACCESS_KEY_ID=
|
|
35
|
+
AWS_SECRET_ACCESS_KEY=
|
|
36
|
+
|
|
37
|
+
# File-based Logs Configuration (used when AWS credentials are not provided)
|
|
38
|
+
# Directory where log files will be stored (defaults to ./logs)
|
|
39
|
+
LOGS_DIR=
|
|
40
|
+
|
|
31
41
|
|
|
32
42
|
# OpenRouter Configuration
|
|
33
43
|
# Get your API key from https://openrouter.ai/keys
|
|
34
44
|
OPENROUTER_API_KEY=
|
|
35
45
|
|
|
46
|
+
# Posthog Configuration (Only needed if running development mode locally)
|
|
47
|
+
VITE_PUBLIC_POSTHOG_KEY=
|
|
48
|
+
|
|
36
49
|
# OAuth Configuration (Optional)
|
|
37
50
|
# Google OAuth - Get credentials from https://console.cloud.google.com/
|
|
38
51
|
GOOGLE_CLIENT_ID=
|
|
@@ -42,8 +55,24 @@ GOOGLE_CLIENT_SECRET=
|
|
|
42
55
|
GITHUB_CLIENT_ID=
|
|
43
56
|
GITHUB_CLIENT_SECRET=
|
|
44
57
|
|
|
58
|
+
#Microsoft OAuth - Get credentials from https://portal.azure.com/
|
|
59
|
+
MICROSOFT_CLIENT_ID=
|
|
60
|
+
MICROSOFT_CLIENT_SECRET=
|
|
61
|
+
|
|
62
|
+
# Discord OAuth - Get credentials from https://discord.com/developers/applications
|
|
63
|
+
DISCORD_CLIENT_ID=
|
|
64
|
+
DISCORD_CLIENT_SECRET=
|
|
65
|
+
|
|
66
|
+
# LinkedIn OAuth - Get credentials from https://www.linkedin.com/developers/apps
|
|
67
|
+
LINKEDIN_CLIENT_ID=
|
|
68
|
+
LINKEDIN_CLIENT_SECRET=
|
|
69
|
+
|
|
70
|
+
# X OAuth - Get credentials from https://developer.twitter.com/en/portal/dashboard
|
|
71
|
+
X_CLIENT_ID=
|
|
72
|
+
X_CLIENT_SECRET=
|
|
73
|
+
|
|
45
74
|
# Multi-tenant Cloud Configuration
|
|
46
75
|
# Below only used through cloud available solution
|
|
47
76
|
DEPLOYMENT_ID=
|
|
48
77
|
PROJECT_ID=
|
|
49
|
-
APP_KEY=
|
|
78
|
+
APP_KEY=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: 🐛 Bug Report
|
|
2
|
-
description:
|
|
2
|
+
description: Report a bug to help us improve
|
|
3
3
|
title: "[Bug]: "
|
|
4
4
|
labels: ["bug", "needs-triage"]
|
|
5
5
|
assignees: []
|
|
@@ -7,77 +7,30 @@ body:
|
|
|
7
7
|
- type: markdown
|
|
8
8
|
attributes:
|
|
9
9
|
value: |
|
|
10
|
-
Thanks for
|
|
11
|
-
|
|
12
|
-
**Note**: This template is for bug reports only. For feature requests, questions, or other issues, please use the appropriate template.
|
|
13
|
-
|
|
14
|
-
- type: checkboxes
|
|
15
|
-
id: checks
|
|
16
|
-
attributes:
|
|
17
|
-
label: Pre-submission Checklist
|
|
18
|
-
description: Please complete these checks before submitting
|
|
19
|
-
options:
|
|
20
|
-
- label: I have searched existing issues and confirmed this is not a duplicate
|
|
21
|
-
required: true
|
|
22
|
-
- label: I have read the contributing guidelines
|
|
23
|
-
required: true
|
|
24
|
-
- label: This is a legitimate bug report and not spam or promotional content
|
|
25
|
-
required: true
|
|
10
|
+
Thanks for reporting a bug! Fill out what you can - we'll figure out the rest together.
|
|
26
11
|
|
|
27
12
|
- type: textarea
|
|
28
13
|
id: what-happened
|
|
29
14
|
attributes:
|
|
30
|
-
label: What
|
|
31
|
-
description: Describe
|
|
32
|
-
placeholder:
|
|
33
|
-
validations:
|
|
34
|
-
required: true
|
|
35
|
-
|
|
36
|
-
- type: textarea
|
|
37
|
-
id: expected-behavior
|
|
38
|
-
attributes:
|
|
39
|
-
label: Expected Behavior
|
|
40
|
-
description: What did you expect to happen?
|
|
41
|
-
placeholder: A clear description of what you expected to happen
|
|
15
|
+
label: What's the bug?
|
|
16
|
+
description: Describe what went wrong
|
|
17
|
+
placeholder: Tell us what happened...
|
|
42
18
|
validations:
|
|
43
19
|
required: true
|
|
44
20
|
|
|
45
21
|
- type: textarea
|
|
46
22
|
id: steps-reproduce
|
|
47
23
|
attributes:
|
|
48
|
-
label:
|
|
49
|
-
description:
|
|
24
|
+
label: How to reproduce
|
|
25
|
+
description: Steps to trigger the bug (if you know them)
|
|
50
26
|
placeholder: |
|
|
51
|
-
1.
|
|
52
|
-
2.
|
|
53
|
-
3.
|
|
54
|
-
4. See error
|
|
55
|
-
validations:
|
|
56
|
-
required: true
|
|
27
|
+
1. Do this...
|
|
28
|
+
2. Then this...
|
|
29
|
+
3. Bug happens
|
|
57
30
|
|
|
58
31
|
- type: textarea
|
|
59
32
|
id: environment
|
|
60
33
|
attributes:
|
|
61
|
-
label: Environment
|
|
62
|
-
description:
|
|
63
|
-
placeholder:
|
|
64
|
-
- OS: [e.g. Windows 10, macOS 12.0, Ubuntu 20.04]
|
|
65
|
-
- Browser: [e.g. Chrome 96, Firefox 95, Safari 15]
|
|
66
|
-
- Version: [e.g. v1.2.3]
|
|
67
|
-
- Node.js: [e.g. 16.13.0]
|
|
68
|
-
validations:
|
|
69
|
-
required: true
|
|
70
|
-
|
|
71
|
-
- type: textarea
|
|
72
|
-
id: screenshots
|
|
73
|
-
attributes:
|
|
74
|
-
label: Screenshots/Logs
|
|
75
|
-
description: If applicable, add screenshots or error logs to help explain your problem
|
|
76
|
-
placeholder: Paste screenshots or logs here
|
|
77
|
-
|
|
78
|
-
- type: textarea
|
|
79
|
-
id: additional-context
|
|
80
|
-
attributes:
|
|
81
|
-
label: Additional Context
|
|
82
|
-
description: Add any other context about the problem here
|
|
83
|
-
placeholder: Any additional information that might be helpful
|
|
34
|
+
label: Environment (optional)
|
|
35
|
+
description: What are you running? (OS, browser, version, etc.)
|
|
36
|
+
placeholder: e.g., macOS, Chrome, Docker, Node 20...
|
|
@@ -4,8 +4,8 @@ contact_links:
|
|
|
4
4
|
url: https://docs.insforge.dev
|
|
5
5
|
about: Check our documentation for common questions and setup guides
|
|
6
6
|
- name: 💬 Discussions
|
|
7
|
-
url: https://discord.
|
|
7
|
+
url: https://discord.com/invite/MPxwj5xVvW
|
|
8
8
|
about: Ask questions and discuss ideas with the community
|
|
9
9
|
- name: 🆘 Support
|
|
10
|
-
url: https://discord.
|
|
10
|
+
url: https://discord.com/invite/MPxwj5xVvW
|
|
11
11
|
about: Get help with installation, configuration, and usage
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: ✨ Feature Request
|
|
2
|
-
description: Suggest an idea or enhancement
|
|
2
|
+
description: Suggest an idea or enhancement
|
|
3
3
|
title: "[Feature]: "
|
|
4
4
|
labels: ["enhancement", "needs-triage"]
|
|
5
5
|
assignees: []
|
|
@@ -7,73 +7,20 @@ body:
|
|
|
7
7
|
- type: markdown
|
|
8
8
|
attributes:
|
|
9
9
|
value: |
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
**Note**: This template is for feature requests only. For bug reports, please use the Bug Report template.
|
|
13
|
-
|
|
14
|
-
- type: checkboxes
|
|
15
|
-
id: checks
|
|
16
|
-
attributes:
|
|
17
|
-
label: Pre-submission Checklist
|
|
18
|
-
description: Please complete these checks before submitting
|
|
19
|
-
options:
|
|
20
|
-
- label: I have searched existing issues and confirmed this feature hasn't been requested
|
|
21
|
-
required: true
|
|
22
|
-
- label: I have read the contributing guidelines
|
|
23
|
-
required: true
|
|
24
|
-
- label: This is a legitimate feature request and not spam or promotional content
|
|
25
|
-
required: true
|
|
10
|
+
Have an idea? Share it! We'd love to hear what you're thinking.
|
|
26
11
|
|
|
27
12
|
- type: textarea
|
|
28
|
-
id:
|
|
13
|
+
id: feature-description
|
|
29
14
|
attributes:
|
|
30
|
-
label:
|
|
31
|
-
description:
|
|
32
|
-
placeholder:
|
|
15
|
+
label: What feature do you want?
|
|
16
|
+
description: Describe your idea
|
|
17
|
+
placeholder: I'd like to be able to...
|
|
33
18
|
validations:
|
|
34
19
|
required: true
|
|
35
20
|
|
|
36
21
|
- type: textarea
|
|
37
|
-
id:
|
|
38
|
-
attributes:
|
|
39
|
-
label: Proposed Solution
|
|
40
|
-
description: Describe the solution you'd like
|
|
41
|
-
placeholder: A clear and concise description of what you want to happen
|
|
42
|
-
validations:
|
|
43
|
-
required: true
|
|
44
|
-
|
|
45
|
-
- type: textarea
|
|
46
|
-
id: alternatives
|
|
47
|
-
attributes:
|
|
48
|
-
label: Alternatives Considered
|
|
49
|
-
description: Describe alternatives you've considered
|
|
50
|
-
placeholder: A clear and concise description of any alternative solutions or features you've considered
|
|
51
|
-
|
|
52
|
-
- type: dropdown
|
|
53
|
-
id: priority
|
|
54
|
-
attributes:
|
|
55
|
-
label: Priority
|
|
56
|
-
description: How important is this feature to you?
|
|
57
|
-
options:
|
|
58
|
-
- Low - Nice to have
|
|
59
|
-
- Medium - Would be helpful
|
|
60
|
-
- High - Important for my use case
|
|
61
|
-
- Critical - Blocking my usage
|
|
62
|
-
validations:
|
|
63
|
-
required: true
|
|
64
|
-
|
|
65
|
-
- type: textarea
|
|
66
|
-
id: use-cases
|
|
67
|
-
attributes:
|
|
68
|
-
label: Use Cases
|
|
69
|
-
description: Describe specific use cases for this feature
|
|
70
|
-
placeholder: |
|
|
71
|
-
1. As a [user type], I want [goal] so that [benefit]
|
|
72
|
-
2. When [situation], I need [functionality] because [reason]
|
|
73
|
-
|
|
74
|
-
- type: textarea
|
|
75
|
-
id: additional-context
|
|
22
|
+
id: why
|
|
76
23
|
attributes:
|
|
77
|
-
label:
|
|
78
|
-
description:
|
|
79
|
-
placeholder:
|
|
24
|
+
label: Why do you need this?
|
|
25
|
+
description: What problem does it solve?
|
|
26
|
+
placeholder: This would help me...
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: E2E Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: [main, master, develop]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
e2e:
|
|
10
|
+
name: E2E Tests
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- name: Checkout code
|
|
15
|
+
uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- name: Create .env file
|
|
18
|
+
run: |
|
|
19
|
+
cat > .env << EOF
|
|
20
|
+
POSTGRES_USER=postgres
|
|
21
|
+
POSTGRES_PASSWORD=postgres
|
|
22
|
+
POSTGRES_DB=insforge
|
|
23
|
+
JWT_SECRET=test-secret-key-for-ci-cd-pipeline
|
|
24
|
+
ADMIN_EMAIL=admin@example.com
|
|
25
|
+
ADMIN_PASSWORD=test-admin-password-for-ci
|
|
26
|
+
TEST_API_BASE=http://localhost:7130/api
|
|
27
|
+
EOF
|
|
28
|
+
|
|
29
|
+
- name: Start Docker Compose services
|
|
30
|
+
run: docker compose up -d
|
|
31
|
+
|
|
32
|
+
- name: Wait for PostgreSQL to be ready
|
|
33
|
+
run: |
|
|
34
|
+
echo "Waiting for PostgreSQL..."
|
|
35
|
+
timeout 60 bash -c 'until docker compose exec -T postgres pg_isready -U postgres; do sleep 2; done'
|
|
36
|
+
|
|
37
|
+
- name: Wait for InsForge backend to be ready
|
|
38
|
+
run: |
|
|
39
|
+
echo "Waiting for InsForge backend..."
|
|
40
|
+
timeout 120 bash -c 'until curl -f http://localhost:7130/api/health 2>/dev/null; do echo "Waiting..."; sleep 5; done'
|
|
41
|
+
echo "Backend is ready!"
|
|
42
|
+
|
|
43
|
+
- name: Install test dependencies in container
|
|
44
|
+
run: docker compose exec -T insforge apk add --no-cache bash curl jq
|
|
45
|
+
|
|
46
|
+
- name: Run E2E tests
|
|
47
|
+
run: docker compose exec -T insforge npm run test:e2e
|
|
48
|
+
|
|
49
|
+
- name: Show container logs on failure
|
|
50
|
+
if: failure()
|
|
51
|
+
run: |
|
|
52
|
+
echo "=== PostgreSQL logs ==="
|
|
53
|
+
docker compose logs postgres
|
|
54
|
+
echo ""
|
|
55
|
+
echo "=== InsForge backend logs ==="
|
|
56
|
+
docker compose logs insforge
|
|
57
|
+
echo ""
|
|
58
|
+
echo "=== PostgREST logs ==="
|
|
59
|
+
docker compose logs postgrest
|
|
60
|
+
|
|
61
|
+
- name: Cleanup
|
|
62
|
+
if: always()
|
|
63
|
+
run: docker compose down -v
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,44 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.2.8](https://github.com/InsForge/InsForge/compare/v1.2.6...v1.2.8) (2025-12-05)
|
|
4
|
+
|
|
5
|
+
## [1.2.6](https://github.com/InsForge/InsForge/compare/v1.2.4...v1.2.6) (2025-11-22)
|
|
6
|
+
|
|
7
|
+
## [1.2.4](https://github.com/InsForge/InsForge/compare/v1.2.3...v1.2.4) (2025-11-22)
|
|
8
|
+
|
|
9
|
+
## [1.2.2](https://github.com/InsForge/InsForge/compare/v1.2.1-e2e...v1.2.2) (2025-11-18)
|
|
10
|
+
|
|
11
|
+
# [1.2.0](https://github.com/InsForge/InsForge/compare/v1.1.7-Nov13...v1.2.0) (2025-11-15)
|
|
12
|
+
|
|
13
|
+
## [1.1.2](https://github.com/InsForge/InsForge/compare/v1.1.0-posthog-9...v1.1.2) (2025-10-28)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* addressing coderabbit comments ([97dd933](https://github.com/InsForge/InsForge/commit/97dd9339269991955d8c644f88e77efa6c3f6da2))
|
|
19
|
+
* macOS compatibility and AI config cleanup for e2e tests ([2e04d79](https://github.com/InsForge/InsForge/commit/2e04d7920b00a2b19eed1f0aa3072a6ea937f41a))
|
|
20
|
+
* removing package-lock ([9df772d](https://github.com/InsForge/InsForge/commit/9df772dcadd3a91e2fa70507d8f2779f6910d484))
|
|
21
|
+
* removing package-lock ([222dfc1](https://github.com/InsForge/InsForge/commit/222dfc1231504ce8e7d14d5ab79e57c1b00785c7))
|
|
22
|
+
* update the frontend to use the bulk-upsert exising API ([2b9b3b2](https://github.com/InsForge/InsForge/commit/2b9b3b23c4cc2d401781ba5504c54db07bb84af0))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* added tests for ai configs ([2a4e93a](https://github.com/InsForge/InsForge/commit/2a4e93acf145699511bd0ea49e29926f2d585b36))
|
|
28
|
+
* added tests for functions and secrets ([a985f03](https://github.com/InsForge/InsForge/commit/a985f035ffc1c1152999b317cf4e03e0f45ba34e))
|
|
29
|
+
* added tests for logs ([81f7734](https://github.com/InsForge/InsForge/commit/81f7734f3586e03ae2be5694b63d2a3417ae7339))
|
|
30
|
+
* fixed all the tests with correct format ([1242d13](https://github.com/InsForge/InsForge/commit/1242d133efd4398ae672e1e6c71ae1431aa9ba62))
|
|
31
|
+
* fixed secret tests ([5703836](https://github.com/InsForge/InsForge/commit/5703836ecee0ffeb27bfca9b0d785b95e68f1688))
|
|
32
|
+
* updated the backend and the service to update the csv parsing and validating ([e7ffd29](https://github.com/InsForge/InsForge/commit/e7ffd292fd93381ae2eebde17c16e3996241f15c))
|
|
33
|
+
* updated the frontend to display the button and the respective functions ([50613d8](https://github.com/InsForge/InsForge/commit/50613d8d972b88cf28b147bb7a44901c23d77e79))
|
|
34
|
+
|
|
35
|
+
# [1.1.0](https://github.com/InsForge/InsForge/compare/v1.0.1-ai-2...v1.1.0) (2025-10-11)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### Bug Fixes
|
|
39
|
+
|
|
40
|
+
* typo in docs ([d2a0efc](https://github.com/InsForge/InsForge/commit/d2a0efc56ab77560597dc2ee46c5f8a669fbd71d))
|
|
41
|
+
|
|
42
|
+
# [1.0.0](https://github.com/InsForge/InsForge/compare/v0.3.3...v1.0.0) (2025-09-29)
|
|
43
|
+
|
|
3
44
|
# [0.3.0](https://github.com/InsForge/InsForge/compare/v0.2.9-fix...v0.3.0) (2025-09-26)
|
package/CLAUDE_PLUGIN.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# InsForge Claude Code Plugin
|
|
2
|
+
|
|
3
|
+
Official plugin for building with InsForge in Claude Code.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
### Option 1: Install from InsForge Marketplace (Recommended)
|
|
8
|
+
|
|
9
|
+
In Claude Code, run:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
/plugin marketplace add InsForge/InsForge
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Then install the plugin:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/plugin install insforge
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Option 2: Install Directly from Repository
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
/plugin install https://github.com/InsForge/InsForge/claude-plugin
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Option 3: Local Installation (Development)
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
cd ~/.claude-plugins
|
|
31
|
+
git clone https://github.com/InsForge/InsForge.git
|
|
32
|
+
ln -s InsForge/claude-plugin insforge
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## What's Included
|
|
36
|
+
|
|
37
|
+
### Skill: `insforge-schema-patterns`
|
|
38
|
+
|
|
39
|
+
Automatically activates when designing database schemas. Includes:
|
|
40
|
+
|
|
41
|
+
- **Social Graph Patterns** - Follows, likes, and social relationships
|
|
42
|
+
- **Junction Tables** - Many-to-many relationships with proper indexes
|
|
43
|
+
- **Nested Comments** - Self-referential hierarchical data
|
|
44
|
+
- **Multi-Tenant Patterns** - Organization-scoped data with RLS
|
|
45
|
+
- **Best Practices** - Foreign keys, indexes, Row Level Security
|
|
46
|
+
|
|
47
|
+
## Usage
|
|
48
|
+
|
|
49
|
+
Once installed, the skill automatically loads when relevant:
|
|
50
|
+
|
|
51
|
+
**Example:**
|
|
52
|
+
```
|
|
53
|
+
You: "I need to build a social media app with follows and likes"
|
|
54
|
+
|
|
55
|
+
Claude: [Automatically loads insforge-schema-patterns]
|
|
56
|
+
"I'll use the Social Graph pattern from InsForge best practices:
|
|
57
|
+
|
|
58
|
+
CREATE TABLE follows (
|
|
59
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
60
|
+
follower_id UUID REFERENCES users(id) ON DELETE CASCADE,
|
|
61
|
+
following_id UUID REFERENCES users(id) ON DELETE CASCADE,
|
|
62
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
63
|
+
UNIQUE(follower_id, following_id)
|
|
64
|
+
);
|
|
65
|
+
..."
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
No special commands needed - Claude knows when to use it based on your conversation!
|
|
69
|
+
|
|
70
|
+
## What Are Skills?
|
|
71
|
+
|
|
72
|
+
Skills are folders containing instructions and examples that Claude automatically loads when they're relevant to the task. Think of them as giving Claude domain expertise in specific areas.
|
|
73
|
+
|
|
74
|
+
The `insforge-schema-patterns` skill teaches Claude:
|
|
75
|
+
- Proven database design patterns for common use cases
|
|
76
|
+
- How to write efficient PostgREST queries with the InsForge SDK
|
|
77
|
+
- Best practices for security (RLS policies)
|
|
78
|
+
- Performance optimization (indexes, query patterns)
|
|
79
|
+
|
|
80
|
+
## Future Skills (Coming Soon)
|
|
81
|
+
|
|
82
|
+
We're planning to add:
|
|
83
|
+
- `insforge-fullstack-templates` - Complete app templates (Instagram, Todo, Blog)
|
|
84
|
+
- `insforge-edge-functions` - Serverless function recipes
|
|
85
|
+
- `insforge-realtime` - WebSocket and live collaboration patterns
|
|
86
|
+
|
|
87
|
+
## Contributing
|
|
88
|
+
|
|
89
|
+
Want to improve the skills or add new ones?
|
|
90
|
+
|
|
91
|
+
1. Fork the repository
|
|
92
|
+
2. Edit or add skills in `claude-plugin/skills/`
|
|
93
|
+
3. Test locally by installing from your fork
|
|
94
|
+
4. Submit a PR
|
|
95
|
+
|
|
96
|
+
Skills are just Markdown files with YAML frontmatter - easy to contribute!
|
|
97
|
+
|
|
98
|
+
## Feedback
|
|
99
|
+
|
|
100
|
+
Found an issue or have a suggestion? [Open an issue](https://github.com/InsForge/InsForge/issues) or join our [Discord](https://discord.com/invite/MPxwj5xVvW).
|
|
101
|
+
|
|
102
|
+
## License
|
|
103
|
+
|
|
104
|
+
MIT - Same as InsForge
|