insforge 0.3.3 → 1.3.0
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/.dockerignore +60 -57
- package/.env.example +84 -49
- package/.github/ISSUE_TEMPLATE/bug_report.yml +36 -83
- package/.github/ISSUE_TEMPLATE/config.yml +11 -11
- package/.github/ISSUE_TEMPLATE/feature_request.yml +26 -79
- package/.github/PULL_REQUEST_TEMPLATE.md +7 -0
- package/.github/copilot-instructions.md +146 -146
- package/.github/workflows/build-image.yml +66 -65
- package/.github/workflows/ci-premerge-check.yml +23 -23
- package/.github/workflows/e2e.yml +63 -0
- package/.github/workflows/lint-and-format.yml +32 -32
- package/.prettierignore +64 -64
- package/CHANGELOG.md +44 -3
- package/CLAUDE_PLUGIN.md +104 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/CONTRIBUTING.md +125 -125
- package/Dockerfile +30 -27
- package/GITHUB_OAUTH_SETUP.md +49 -49
- package/GOOGLE_OAUTH_SETUP.md +148 -148
- package/LICENSE +201 -201
- package/README.md +182 -134
- package/assets/Dark.svg +23 -23
- 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 +117 -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 +60 -0
- package/auth/src/pages/SignUpPage.tsx +60 -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 +78 -75
- 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} +22 -26
- package/backend/src/api/routes/auth/index.routes.ts +667 -0
- package/backend/src/api/routes/auth/oauth.routes.ts +473 -0
- package/backend/src/api/routes/{database.advance.ts → database/advance.routes.ts} +128 -65
- package/backend/src/api/routes/database/index.routes.ts +90 -0
- package/backend/src/api/routes/{database.records.ts → database/records.routes.ts} +26 -12
- package/backend/src/api/routes/{database.tables.ts → database/tables.routes.ts} +6 -23
- package/backend/src/api/routes/docs/index.routes.ts +75 -0
- package/backend/src/api/routes/email/index.routes.ts +35 -0
- package/backend/src/api/routes/functions/index.routes.ts +194 -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} +33 -31
- package/backend/src/api/routes/realtime/channels.routes.ts +81 -0
- package/backend/src/api/routes/realtime/index.routes.ts +12 -0
- package/backend/src/api/routes/realtime/messages.routes.ts +48 -0
- package/backend/src/api/routes/realtime/permissions.routes.ts +19 -0
- package/backend/src/api/routes/{secrets.ts → secrets/index.routes.ts} +27 -22
- package/backend/src/api/routes/{storage.ts → storage/index.routes.ts} +48 -61
- package/backend/src/api/routes/usage/index.routes.ts +91 -0
- package/backend/src/infra/config/app.config.ts +51 -0
- package/backend/src/infra/database/database.manager.ts +182 -0
- package/backend/{migrations → src/infra/database/migrations}/000_create-base-tables.sql +141 -141
- package/backend/{migrations → src/infra/database/migrations}/001_create-helper-functions.sql +40 -40
- package/backend/{migrations → src/infra/database/migrations}/002_rename-auth-tables.sql +29 -29
- package/backend/{migrations → src/infra/database/migrations}/003_create-users-table.sql +55 -55
- package/backend/{migrations → src/infra/database/migrations}/004_add-reload-postgrest-func.sql +23 -23
- package/backend/{migrations → src/infra/database/migrations}/005_enable-project-admin-modify-users.sql +29 -29
- package/backend/{migrations → src/infra/database/migrations}/006_modify-ai-usage-table.sql +24 -24
- package/backend/{migrations → src/infra/database/migrations}/007_drop-metadata-table.sql +1 -1
- package/backend/{migrations → src/infra/database/migrations}/008_add-system-tables.sql +76 -76
- package/backend/{migrations → src/infra/database/migrations}/009_add-function-secrets.sql +23 -23
- package/backend/{migrations → src/infra/database/migrations}/010_modify-ai-config-modalities.sql +93 -93
- package/backend/{migrations → src/infra/database/migrations}/011_refactor-secrets-table.sql +15 -15
- package/backend/{migrations → src/infra/database/migrations}/012_add-storage-uploaded-by.sql +7 -7
- 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/infra/database/migrations/017_create-realtime-schema.sql +233 -0
- package/backend/src/infra/realtime/realtime.manager.ts +246 -0
- package/backend/src/infra/realtime/webhook-sender.ts +82 -0
- package/backend/src/{core/secrets/encryption.ts → infra/security/encryption.manager.ts} +3 -2
- package/backend/src/infra/security/token.manager.ts +219 -0
- package/backend/src/infra/socket/socket.manager.ts +522 -0
- package/backend/src/providers/ai/openrouter.provider.ts +380 -0
- package/backend/src/providers/email/base.provider.ts +38 -0
- package/backend/src/providers/email/cloud.provider.ts +271 -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/apple.provider.ts +266 -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 +8 -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 +317 -288
- 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 +1150 -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 +802 -0
- package/backend/src/services/database/database.service.ts +127 -0
- package/backend/src/services/email/email.service.ts +73 -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/services/realtime/index.ts +3 -0
- package/backend/src/services/realtime/realtime-auth.service.ts +104 -0
- package/backend/src/services/realtime/realtime-channel.service.ts +237 -0
- package/backend/src/services/realtime/realtime-message.service.ts +260 -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 +77 -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/types/realtime.ts +18 -0
- package/backend/src/{core/socket/types.ts → types/socket.ts} +11 -36
- package/backend/src/utils/cookies.ts +35 -0
- package/backend/src/utils/environment.ts +9 -3
- package/backend/src/utils/logger.ts +20 -2
- package/backend/src/utils/s3-config-loader.ts +64 -0
- package/backend/src/utils/seed.ts +301 -205
- package/backend/src/utils/sql-parser.ts +91 -1
- package/backend/src/utils/utils.ts +114 -0
- package/backend/src/utils/validations.ts +40 -4
- package/backend/tests/README.md +133 -133
- package/backend/tests/cleanup-all-test-data.sh +230 -230
- package/backend/tests/cloud/test-s3-multitenant.sh +131 -131
- package/backend/tests/local/comprehensive-curl-tests.sh +155 -155
- 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 +143 -143
- package/backend/tests/local/test-database-router.sh +222 -222
- package/backend/tests/local/test-e2e.sh +240 -240
- package/backend/tests/local/test-fk-errors.sh +96 -96
- package/backend/tests/local/test-functions.sh +123 -0
- package/backend/tests/local/test-id-field.sh +200 -200
- package/backend/tests/local/test-logs.sh +132 -0
- package/backend/tests/local/test-public-bucket.sh +264 -264
- package/backend/tests/local/test-secrets.sh +249 -247
- package/backend/tests/local/test-serverless-functions.sh.disabled +325 -325
- package/backend/tests/local/test-traditional-rest.sh +208 -208
- package/backend/tests/manual/README.md +50 -50
- package/backend/tests/manual/create-large-table-simple.sql +10 -10
- package/backend/tests/manual/seed-large-table.sql +100 -100
- package/backend/tests/manual/setup-large-table-extras.sql +33 -33
- package/backend/tests/manual/test-bulk-upsert.sh +409 -409
- package/backend/tests/manual/test-database-advance.sh +296 -296
- package/backend/tests/manual/test-postgrest-stability.sh +191 -191
- package/backend/tests/manual/test-rawsql-export-import.sh +411 -411
- package/backend/tests/manual/test-rawsql-modes.sh +244 -0
- package/backend/tests/manual/test-universal-storage.sh +263 -263
- package/backend/tests/manual/test-users.sql +17 -17
- package/backend/tests/run-all-tests.sh +139 -139
- package/backend/tests/setup.ts +0 -0
- package/backend/tests/test-config.sh +338 -302
- package/backend/tests/unit/analyze-query.test.ts +697 -0
- 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 +22 -22
- 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 +204 -144
- package/docker-compose.yml +232 -167
- package/docker-init/db/db-init.sql +97 -125
- package/docker-init/db/jwt.sql +5 -5
- package/docker-init/db/postgresql.conf +16 -16
- package/docker-init/logs/vector.yml +236 -0
- package/docs/README.md +44 -0
- package/docs/agent-docs/real-time.md +269 -0
- package/docs/changelog.mdx +119 -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/email/architecture.mdx +101 -0
- package/docs/core-concepts/email/sdk.mdx +53 -0
- package/docs/core-concepts/functions/architecture.mdx +105 -0
- package/docs/core-concepts/functions/sdk.mdx +184 -0
- package/docs/core-concepts/realtime/architecture.mdx +446 -0
- package/docs/core-concepts/realtime/sdk.mdx +409 -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/deprecated/insforge-auth-api.md +214 -214
- package/docs/deprecated/insforge-auth-sdk.md +99 -99
- package/docs/deprecated/insforge-db-api.md +358 -358
- package/docs/deprecated/insforge-db-sdk.md +139 -139
- package/docs/deprecated/insforge-debug-sdk.md +156 -156
- package/docs/deprecated/insforge-debug.md +64 -64
- package/docs/deprecated/insforge-instructions.md +123 -123
- package/docs/deprecated/insforge-project.md +117 -117
- package/docs/deprecated/insforge-storage-api.md +278 -278
- package/docs/deprecated/insforge-storage-sdk.md +158 -158
- package/docs/docs.json +232 -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/dec-2025/ai-integration.png +0 -0
- package/docs/images/changelog/dec-2025/ai-models.webp +0 -0
- package/docs/images/changelog/dec-2025/alipay-payment.webp +0 -0
- package/docs/images/changelog/dec-2025/apple-login.jpg +0 -0
- package/docs/images/changelog/dec-2025/mcp-installer.png +0 -0
- package/docs/images/changelog/dec-2025/realtime-module.jpg +0 -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 +89 -407
- package/docs/introduction.mdx +45 -0
- package/docs/logo/dark.svg +22 -0
- package/docs/logo/light.svg +20 -0
- package/docs/partnership.mdx +652 -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/examples/oauth/frontend-oauth-example.html +250 -250
- package/examples/response-examples.md +443 -443
- package/frontend/components.json +17 -17
- package/frontend/package.json +69 -63
- package/frontend/src/App.tsx +13 -82
- package/frontend/src/assets/icons/checkbox_checked.svg +6 -6
- package/frontend/src/assets/icons/checkbox_undetermined.svg +6 -6
- package/frontend/src/assets/icons/checked.svg +3 -3
- package/frontend/src/assets/icons/connected.svg +3 -0
- package/frontend/src/assets/icons/error.svg +3 -3
- package/frontend/src/assets/icons/loader.svg +9 -0
- package/frontend/src/assets/icons/pencil.svg +4 -4
- package/frontend/src/assets/icons/refresh.svg +4 -4
- package/frontend/src/assets/icons/step_active.svg +3 -3
- package/frontend/src/assets/icons/step_inactive.svg +11 -11
- package/frontend/src/assets/icons/warning.svg +3 -3
- package/frontend/src/assets/logos/apple.svg +4 -0
- package/frontend/src/assets/logos/claude_code.svg +3 -3
- package/frontend/src/assets/logos/cline.svg +6 -6
- package/frontend/src/assets/logos/cursor.svg +20 -20
- package/frontend/src/assets/logos/discord.svg +8 -8
- package/frontend/src/assets/logos/facebook.svg +3 -0
- package/frontend/src/assets/logos/gemini.svg +19 -19
- package/frontend/src/assets/logos/github.svg +5 -5
- package/frontend/src/assets/logos/google.svg +13 -13
- package/frontend/src/assets/logos/grok.svg +10 -10
- package/frontend/src/assets/logos/insforge_dark.svg +15 -15
- package/frontend/src/assets/logos/insforge_light.svg +15 -15
- 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/openai.svg +10 -10
- package/frontend/src/assets/logos/roo_code.svg +9 -9
- package/frontend/src/assets/logos/spotify.svg +17 -0
- package/frontend/src/assets/logos/tiktok.svg +6 -0
- package/frontend/src/assets/logos/trae.svg +3 -3
- package/frontend/src/assets/logos/windsurf.svg +10 -10
- 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 +131 -91
- 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/pages/AIPage.tsx +166 -0
- 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 +54 -30
- package/frontend/src/features/auth/components/UserFormDialog.tsx +13 -6
- package/frontend/src/features/auth/components/UsersDataGrid.tsx +50 -14
- package/frontend/src/features/auth/components/index.ts +5 -0
- package/frontend/src/features/auth/helpers.tsx +208 -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/pages/AuthMethodsPage.tsx +275 -0
- package/frontend/src/features/auth/pages/ConfigurationPage.tsx +395 -0
- package/frontend/src/features/auth/pages/UsersPage.tsx +257 -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/pages/DashboardPage.tsx +212 -0
- 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/SQLModal.tsx +75 -0
- package/frontend/src/features/database/components/TableEmptyState.tsx +6 -5
- package/frontend/src/features/database/components/TableForm.tsx +28 -19
- 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/useDatabase.ts +66 -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 +135 -0
- package/frontend/src/features/database/index.ts +7 -1
- package/frontend/src/features/database/pages/FunctionsPage.tsx +203 -0
- package/frontend/src/features/database/pages/IndexesPage.tsx +228 -0
- package/frontend/src/features/database/pages/PoliciesPage.tsx +237 -0
- package/frontend/src/features/database/pages/SQLEditorPage.tsx +382 -0
- package/frontend/src/features/database/{page/DatabasePage.tsx → pages/TablesPage.tsx} +168 -209
- package/frontend/src/features/database/pages/TemplatesPage.tsx +39 -0
- package/frontend/src/features/database/pages/TriggersPage.tsx +230 -0
- package/frontend/src/features/database/services/advance.service.ts +40 -0
- package/frontend/src/features/database/services/database.service.ts +33 -194
- package/frontend/src/features/database/services/record.service.ts +219 -0
- package/frontend/src/features/database/services/table.service.ts +58 -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/pages/FunctionsPage.tsx +148 -0
- package/frontend/src/features/functions/{components/SecretsContent.tsx → pages/SecretsPage.tsx} +19 -21
- 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/pages/CloudLoginPage.tsx +118 -0
- package/frontend/src/features/login/{page → pages}/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 +128 -0
- package/frontend/src/features/logs/index.ts +8 -2
- package/frontend/src/features/logs/{page → pages}/AuditsPage.tsx +91 -38
- package/frontend/src/features/logs/pages/LogsPage.tsx +152 -0
- package/frontend/src/features/logs/pages/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/realtime/components/ChannelRow.tsx +83 -0
- package/frontend/src/features/realtime/components/EditChannelModal.tsx +246 -0
- package/frontend/src/features/realtime/components/MessageRow.tsx +85 -0
- package/frontend/src/features/realtime/components/RealtimeEmptyState.tsx +30 -0
- package/frontend/src/features/realtime/hooks/useRealtime.ts +218 -0
- package/frontend/src/features/realtime/index.ts +11 -0
- package/frontend/src/features/realtime/pages/RealtimeChannelsPage.tsx +172 -0
- package/frontend/src/features/realtime/pages/RealtimeMessagesPage.tsx +211 -0
- package/frontend/src/features/realtime/pages/RealtimePermissionsPage.tsx +191 -0
- package/frontend/src/features/realtime/services/realtime.service.ts +107 -0
- 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 → pages}/StoragePage.tsx +41 -143
- 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/pages/VisualizerPage.tsx +97 -0
- 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 +123 -80
- 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 +99 -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 +207 -0
- package/frontend/src/lib/utils/{validation-schemas.ts → schemaValidations.ts} +10 -5
- package/frontend/src/lib/utils/utils.ts +32 -1
- package/frontend/src/vite-env.d.ts +1 -0
- package/frontend/tsconfig.json +25 -25
- package/frontend/tsconfig.node.json +9 -9
- package/frontend/vite.config.ts +5 -3
- package/functions/deno.json +24 -24
- package/functions/server.ts +315 -290
- 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 +715 -688
- package/openapi/auth.yaml +1244 -563
- package/openapi/email.yaml +158 -0
- package/openapi/functions.yaml +475 -475
- package/openapi/health.yaml +29 -29
- package/openapi/logs.yaml +223 -223
- package/openapi/metadata.yaml +177 -177
- package/openapi/realtime.yaml +699 -0
- package/openapi/records.yaml +381 -381
- package/openapi/secrets.yaml +370 -370
- package/openapi/storage.yaml +875 -875
- package/openapi/tables.yaml +463 -463
- package/package.json +97 -88
- package/shared-schemas/package.json +31 -31
- package/shared-schemas/src/ai-api.schema.ts +34 -58
- package/shared-schemas/src/ai.schema.ts +63 -54
- package/shared-schemas/src/auth-api.schema.ts +352 -193
- package/shared-schemas/src/auth.schema.ts +43 -7
- package/shared-schemas/src/cloud-events.schema.ts +57 -0
- package/shared-schemas/src/database-api.schema.ts +35 -4
- package/shared-schemas/src/database.schema.ts +40 -1
- package/shared-schemas/src/docs.schema.ts +26 -0
- package/shared-schemas/src/email-api.schema.ts +30 -0
- package/shared-schemas/src/index.ts +5 -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 +18 -4
- package/shared-schemas/src/realtime-api.schema.ts +111 -0
- package/shared-schemas/src/realtime.schema.ts +143 -0
- package/shared-schemas/tsconfig.json +21 -21
- package/tsconfig.json +7 -7
- 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/manager.ts +0 -178
- 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/socket/socket.ts +0 -388
- 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/ai/page/AIPage.tsx +0 -178
- 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/dashboard/page/DashboardPage.tsx +0 -194
- 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/functions/page/FunctionsPage.tsx +0 -28
- package/frontend/src/features/login/components/AuthErrorBoundary.tsx +0 -87
- package/frontend/src/features/login/components/PrivateRoute.tsx +0 -24
- package/frontend/src/features/login/page/CloudLoginPage.tsx +0 -93
- 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/features/visualizer/page/VisualizerPage.tsx +0 -127
- 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/frontend/src/{features/metadata → lib}/services/metadata.service.ts +0 -0
package/docs/favicon.svg
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M9.06145 23.1079C5.26816 22.3769 -3.39077 20.6274 1.4173 5.06384C9.6344 6.09939 16.9728 14.0644 9.06145 23.1079Z" fill="url(#paint0_linear_17557_2021)"/>
|
|
3
|
+
<path d="M8.91928 23.0939C5.27642 21.2223 0.78371 4.20891 17.0071 0C20.7569 7.19341 19.6212 16.5452 8.91928 23.0939Z" fill="url(#paint1_linear_17557_2021)"/>
|
|
4
|
+
<path d="M8.91388 23.0788C8.73534 19.8817 10.1585 9.08525 23.5699 13.1107C23.1812 20.1229 18.984 26.4182 8.91388 23.0788Z" fill="url(#paint2_linear_17557_2021)"/>
|
|
5
|
+
<defs>
|
|
6
|
+
<linearGradient id="paint0_linear_17557_2021" x1="3.77557" y1="5.91571" x2="5.23185" y2="21.5589" gradientUnits="userSpaceOnUse">
|
|
7
|
+
<stop stop-color="#18E299"/>
|
|
8
|
+
<stop offset="1" stop-color="#15803D"/>
|
|
9
|
+
</linearGradient>
|
|
10
|
+
<linearGradient id="paint1_linear_17557_2021" x1="12.1711" y1="-0.718425" x2="10.1897" y2="22.9832" gradientUnits="userSpaceOnUse">
|
|
11
|
+
<stop stop-color="#16A34A"/>
|
|
12
|
+
<stop offset="1" stop-color="#4ADE80"/>
|
|
13
|
+
</linearGradient>
|
|
14
|
+
<linearGradient id="paint2_linear_17557_2021" x1="23.1327" y1="15.353" x2="9.33841" y2="18.5196" gradientUnits="userSpaceOnUse">
|
|
15
|
+
<stop stop-color="#4ADE80"/>
|
|
16
|
+
<stop offset="1" stop-color="#0D9373"/>
|
|
17
|
+
</linearGradient>
|
|
18
|
+
</defs>
|
|
19
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M11.8121 3.04199C11.8641 2.85054 12.1361 2.85051 12.1881 3.04199L13.8687 9.28613C13.9794 9.69726 14.3014 10.0182 14.7125 10.1289L20.9557 11.8105C21.1477 11.8623 21.1477 12.1348 20.9557 12.1865L14.7125 13.8672C14.3014 13.9779 13.9794 14.2998 13.8687 14.7109L12.1881 20.9541C12.1364 21.1461 11.8638 21.1461 11.8121 20.9541L10.1305 14.7109C10.0198 14.2998 9.69881 13.9779 9.28769 13.8672L3.04355 12.1865C2.85206 12.1346 2.8521 11.8625 3.04355 11.8105L9.28769 10.1289C9.69881 10.0182 10.0198 9.69726 10.1305 9.28613L11.8121 3.04199Z" stroke="white"/>
|
|
3
|
+
<path d="M19.5904 2.55907C19.648 2.34489 19.9519 2.34489 20.0096 2.55907L20.535 4.5103C20.5551 4.585 20.6134 4.64335 20.6881 4.66347L22.6394 5.18883C22.8535 5.2465 22.8535 5.55038 22.6394 5.60804L20.6881 6.13341C20.6134 6.15352 20.5551 6.21187 20.535 6.28658L20.0096 8.2378C19.9519 8.45198 19.648 8.45198 19.5904 8.2378L19.065 6.28658C19.0449 6.21187 18.9866 6.15352 18.9118 6.13341L16.9606 5.60804C16.7464 5.55038 16.7464 5.2465 16.9606 5.18883L18.9118 4.66347C18.9866 4.64335 19.0449 4.585 19.065 4.5103L19.5904 2.55907Z" fill="white"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M252.31-100q-29.92 0-51.12-21.19Q180-142.39 180-172.31v-375.38q0-29.92 21.19-51.12Q222.39-620 252.31-620H300v-80q0-74.92 52.54-127.46Q405.08-880 480-880q74.92 0 127.46 52.54Q660-774.92 660-700v80h47.69q29.92 0 51.12 21.19Q780-577.61 780-547.69v375.38q0 29.92-21.19 51.12Q737.61-100 707.69-100H252.31Zm0-60h455.38q5.39 0 8.85-3.46t3.46-8.85v-375.38q0-5.39-3.46-8.85t-8.85-3.46H252.31q-5.39 0-8.85 3.46t-3.46 8.85v375.38q0 5.39 3.46 8.85t8.85 3.46ZM480-290q29.15 0 49.58-20.42Q550-330.85 550-360t-20.42-49.58Q509.15-430 480-430t-49.58 20.42Q410-389.15 410-360t20.42 49.58Q450.85-290 480-290ZM360-620h240v-80q0-50-35-85t-85-35q-50 0-85 35t-35 85v80ZM240-160v-400 400Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M480-140q-145.61 0-242.81-41.12Q140-222.23 140-283.85V-680q0-57.92 99.54-98.96Q339.08-820 480-820q140.92 0 240.46 41.04Q820-737.92 820-680v396.15q0 61.62-97.19 102.73Q625.61-140 480-140Zm0-461.69q87.46 0 176.12-24.73 88.65-24.73 102.73-53.35-13.7-29.38-101.66-54.81Q569.23-760 480-760q-89.08 0-176.58 24.73-87.5 24.73-103.04 53.96 15.16 30 102.27 54.81 87.12 24.81 177.35 24.81Zm0 200.15q41.62 0 81-4t75.27-11.69q35.88-7.69 67.19-19.08 31.31-11.38 56.54-25.77V-604q-25.23 14.38-56.54 25.77-31.31 11.38-67.19 19.07-35.89 7.7-75.27 11.7-39.38 4-81 4-42.38 0-82.58-4.2-40.19-4.19-75.88-11.88t-66.5-18.88Q224.23-589.62 200-604v141.92q24.23 14.39 55.04 25.58 30.81 11.19 66.5 18.88 35.69 7.7 75.88 11.89 40.2 4.19 82.58 4.19ZM480-200q48.69 0 95.62-6.42 46.92-6.43 85.38-17.54 38.46-11.12 64.88-25.81 26.43-14.69 34.12-30.85v-121.46q-25.23 14.39-56.54 25.77-31.31 11.39-67.19 19.08-35.89 7.69-75.27 11.69-39.38 4-81 4-42.38 0-82.58-4.19-40.19-4.19-75.88-11.89-35.69-7.69-66.5-18.88-30.81-11.19-55.04-25.58V-280q7.69 16.54 33.81 30.73 26.11 14.19 64.57 25.31 38.47 11.11 85.7 17.54Q431.31-200 480-200Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M320-240 80-480l240-240 57 57-184 184 183 183-56 56Zm320 0-57-57 184-184-183-183 56-56 240 240-240 240Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M212.31-140Q182-140 161-161q-21-21-21-51.31v-535.38Q140-778 161-799q21-21 51.31-21h535.38Q778-820 799-799q21 21 21 51.31v535.38Q820-182 799-161q-21 21-51.31 21H212.31ZM200-613.54h560v-134.15q0-4.62-3.85-8.46-3.84-3.85-8.46-3.85H212.31q-4.62 0-8.46 3.85-3.85 3.84-3.85 8.46v134.15Zm0 207.08h560v-147.08H200v147.08ZM212.31-200h535.38q4.62 0 8.46-3.85 3.85-3.84 3.85-8.46v-134.15H200v134.15q0 4.62 3.85 8.46 3.84 3.85 8.46 3.85Zm43.08-450.92v-72.31h72.3v72.31h-72.3Zm0 207.07v-72.3h72.3v72.3h-72.3Zm0 207.08v-72.31h72.3v72.31h-72.3Z"/></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="-2" y="-2" width="28" height="28" fill="#0a0a0a"/>
|
|
3
|
+
<path d="M17.3255 21.9996C17.2425 22.0435 17.2471 22.0612 17.3302 22.0192C17.3545 22.0088 17.3767 21.9939 17.3955 21.9753C17.3955 21.9604 17.3937 21.9623 17.3255 21.9996ZM17.4917 21.9119C17.4525 21.9427 17.4525 21.9445 17.5001 21.9203C17.5262 21.9072 17.5486 21.8923 17.5486 21.8876C17.5486 21.8699 17.5374 21.8745 17.4917 21.9119ZM17.6009 21.8456C17.5617 21.8764 17.5617 21.8783 17.6093 21.854C17.6354 21.8409 17.6578 21.826 17.6578 21.8213C17.6578 21.8036 17.6466 21.8083 17.6009 21.8456ZM17.7101 21.7803C17.6709 21.8111 17.6709 21.8129 17.7185 21.7887C17.7446 21.7756 17.767 21.7607 17.767 21.756C17.767 21.7383 17.7558 21.7429 17.7101 21.7803ZM17.8613 21.6823C17.7847 21.7308 17.7605 21.7635 17.8286 21.7261C17.8771 21.6981 17.9555 21.6384 17.9425 21.6365C17.9138 21.6488 17.8866 21.6642 17.8613 21.6823ZM11.1665 1.00333C11.1179 1.008 10.9649 1.02293 10.8267 1.03413C7.64593 1.32066 4.6658 3.03706 2.7786 5.6756C1.73528 7.1238 1.05713 8.80254 0.8018 10.569C0.7122 11.1841 0.7001 11.3661 0.7001 12.2005C0.7001 13.0349 0.7122 13.216 0.8018 13.832C1.41033 18.0376 4.40353 21.5712 8.4626 22.8807C9.18967 23.1149 9.95593 23.2745 10.8267 23.3707C11.1665 23.408 12.6327 23.408 12.9725 23.3707C14.4761 23.2045 15.751 22.8321 17.0073 22.1909C17.1995 22.092 17.2369 22.0659 17.2107 22.0444C16.5971 21.2336 15.9892 20.4185 15.387 19.5991L13.5959 17.1799L11.3522 13.8591C10.6062 12.7479 9.85296 11.6416 9.0926 10.5401C9.0842 10.5383 9.07487 12.0139 9.07113 13.8152C9.0646 16.9699 9.06273 17.0968 9.0226 17.1715C8.9845 17.2587 8.91625 17.3293 8.83033 17.3703C8.76033 17.4057 8.69873 17.4123 8.36833 17.4123H7.9894L7.8886 17.3488C7.82641 17.3096 7.77582 17.2545 7.74207 17.1892L7.69633 17.0903L7.701 12.7008L7.70753 8.30946L7.77567 8.22453C7.82144 8.17075 7.87644 8.12555 7.93807 8.09106C8.02767 8.0472 8.06313 8.04253 8.44207 8.04253C8.88913 8.04253 8.96286 8.06026 9.07953 8.1872C9.9878 9.53889 10.8885 10.8957 11.7815 12.2575C13.2357 14.462 15.2227 17.472 16.1999 18.9504L17.9733 21.6365L18.0629 21.5777C18.9162 21.0102 19.6899 20.3312 20.3635 19.5589C21.7747 17.944 22.6899 15.9561 22.9993 13.8339C23.0889 13.2188 23.1001 13.0368 23.1001 12.2024C23.1001 11.368 23.0889 11.1869 22.9993 10.5709C22.3907 6.36533 19.3975 2.83173 15.3385 1.52226C14.5799 1.28076 13.7987 1.11721 13.007 1.03413C12.797 1.01266 11.3494 0.988397 11.1683 1.00613L11.1665 1.00333ZM15.751 7.77746C15.8032 7.8037 15.8496 7.84007 15.8876 7.88446C15.9256 7.92885 15.9544 7.98037 15.9722 8.036C15.99 8.09293 15.9937 9.31 15.99 12.0531L15.9834 15.9899L15.289 14.9259L14.5927 13.8619V11.0003C14.5927 9.1504 14.6011 8.11066 14.6142 8.06026C14.63 8.0021 14.6573 7.94769 14.6945 7.90024C14.7317 7.85279 14.778 7.81327 14.8307 7.784C14.9203 7.73826 14.953 7.7336 15.2974 7.7336C15.6213 7.7336 15.6782 7.73826 15.751 7.77746Z" fill="#6EE7B7"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="-2" y="-2" width="28" height="28" fill="#0a0a0a"/>
|
|
3
|
+
<path d="M13.79 17.0515H18.594C18.907 17.0515 19.206 16.9415 19.477 16.7865C19.748 16.6314 20.027 16.4367 20.184 16.1681C20.34 15.8995 20.449 15.5948 20.449 15.2847C20.449 14.9746 20.34 14.67 20.184 14.4015L16.559 9.00645C16.402 8.73789 16.211 8.54314 15.941 8.38808C15.67 8.23308 15.282 8.12308 14.969 8.12308C14.656 8.12308 14.356 8.23308 14.086 8.38808C13.815 8.54314 13.624 8.73789 13.467 9.00645L13.79 9.92145L11.432 6.26789C11.276 5.99939 11.085 5.71645 10.814 5.56145C10.543 5.40639 10.243 5.38477 9.931 5.38477C9.618 5.38477 9.318 5.40639 9.047 5.56145C8.776 5.71645 8.497 5.99939 8.341 6.26789L3.126 14.4015C2.969 14.67 2.949 14.9746 2.949 15.2847C2.949 15.5948 2.969 15.8995 3.126 16.1681C3.282 16.4366 3.561 16.6314 3.832 16.7865C4.103 16.9415 4.403 17.0515 4.716 17.0515H8.899C10.349 17.0515 11.132 16.9524 11.376 15.8715L12.379 13.6598L13.969 10.9215L16.827 15.2248H12.379L13.79 17.0515ZM8.811 15.2248H5.482L9.931 8.09477L11.199 10.6598L10.034 12.4338C9.208 13.784 8.267 15.2248 8.811 15.2248Z" fill="#6EE7B7"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="-2" y="-2" width="28" height="28" fill="#0a0a0a"/>
|
|
3
|
+
<path d="M14.1431 10.3804C14.1431 9.23289 13.1837 8.30249 12 8.30249C10.8165 8.30249 9.85687 9.23289 9.85687 10.3804C9.85687 11.5281 10.8165 12.4584 12 12.4584C13.1837 12.4584 14.1431 11.5281 14.1431 10.3804Z" fill="#6EE7B7"/>
|
|
4
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.9603 6.52296C19.4129 4.73982 19.9818 1.43318 17.9763 0.312127C15.9802 -0.804041 13.3827 1.33474 12.0111 2.61854C10.6435 1.34754 7.97304 -0.782105 5.9693 0.342511C3.97401 1.46242 4.58931 4.71424 5.05192 6.50856C3.19065 7.02112 0 8.12512 0 10.3807C0 12.6299 3.18733 13.831 5.03758 14.3431C4.57326 16.1474 3.98877 19.3527 5.98662 20.4702C7.99784 21.5946 10.66 19.5156 12.0443 18.2178C13.4247 19.5091 15.9973 21.6017 17.9938 20.4811C19.9965 19.357 19.4749 16.0947 19.0122 14.29C20.8058 13.7768 24 12.6018 24 10.3807C24 8.1468 20.7922 7.03384 18.9603 6.52296ZM18.733 13.3336C18.4292 12.4013 18.0192 11.4098 17.5177 10.3857C17.9964 9.38568 18.3905 8.40704 18.6858 7.48072C20.0287 7.85824 22.9748 8.72104 22.9748 10.3807C22.9748 12.056 20.1477 12.927 18.733 13.3336ZM17.48 19.6208C15.9904 20.4568 13.7777 18.4557 12.7582 17.5047C13.4346 16.7875 14.1104 15.9538 14.77 15.0279C15.9303 14.9282 17.0264 14.765 18.0205 14.5422C18.3461 15.8187 18.9762 18.781 17.48 19.6208ZM6.4989 19.6089C5.00914 18.776 5.69006 15.9157 6.03166 14.5866C7.01467 14.7975 8.10288 14.9492 9.26592 15.0406C9.92984 15.9466 10.6253 16.7793 11.3261 17.5086C10.4602 18.3206 7.9956 20.4456 6.4989 19.6089ZM1.02519 10.3807C1.02519 8.6992 3.95366 7.84264 5.32723 7.46608C5.62761 8.4132 6.02156 9.40352 6.49698 10.405C6.0154 11.4213 5.61582 12.4273 5.31268 13.3856C4.00295 13.0221 1.02519 12.0633 1.02519 10.3807ZM6.48296 1.20283C7.9788 0.363327 10.2998 2.40786 11.2927 3.3281C10.5955 4.05403 9.90648 4.88048 9.24824 5.7812C8.11952 5.88264 7.039 6.04552 6.04567 6.26376C5.673 4.81657 4.98874 2.04143 6.48296 1.20283ZM15.5034 6.86168C16.2692 6.95536 17.0029 7.08 17.6918 7.23248C17.485 7.8752 17.2272 8.54728 16.9236 9.23624C16.4835 8.42664 16.0111 7.63328 15.5034 6.86168ZM12.0114 4.03848C12.4843 4.53518 12.9579 5.08984 13.4238 5.6916C12.4788 5.64824 11.5322 5.64808 10.5872 5.69096C11.0535 5.09478 11.5312 4.54094 12.0114 4.03848ZM7.0852 9.23552C6.78663 8.54896 6.53118 7.87392 6.32258 7.222C7.00734 7.07344 7.7376 6.952 8.4984 6.85984C7.98928 7.62976 7.51768 8.4228 7.0852 9.23552ZM8.52024 13.9726C7.73432 13.8875 6.99301 13.7722 6.30845 13.6278C6.52035 12.9644 6.78142 12.2748 7.08637 11.5734C7.5248 12.3946 8.0036 13.1954 8.52024 13.9726ZM12.0398 16.7932C11.5539 16.2848 11.0692 15.7225 10.5958 15.1177C11.5462 15.1538 12.4985 15.1539 13.4488 15.1128C12.9814 15.7286 12.5095 16.2918 12.0398 16.7932ZM16.9334 11.5378C17.2542 12.2467 17.5246 12.9326 17.7394 13.5847C17.0434 13.7387 16.2922 13.8627 15.5006 13.9548C16.012 13.1686 16.4919 12.3629 16.9334 11.5378ZM14.1978 14.0753C12.7441 14.176 11.2813 14.1749 9.82704 14.0835C9.00072 12.9132 8.26512 11.6824 7.63016 10.4046C8.26208 9.12952 8.99232 7.90112 9.81472 6.73264C11.27 6.626 12.7342 6.62568 14.1895 6.73328C15.0049 7.90168 15.734 9.12688 16.3806 10.3905C15.7417 11.665 15.0076 12.8958 14.1978 14.0753ZM17.4642 1.17328C18.9605 2.01003 18.2945 4.98181 17.9676 6.27408C16.9719 6.05128 15.8906 5.88552 14.7586 5.78248C14.0991 4.87203 13.4158 4.04414 12.7299 3.32759C13.7356 2.38753 15.9825 0.344711 17.4642 1.17328Z" fill="#6EE7B7"/>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="-2" y="-2" width="28" height="28" fill="#0a0a0a"/>
|
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.1327 6.67366C18.7462 7.61835 18.8096 8.64263 18.4961 9.41843C17.9177 8.87197 17.2247 8.48048 16.4975 8.28788C16.5061 8.12730 16.4657 7.96260 16.3715 7.81740C16.1346 7.45265 15.6469 7.34898 15.2822 7.58588L13.5224 8.72865C13.5219 8.72895 13.5214 8.72925 13.5209 8.72963L10.8791 10.4452C10.5143 10.6821 10.4107 11.1698 10.6475 11.5346C10.8844 11.8994 11.3722 12.003 11.7369 11.7662L14.3795 10.05C14.3792 10.0502 14.3797 10.0499 14.3795 10.05C15.3820 9.39968 16.9500 9.74918 17.9327 11.1854C18.9157 12.6221 18.5265 14.2428 17.5241 14.8938L12.2404 18.3251C11.238 18.9761 9.66935 18.6267 8.6864 17.1901C8.07281 16.2454 8.00952 15.2211 8.32306 14.4453C8.90139 14.9918 9.59444 15.3833 10.3216 15.5759C10.313 15.7365 10.3533 15.9012 10.4475 16.0464C10.6845 16.4111 11.1722 16.5148 11.5369 16.2779L16.4401 13.4186C16.8047 13.1817 16.9084 12.694 16.6716 12.3292C16.4347 11.9645 15.9469 11.8608 15.5822 12.0977L12.9402 13.8134C12.94 13.8135 12.9404 13.8133 12.9402 13.8134C11.9377 14.4642 10.3692 14.1149 9.38636 12.6783C8.40341 11.2417 8.79265 9.62093 9.79505 8.96994L15.0788 5.53871C16.0811 4.88773 17.6497 5.23703 18.1327 6.67366ZM19.5279 10.8058C20.5307 9.42090 20.4769 7.39157 19.4537 5.81585C18.1757 3.84808 15.6366 2.97377 13.7209 4.21781L8.43726 7.64904C6.67284 8.79488 6.33499 11.1549 7.29119 13.0580C6.28842 14.4428 6.34222 16.4722 7.3655 18.0479C8.64336 20.0157 11.1826 20.89 13.0982 19.646L18.3818 16.2147C20.1462 15.0689 20.4841 12.7089 19.5279 10.8058Z" fill="#6EE7B7"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<rect x="-2" y="-2" width="28" height="28" fill="#0a0a0a"/>
|
|
3
|
+
<path d="M12 8.1015L10.5723 5.89673H8.59717L12 11.1207L15.4027 5.89673H13.4277L12 8.1015Z" fill="#6EE7B7"/>
|
|
4
|
+
<path d="M16.7113 5.89697L12 13.5209L7.28877 5.89697H4.98865L12 17.604L19.0114 5.89697H16.7113Z" fill="#6EE7B7"/>
|
|
5
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
@@ -1,407 +1,89 @@
|
|
|
1
|
-
# InsForge SDK Documentation
|
|
2
|
-
|
|
3
|
-
## What
|
|
4
|
-
|
|
5
|
-
Backend-as-a-service
|
|
6
|
-
|
|
7
|
-
**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
##
|
|
14
|
-
|
|
15
|
-
###
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
email: 'user@example.com',
|
|
91
|
-
password: 'password123'
|
|
92
|
-
});
|
|
93
|
-
// Returns: { user: {...}, accessToken: 'jwt...' }
|
|
94
|
-
// Backend auto-creates user profile in 'users' table
|
|
95
|
-
|
|
96
|
-
// Sign In
|
|
97
|
-
const { data, error } = await client.auth.signInWithPassword({
|
|
98
|
-
email: 'user@example.com',
|
|
99
|
-
password: 'password123'
|
|
100
|
-
});
|
|
101
|
-
// Token stored automatically for all requests
|
|
102
|
-
|
|
103
|
-
// Sign In with OAuth
|
|
104
|
-
const { data, error } = await client.auth.signInWithOAuth({
|
|
105
|
-
provider: 'google'|'github',
|
|
106
|
-
redirectTo: window.location.origin,
|
|
107
|
-
skipBrowserRedirect: true
|
|
108
|
-
})
|
|
109
|
-
// Returns: { data: { url, provider }, error }
|
|
110
|
-
|
|
111
|
-
// Manual redirect required
|
|
112
|
-
if (data?.url) {
|
|
113
|
-
window.location.href = data.url
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// ⚠️ IMPORTANT: No callback handling needed!
|
|
117
|
-
// After OAuth, user returns to redirectTo URL already authenticated
|
|
118
|
-
// The SDK automatically:
|
|
119
|
-
// - Handles the OAuth callback
|
|
120
|
-
// - Stores the JWT token
|
|
121
|
-
// - Makes user available via getCurrentUser()
|
|
122
|
-
|
|
123
|
-
// ❌ DON'T DO THIS (not needed):
|
|
124
|
-
// const accessToken = urlParams.get('access_token')
|
|
125
|
-
// const userId = urlParams.get('user_id')
|
|
126
|
-
|
|
127
|
-
// ✅ DO THIS INSTEAD (after redirect back):
|
|
128
|
-
const { data, error } = await client.auth.getCurrentUser()
|
|
129
|
-
|
|
130
|
-
// Get Current User (with profile)
|
|
131
|
-
const { data, error } = await client.auth.getCurrentUser();
|
|
132
|
-
// Returns: {
|
|
133
|
-
// user: {id, email, role}, // Auth data
|
|
134
|
-
// profile: {id, nickname, ...} // Users table data (object, not array!)
|
|
135
|
-
// }
|
|
136
|
-
|
|
137
|
-
// Update Profile
|
|
138
|
-
const { data, error } = await client.auth.setProfile({
|
|
139
|
-
nickname: 'John',
|
|
140
|
-
bio: 'Developer',
|
|
141
|
-
avatar_url: 'https://...'
|
|
142
|
-
});
|
|
143
|
-
// Returns: {id, nickname, bio, ...} // Single object, not array!
|
|
144
|
-
|
|
145
|
-
// Get Any User's Profile
|
|
146
|
-
const { data, error } = await client.auth.getProfile(userId);
|
|
147
|
-
// Returns: {id, nickname, bio, ...} // Single object, not array!
|
|
148
|
-
|
|
149
|
-
// Get Session (local storage only, no API call)
|
|
150
|
-
const { data } = await client.auth.getCurrentSession();
|
|
151
|
-
// Returns: { session: { accessToken: 'jwt...', user: {...} } }
|
|
152
|
-
|
|
153
|
-
// Sign Out
|
|
154
|
-
await client.auth.signOut();
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
## Database Operations
|
|
158
|
-
|
|
159
|
-
Before ANY operation, call `get-backend-metadata` to get the current backend state.
|
|
160
|
-
|
|
161
|
-
```javascript
|
|
162
|
-
// Select with filters
|
|
163
|
-
const { data, error } = await client.database
|
|
164
|
-
.from('posts')
|
|
165
|
-
.select('*, users!inner(*)')
|
|
166
|
-
.eq('user_id', userId)
|
|
167
|
-
.order('created_at', { ascending: false })
|
|
168
|
-
.limit(10);
|
|
169
|
-
|
|
170
|
-
// Insert (array required, but use .single() for one record)
|
|
171
|
-
const { data, error } = await client.database
|
|
172
|
-
.from('posts')
|
|
173
|
-
.insert([{
|
|
174
|
-
title: 'My Post',
|
|
175
|
-
user_id: userId,
|
|
176
|
-
image_url: 'https://...'
|
|
177
|
-
}])
|
|
178
|
-
.select()
|
|
179
|
-
.single(); // Returns single object!
|
|
180
|
-
|
|
181
|
-
// Update (returns single object with .single())
|
|
182
|
-
const { data, error } = await client.database
|
|
183
|
-
.from('users')
|
|
184
|
-
.update({ nickname: 'John', bio: 'Developer' })
|
|
185
|
-
.eq('id', userId)
|
|
186
|
-
.select()
|
|
187
|
-
.single(); // Returns single object!
|
|
188
|
-
|
|
189
|
-
// Delete
|
|
190
|
-
const { data, error } = await client.database
|
|
191
|
-
.from('posts')
|
|
192
|
-
.delete()
|
|
193
|
-
.eq('id', postId);
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
## Edge Functions Invocation
|
|
197
|
-
|
|
198
|
-
Invoke deployed edge functions from the SDK (similar to Supabase):
|
|
199
|
-
|
|
200
|
-
```javascript
|
|
201
|
-
// Basic invocation with JSON body (POST by default)
|
|
202
|
-
const { data, error } = await client.functions.invoke('hello-world', {
|
|
203
|
-
body: { name: 'World' }
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
// GET request (no body)
|
|
207
|
-
const { data, error } = await client.functions.invoke('my-function', {
|
|
208
|
-
method: 'GET'
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
// With custom headers
|
|
212
|
-
const { data, error } = await client.functions.invoke('my-function', {
|
|
213
|
-
body: { action: 'create', item: 'task' },
|
|
214
|
-
headers: { 'x-custom-header': 'value' }
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
// Different HTTP methods
|
|
218
|
-
const { data, error } = await client.functions.invoke('api-endpoint', {
|
|
219
|
-
method: 'PUT',
|
|
220
|
-
body: { id: '123', status: 'active' }
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
// Error handling
|
|
224
|
-
if (error) {
|
|
225
|
-
console.error('Function error:', error.message);
|
|
226
|
-
} else {
|
|
227
|
-
console.log('Success:', data);
|
|
228
|
-
}
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
## Storage Operations
|
|
232
|
-
|
|
233
|
-
Before ANY operation, call `get-backend-metadata` to get the current backend state.
|
|
234
|
-
|
|
235
|
-
```javascript
|
|
236
|
-
// Upload file with auto-generated key
|
|
237
|
-
const { data, error } = await client.storage
|
|
238
|
-
.from('images')
|
|
239
|
-
.uploadAuto(fileObject);
|
|
240
|
-
|
|
241
|
-
// data.url = "http://localhost:7130/api/storage/buckets/images/objects/file-timestamp-random.jpg"
|
|
242
|
-
|
|
243
|
-
// Or upload with specific key
|
|
244
|
-
const { data, error } = await client.storage
|
|
245
|
-
.from('images')
|
|
246
|
-
.upload('custom-name.jpg', fileObject);
|
|
247
|
-
|
|
248
|
-
// Download file
|
|
249
|
-
const { data: blob, error } = await client.storage
|
|
250
|
-
.from('images')
|
|
251
|
-
.download('file.jpg');
|
|
252
|
-
|
|
253
|
-
// Get public URL (no API call)
|
|
254
|
-
const url = client.storage
|
|
255
|
-
.from('images')
|
|
256
|
-
.getPublicUrl('file.jpg');
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
## AI Operations
|
|
260
|
-
|
|
261
|
-
Before ANY operation, call `get-backend-metadata` to get the current backend state.
|
|
262
|
-
|
|
263
|
-
### Chat Completions (OpenAI-compatible response)
|
|
264
|
-
|
|
265
|
-
```javascript
|
|
266
|
-
// Non-streaming chat completion (OpenAI-compatible response)
|
|
267
|
-
const completion = await client.ai.chat.completions.create({
|
|
268
|
-
model: 'openai/gpt-4o',
|
|
269
|
-
messages: [
|
|
270
|
-
{
|
|
271
|
-
role: 'system',
|
|
272
|
-
content: 'You are a helpful assistant'
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
role: 'user',
|
|
276
|
-
content: 'What is the capital of France?',
|
|
277
|
-
images: [ // Optional: attach images for vision models
|
|
278
|
-
{ url: 'https://example.com/image.jpg' },
|
|
279
|
-
{ url: 'data:image/jpeg;base64,...' } // Base64 also supported
|
|
280
|
-
]
|
|
281
|
-
}
|
|
282
|
-
],
|
|
283
|
-
temperature: 0.7, // Optional: 0-2
|
|
284
|
-
maxTokens: 1000, // Optional: max completion tokens
|
|
285
|
-
topP: 0.9, // Optional: 0-1
|
|
286
|
-
stream: false // Optional: enable streaming
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
// Access response - OpenAI format
|
|
290
|
-
console.log(completion.choices[0].message.content); // "The capital of France is Paris"
|
|
291
|
-
console.log(completion.usage.total_tokens); // Token usage
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
### Image + Chat Completions Generation
|
|
295
|
-
|
|
296
|
-
```javascript
|
|
297
|
-
// Image + chat completion generation request
|
|
298
|
-
// This model can generate images AND provide text responses
|
|
299
|
-
const response = await client.ai.images.generate({
|
|
300
|
-
model: 'google/gemini-2.5-flash-image-preview',
|
|
301
|
-
prompt: 'A serene landscape with mountains at sunset',
|
|
302
|
-
images: [ // Optional: input images for image-to-image models
|
|
303
|
-
{ url: 'https://example.com/reference.jpg' }
|
|
304
|
-
]
|
|
305
|
-
});
|
|
306
|
-
|
|
307
|
-
// Access response - OpenAI format
|
|
308
|
-
console.log(response.data[0].b64_json); // Base64 encoded image string (OpenAI format)
|
|
309
|
-
console.log(response.data[0].content); // AI's text response about the image or prompt
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
## Complete Example
|
|
313
|
-
|
|
314
|
-
```javascript
|
|
315
|
-
import { createClient } from '@insforge/sdk';
|
|
316
|
-
|
|
317
|
-
const client = new createClient({ baseUrl: 'http://localhost:7130' });
|
|
318
|
-
|
|
319
|
-
// 1. Sign up new user
|
|
320
|
-
const { data: auth, error } = await client.auth.signUp({
|
|
321
|
-
email: 'user@example.com',
|
|
322
|
-
password: 'password123'
|
|
323
|
-
});
|
|
324
|
-
|
|
325
|
-
// 2. Update profile (returns object, not array!)
|
|
326
|
-
const { data: profile } = await client.auth.setProfile({
|
|
327
|
-
nickname: 'JohnDoe',
|
|
328
|
-
bio: 'Full-stack developer'
|
|
329
|
-
});
|
|
330
|
-
console.log(profile.nickname); // 'JohnDoe' - direct access!
|
|
331
|
-
|
|
332
|
-
// 3. Get current user with profile
|
|
333
|
-
const { data: userData } = await client.auth.getCurrentUser();
|
|
334
|
-
console.log(userData.user.email); // 'user@example.com'
|
|
335
|
-
console.log(userData.profile.nickname); // 'JohnDoe'
|
|
336
|
-
|
|
337
|
-
// 4. Create a post
|
|
338
|
-
const { data: post } = await client.database
|
|
339
|
-
.from('posts')
|
|
340
|
-
.insert([{
|
|
341
|
-
user_id: userData.user.id,
|
|
342
|
-
caption: 'Hello World',
|
|
343
|
-
image_url: 'https://example.com/image.jpg'
|
|
344
|
-
}])
|
|
345
|
-
.select()
|
|
346
|
-
.single(); // Returns single object!
|
|
347
|
-
|
|
348
|
-
// 5. Get another user's profile (returns object!)
|
|
349
|
-
const { data: otherUser } = await client.auth.getProfile('other-user-id');
|
|
350
|
-
console.log(otherUser.nickname); // Direct access to properties
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
## Key Points
|
|
354
|
-
|
|
355
|
-
### Edge Functions
|
|
356
|
-
- **SDK Availability**: `createClient` is globally available - no import needed
|
|
357
|
-
- **Token Handling**: Extract from `Authorization` header, use as `edgeFunctionToken` parameter
|
|
358
|
-
- **Flexible Auth**: Can use user token or anon token (from `ACCESS_API_KEY` env var)
|
|
359
|
-
- **Backend Validation**: Tokens are validated by backend on each SDK request
|
|
360
|
-
- **Internal Networking**: Use `BACKEND_INTERNAL_URL` environment variable (defaults to `http://insforge:7130` for Docker container communication)
|
|
361
|
-
|
|
362
|
-
### Edge Functions Invocation (SDK)
|
|
363
|
-
- **Simple API**: `client.functions.invoke(slug, options)
|
|
364
|
-
- **Auto-authentication**: SDK automatically includes auth token from logged-in user
|
|
365
|
-
- **Flexible body**: Accepts any JSON-serializable data
|
|
366
|
-
- **HTTP methods**: Supports GET, POST, PUT, PATCH, DELETE (default: POST)
|
|
367
|
-
- **Returns**: `{ data, error }` structure consistent with other SDK methods
|
|
368
|
-
|
|
369
|
-
### AI Operations - OpenAI Compatibility
|
|
370
|
-
- **Request Format**: Consistent structure across chat and image generation
|
|
371
|
-
- `model`: Model identifier (provider/model-name format)
|
|
372
|
-
- `messages` for chat, `prompt` for images
|
|
373
|
-
- Optional `images` array for multimodal inputs
|
|
374
|
-
- **Response Format**: AI module returns OpenAI-compatible response structures for Chat Completion
|
|
375
|
-
- **Multimodal Support**: Both endpoints accept image inputs via `images` array
|
|
376
|
-
- **Streaming**: Chat completions support streaming with `stream: true`
|
|
377
|
-
|
|
378
|
-
### Profile Management
|
|
379
|
-
- **Auto-creation**: When users sign up/sign in, backend automatically creates a record in `users` table
|
|
380
|
-
- **Profile methods return objects**: `setProfile()` and `getProfile()` return single objects, not arrays!
|
|
381
|
-
- **Two data sources**:
|
|
382
|
-
- `user` = auth data (id, email, role)
|
|
383
|
-
- `profile` = users table data (id, nickname, avatar_url, bio, etc.)
|
|
384
|
-
|
|
385
|
-
### SDK Behavior
|
|
386
|
-
- Tokens stored and managed automatically after login
|
|
387
|
-
- All operations return `{data, error}` structure
|
|
388
|
-
- Database insert requires array format: `[{...}]` even for single records
|
|
389
|
-
- Use `.single()` to get object instead of array from queries
|
|
390
|
-
- Raw SQL is NOT available in SDK
|
|
391
|
-
|
|
392
|
-
### When to Use What
|
|
393
|
-
- **SDK**: Authentication, database CRUD, profile management, AI operations, storage
|
|
394
|
-
- **MCP Tools**: Table creation/modification, schema management
|
|
395
|
-
|
|
396
|
-
### Storage Best Practices
|
|
397
|
-
- **ALWAYS use Storage for**:
|
|
398
|
-
- Images (URLs, base64, binary data)
|
|
399
|
-
- Files and documents
|
|
400
|
-
- Large text content (>1KB)
|
|
401
|
-
- AI-generated images
|
|
402
|
-
- Chat message attachments
|
|
403
|
-
- **Store in Database**:
|
|
404
|
-
- Storage URLs only (not the actual data)
|
|
405
|
-
- Small text fields (<1KB)
|
|
406
|
-
- Metadata and references
|
|
407
|
-
- **Example**: For chat with images, store image in storage bucket, save only the URL in database
|
|
1
|
+
# InsForge SDK Documentation - Overview
|
|
2
|
+
|
|
3
|
+
## What is InsForge?
|
|
4
|
+
|
|
5
|
+
Backend-as-a-service (BaaS) platform providing:
|
|
6
|
+
|
|
7
|
+
- **Database**: PostgreSQL with PostgREST API
|
|
8
|
+
- **Authentication**: Email/password + OAuth (Google, GitHub)
|
|
9
|
+
- **Storage**: File upload/download
|
|
10
|
+
- **AI**: Chat completions and image generation (OpenAI-compatible)
|
|
11
|
+
- **Functions**: Serverless function deployment
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
### 🚨 CRITICAL: Follow these steps in order
|
|
16
|
+
|
|
17
|
+
### Step 1: Download Template
|
|
18
|
+
|
|
19
|
+
Use the `download-template` MCP tool to create a new project with your backend URL and anon key pre-configured.
|
|
20
|
+
|
|
21
|
+
### Step 2: Install SDK
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install @insforge/sdk@latest
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Step 3: Create SDK Client
|
|
28
|
+
|
|
29
|
+
You must create a client instance using `createClient()` with your base URL and anon key:
|
|
30
|
+
|
|
31
|
+
```javascript
|
|
32
|
+
import { createClient } from '@insforge/sdk';
|
|
33
|
+
|
|
34
|
+
const client = createClient({
|
|
35
|
+
baseUrl: 'https://your-app.region.insforge.app', // Your InsForge backend URL
|
|
36
|
+
anonKey: 'your-anon-key-here' // Get this from backend metadata
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**API BASE URL**: Your API base URL is `https://your-app.region.insforge.app`.
|
|
42
|
+
|
|
43
|
+
## Getting Detailed Documentation
|
|
44
|
+
|
|
45
|
+
### 🚨 CRITICAL: Always Fetch Documentation Before Writing Code
|
|
46
|
+
|
|
47
|
+
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.
|
|
48
|
+
|
|
49
|
+
### Use the InsForge `fetch-docs` MCP tool to get specific SDK documentation:
|
|
50
|
+
|
|
51
|
+
Available documentation types:
|
|
52
|
+
|
|
53
|
+
- `"instructions"` - Essential backend setup (START HERE)
|
|
54
|
+
- `"db-sdk"` - Database operations with SDK
|
|
55
|
+
- **Authentication** - Choose based on implementation:
|
|
56
|
+
- `"auth-components-react"` - Frontend auth for React+Vite (singlepage App)
|
|
57
|
+
- `"auth-components-react-router"` - Frontend auth for React(Vite+React Router) (Multipage App)
|
|
58
|
+
- `"storage-sdk"` - File storage operations
|
|
59
|
+
- `"functions-sdk"` - Serverless functions invocation
|
|
60
|
+
- `"ai-integration-sdk"` - AI chat and image generation
|
|
61
|
+
- `"real-time"` - Real-time pub/sub (database + client events) via WebSockets
|
|
62
|
+
|
|
63
|
+
## When to Use SDK vs MCP Tools
|
|
64
|
+
|
|
65
|
+
### Always SDK for Application Logic:
|
|
66
|
+
|
|
67
|
+
- Authentication (register, login, logout, profiles)
|
|
68
|
+
- Database CRUD (select, insert, update, delete)
|
|
69
|
+
- Storage operations (upload, download files)
|
|
70
|
+
- AI operations (chat, image generation)
|
|
71
|
+
- Serverless function invocation
|
|
72
|
+
|
|
73
|
+
### Use MCP Tools for Infrastructure:
|
|
74
|
+
|
|
75
|
+
- Project scaffolding (`download-template`) - Download starter templates with InsForge integration
|
|
76
|
+
- Backend setup and metadata (`get-backend-metadata`)
|
|
77
|
+
- Database schema management (`run-raw-sql`, `get-table-schema`)
|
|
78
|
+
- Storage bucket creation (`create-bucket`, `list-buckets`, `delete-bucket`)
|
|
79
|
+
- Serverless function deployment (`create-function`, `update-function`, `delete-function`)
|
|
80
|
+
|
|
81
|
+
## Important Notes
|
|
82
|
+
|
|
83
|
+
- Use the right framework-specific component package for production-ready auth
|
|
84
|
+
- SDK returns `{data, error}` structure for all operations
|
|
85
|
+
- Database inserts require array format: `[{...}]`
|
|
86
|
+
- Serverless functions have single endpoint (no subpaths)
|
|
87
|
+
- Storage: Upload files to buckets, store URLs in database
|
|
88
|
+
- AI operations are OpenAI-compatible
|
|
89
|
+
- **EXTRA IMPORTANT**: Use Tailwind CSS 3.4 (do not upgrade to v4). Lock these dependencies in `package.json`
|