From e7b25600cbb1c07fa170b972d0f00241d8ed7170 Mon Sep 17 00:00:00 2001 From: devmc-ee Date: Sun, 8 Jun 2025 16:18:30 +0300 Subject: [PATCH] B2B-88: add starter kit structure and elements --- .aiignore | 27 + .cursorignore | 12 + .env.development | 27 + .env.production | 12 + .env.test | 22 + .npmrc | 10 + .nvmrc | 1 + .prettierignore | 3 + .windsurfrules | 225 + app/(auth-pages)/forgot-password/page.tsx | 37 - app/(auth-pages)/layout.tsx | 9 - app/(auth-pages)/sign-in/page.tsx | 44 - app/(auth-pages)/sign-up/page.tsx | 51 - app/(auth-pages)/smtp-message.tsx | 25 - .../(legal)/cookie-policy/page.tsx | 30 + .../(legal)/privacy-policy/page.tsx | 30 + .../(legal)/terms-of-service/page.tsx | 30 + app/(marketing)/_components/site-footer.tsx | 58 + .../site-header-account-section.tsx | 88 + app/(marketing)/_components/site-header.tsx | 16 + .../_components/site-navigation-item.tsx | 37 + .../_components/site-navigation.tsx | 87 + .../_components/site-page-header.tsx | 37 + app/(marketing)/blog/[slug]/page.tsx | 78 + .../blog/_components/blog-pagination.tsx | 58 + .../blog/_components/cover-image.tsx | 28 + .../blog/_components/date-formatter.tsx | 11 + .../blog/_components/draft-post-badge.tsx | 9 + .../blog/_components/post-header.tsx | 50 + .../blog/_components/post-preview.tsx | 65 + app/(marketing)/blog/_components/post.tsx | 24 + app/(marketing)/blog/page.tsx | 105 + .../contact/_components/contact-form.tsx | 161 + .../contact/_lib/contact-email.schema.ts | 7 + .../contact/_lib/server/server-actions.ts | 51 + app/(marketing)/contact/page.tsx | 54 + app/(marketing)/docs/[...slug]/page.tsx | 90 + .../docs/_components/docs-card.tsx | 53 + .../docs/_components/docs-cards.tsx | 24 + .../docs/_components/docs-nav-link.tsx | 39 + .../docs-navigation-collapsible.tsx | 30 + .../docs/_components/docs-navigation.tsx | 143 + .../docs/_components/docs-page-link.tsx | 45 + .../_components/docs-table-of-contents.tsx | 51 + .../_components/floating-docs-navigation.tsx | 73 + .../docs/_lib/server/docs.loader.ts | 31 + app/(marketing)/docs/_lib/utils.ts | 146 + app/(marketing)/docs/layout.tsx | 27 + app/(marketing)/docs/loading.tsx | 3 + app/(marketing)/docs/page.tsx | 39 + app/(marketing)/faq/page.tsx | 143 + app/(marketing)/layout.tsx | 17 + app/(marketing)/loading.tsx | 3 + app/(marketing)/page.tsx | 182 + app/(marketing)/pricing/page.tsx | 39 + app/actions.ts | 134 - app/admin/_components/admin-sidebar.tsx | 67 + app/admin/_components/mobile-navigation.tsx | 30 + app/admin/accounts/[id]/page.tsx | 47 + app/admin/accounts/page.tsx | 79 + app/admin/layout.tsx | 44 + app/admin/loading.tsx | 3 + app/admin/page.tsx | 17 + app/api/billing/webhook/route.ts | 49 + app/api/db/webhook/route.ts | 43 + app/auth/callback/error/page.tsx | 71 + app/auth/callback/route.ts | 32 +- app/auth/confirm/route.ts | 17 + app/auth/layout.tsx | 9 + app/auth/loading.tsx | 3 + app/auth/password-reset/page.tsx | 51 + app/auth/sign-in/page.tsx | 70 + app/auth/sign-up/page.tsx | 69 + app/auth/verify/page.tsx | 55 + app/error.tsx | 78 + app/favicon.ico | Bin 25931 -> 0 bytes app/global-error.tsx | 89 + app/globals.css | 69 - app/healthcheck/route.ts | 37 + .../_components/home-account-selector.tsx | 45 + .../(user)/_components/home-accounts-list.tsx | 61 + .../_components/home-add-account-button.tsx | 27 + .../_components/home-menu-navigation.tsx | 68 + .../_components/home-mobile-navigation.tsx | 122 + .../(user)/_components/home-page-header.tsx | 12 + app/home/(user)/_components/home-sidebar.tsx | 61 + .../(user)/_components/user-notifications.tsx | 16 + .../(user)/_lib/server/load-user-workspace.ts | 42 + .../personal-account-checkout-form.tsx | 128 + .../personal-account-checkout.schema.ts | 6 + .../personal-account-billing-page.loader.ts | 47 + .../billing/_lib/server/server-actions.ts | 58 + .../_lib/server/user-billing.service.ts | 202 + app/home/(user)/billing/error.tsx | 7 + app/home/(user)/billing/layout.tsx | 15 + app/home/(user)/billing/page.tsx | 92 + app/home/(user)/billing/return/page.tsx | 5 + app/home/(user)/layout.tsx | 112 + app/home/(user)/loading.tsx | 3 + app/home/(user)/page.tsx | 32 + app/home/(user)/settings/layout.tsx | 22 + app/home/(user)/settings/page.tsx | 50 + .../_components/dashboard-demo-charts.tsx | 896 + .../[account]/_components/dashboard-demo.tsx | 15 + .../team-account-accounts-selector.tsx | 46 + .../team-account-layout-mobile-navigation.tsx | 185 + .../team-account-layout-page-header.tsx | 13 + ...team-account-layout-sidebar-navigation.tsx | 12 + .../team-account-layout-sidebar.tsx | 81 + .../team-account-navigation-menu.tsx | 74 + .../team-account-notifications.tsx | 19 + .../team-account-billing-page.loader.ts | 43 + .../server/team-account-workspace.loader.ts | 47 + .../_components/embedded-checkout-form.tsx | 14 + .../team-account-checkout-form.tsx | 106 + .../_lib/schema/team-billing.schema.ts | 13 + .../billing/_lib/server/server-actions.ts | 65 + .../_lib/server/team-billing.service.ts | 325 + app/home/[account]/billing/error.tsx | 48 + app/home/[account]/billing/layout.tsx | 15 + app/home/[account]/billing/page.tsx | 135 + app/home/[account]/billing/return/page.tsx | 87 + app/home/[account]/layout.tsx | 147 + app/home/[account]/loading.tsx | 3 + .../_lib/server/members-page.loader.ts | 79 + app/home/[account]/members/page.tsx | 135 + app/home/[account]/page.tsx | 44 + app/home/[account]/settings/page.tsx | 70 + app/home/loading.tsx | 5 + app/join/page.tsx | 155 + app/layout.tsx | 99 +- app/not-found.tsx | 66 + app/opengraph-image.png | Bin 289886 -> 0 bytes app/page.tsx | 16 - app/protected/page.tsx | 38 - app/protected/reset-password/page.tsx | 37 - app/robots.ts | 13 + app/sitemap.xml/route.ts | 87 + app/twitter-image.png | Bin 289886 -> 0 bytes app/update-password/page.tsx | 39 + app/version/route.ts | 59 + components/analytics-provider.tsx | 104 + components/app-logo.tsx | 47 + components/auth-provider.tsx | 79 + components/deploy-button.tsx | 25 - components/env-var-warning.tsx | 33 - components/form-message.tsx | 24 - components/header-auth.tsx | 70 - components/hero.tsx | 44 - components/next-logo.tsx | 46 - .../personal-account-dropdown-container.tsx | 49 + components/react-query-provider.tsx | 26 + components/root-providers.tsx | 89 + components/submit-button.tsx | 23 - components/supabase-logo.tsx | 102 - components/theme-switcher.tsx | 78 - components/tutorial/code-block.tsx | 61 - .../tutorial/connect-supabase-steps.tsx | 62 - components/tutorial/fetch-data-steps.tsx | 96 - components/tutorial/sign-up-user-steps.tsx | 88 - components/tutorial/tutorial-step.tsx | 30 - components/typography/inline-code.tsx | 7 - components/ui/badge.tsx | 36 - components/ui/button.tsx | 56 - components/ui/checkbox.tsx | 30 - components/ui/dropdown-menu.tsx | 200 - components/ui/input.tsx | 25 - components/ui/label.tsx | 26 - config/app.config.ts | 78 + config/auth.config.ts | 73 + config/billing.config.ts | 8 + config/billing.sample.config.ts | 148 + config/feature-flags.config.ts | 112 + config/paths.config.ts | 49 + config/personal-account-navigation.config.tsx | 47 + config/team-account-navigation.config.tsx | 58 + .../authentication/authentication.mdoc | 25 + .../authentication/configuration.mdoc | 55 + .../getting-started/getting-started.mdoc | 28 + .../installing-dependencies.mdoc | 21 + content/posts/brainstorming-ideas.mdoc | 33 + content/posts/must-have-features.mdoc | 43 + content/posts/saas-starter-guide.mdoc | 45 + instrumentation.ts | 30 + lib/create-csp-response.ts | 94 + lib/database.types.ts | 1442 ++ lib/dev-mock-modules.ts | 35 + lib/fonts.ts | 49 + lib/i18n/i18n.resolver.ts | 31 + lib/i18n/i18n.server.ts | 98 + lib/i18n/i18n.settings.ts | 62 + lib/i18n/with-i18n.tsx | 13 + lib/root-metdata.ts | 39 + lib/root-theme.ts | 49 + .../require-user-in-server-component.ts | 25 + middleware.ts | 255 +- next.config.mjs | 163 + next.config.ts | 7 - package-lock.json | 3907 ---- package.json | 117 +- packages/analytics/README.md | 5 + packages/analytics/eslint.config.mjs | 3 + .../analytics/node_modules/@kit/eslint-config | 1 + .../node_modules/@kit/prettier-config | 1 + packages/analytics/node_modules/@kit/tsconfig | 1 + packages/analytics/node_modules/@types/node | 1 + packages/analytics/package.json | 28 + packages/analytics/src/analytics-manager.ts | 94 + packages/analytics/src/index.ts | 9 + .../analytics/src/null-analytics-service.ts | 23 + packages/analytics/src/types.ts | 41 + packages/analytics/tsconfig.json | 8 + packages/billing/core/README.md | 14 + packages/billing/core/eslint.config.mjs | 3 + .../core/node_modules/@kit/eslint-config | 1 + .../core/node_modules/@kit/prettier-config | 1 + .../billing/core/node_modules/@kit/supabase | 1 + .../billing/core/node_modules/@kit/tsconfig | 1 + packages/billing/core/node_modules/@kit/ui | 1 + packages/billing/core/node_modules/zod | 1 + packages/billing/core/package.json | 33 + .../billing/core/src/create-billing-schema.ts | 446 + packages/billing/core/src/index.ts | 3 + .../cancel-subscription-params.schema.ts | 6 + .../create-biling-portal-session.schema.ts | 6 + .../schema/create-billing-checkout.schema.ts | 19 + packages/billing/core/src/schema/index.ts | 7 + .../src/schema/query-billing-usage.schema.ts | 32 + .../src/schema/report-billing-usage.schema.ts | 17 + .../retrieve-checkout-session.schema.ts | 5 + .../update-subscription-params.schema.ts | 7 + .../billing-strategy-provider.service.ts | 77 + .../billing-webhook-handler.service.ts | 55 + packages/billing/core/src/types/index.ts | 22 + packages/billing/core/tsconfig.json | 8 + packages/billing/gateway/README.md | 3 + packages/billing/gateway/eslint.config.mjs | 3 + .../billing/gateway/node_modules/.bin/next | 17 + .../billing/gateway/node_modules/.bin/tsc | 17 + .../gateway/node_modules/.bin/tsserver | 17 + .../gateway/node_modules/@hookform/resolvers | 1 + .../billing/gateway/node_modules/@kit/billing | 1 + .../gateway/node_modules/@kit/eslint-config | 1 + .../gateway/node_modules/@kit/lemon-squeezy | 1 + .../gateway/node_modules/@kit/prettier-config | 1 + .../billing/gateway/node_modules/@kit/shared | 1 + .../billing/gateway/node_modules/@kit/stripe | 1 + .../gateway/node_modules/@kit/supabase | 1 + .../gateway/node_modules/@kit/tsconfig | 1 + packages/billing/gateway/node_modules/@kit/ui | 1 + .../node_modules/@supabase/supabase-js | 1 + .../billing/gateway/node_modules/@types/react | 1 + .../billing/gateway/node_modules/date-fns | 1 + .../billing/gateway/node_modules/lucide-react | 1 + packages/billing/gateway/node_modules/next | 1 + packages/billing/gateway/node_modules/react | 1 + .../gateway/node_modules/react-hook-form | 1 + .../gateway/node_modules/react-i18next | 1 + packages/billing/gateway/node_modules/zod | 1 + packages/billing/gateway/package.json | 46 + .../src/components/billing-portal-card.tsx | 41 + .../src/components/billing-session-status.tsx | 72 + .../current-lifetime-order-card.tsx | 94 + .../src/components/current-plan-alert.tsx | 54 + .../src/components/current-plan-badge.tsx | 50 + .../components/current-subscription-card.tsx | 149 + .../src/components/embedded-checkout.tsx | 115 + .../billing/gateway/src/components/index.ts | 5 + .../src/components/line-item-details.tsx | 304 + .../gateway/src/components/marketing.tsx | 1 + .../src/components/plan-cost-display.tsx | 98 + .../gateway/src/components/plan-picker.tsx | 500 + .../gateway/src/components/pricing-table.tsx | 519 + packages/billing/gateway/src/index.ts | 4 + .../billing-event-handler-factory.service.ts | 48 + .../billing-event-handler-provider.ts | 32 + .../billing-event-handler.service.ts | 285 + .../billing-gateway-provider-factory.ts | 33 + .../billing-gateway-registry.ts | 34 + .../billing-gateway.service.ts | 143 + .../billing-webhooks.service.ts | 37 + packages/billing/gateway/tsconfig.json | 9 + packages/billing/lemon-squeezy/README.md | 5 + .../billing/lemon-squeezy/eslint.config.mjs | 3 + .../lemon-squeezy/node_modules/.bin/next | 17 + .../lemon-squeezy/node_modules/@kit/billing | 1 + .../node_modules/@kit/eslint-config | 1 + .../node_modules/@kit/prettier-config | 1 + .../lemon-squeezy/node_modules/@kit/shared | 1 + .../lemon-squeezy/node_modules/@kit/supabase | 1 + .../lemon-squeezy/node_modules/@kit/tsconfig | 1 + .../lemon-squeezy/node_modules/@kit/ui | 1 + .../@lemonsqueezy/lemonsqueezy.js | 1 + .../lemon-squeezy/node_modules/@types/react | 1 + .../billing/lemon-squeezy/node_modules/next | 1 + .../billing/lemon-squeezy/node_modules/react | 1 + .../billing/lemon-squeezy/node_modules/zod | 1 + packages/billing/lemon-squeezy/package.json | 39 + .../lemon-squeezy/src/components/index.ts | 1 + .../lemon-squeezy-embedded-checkout.tsx | 68 + packages/billing/lemon-squeezy/src/index.ts | 2 + .../schema/lemon-squeezy-server-env.schema.ts | 32 + ...te-lemon-squeezy-billing-portal-session.ts | 24 + .../services/create-lemon-squeezy-checkout.ts | 76 + .../lemon-squeezy-billing-strategy.service.ts | 487 + .../src/services/lemon-squeezy-sdk.ts | 27 + ...zy-subscription-payload-builder.service.ts | 129 + .../lemon-squeezy-webhook-handler.service.ts | 504 + .../lemon-squeezy/src/services/verify-hmac.ts | 28 + .../lemon-squeezy/src/types/order-webhook.ts | 104 + .../src/types/subscription-invoice-webhook.ts | 53 + .../src/types/subscription-webhook.ts | 90 + packages/billing/lemon-squeezy/tsconfig.json | 8 + packages/billing/stripe/README.md | 5 + packages/billing/stripe/eslint.config.mjs | 3 + .../billing/stripe/node_modules/.bin/next | 17 + .../billing/stripe/node_modules/@kit/billing | 1 + .../stripe/node_modules/@kit/eslint-config | 1 + .../stripe/node_modules/@kit/prettier-config | 1 + .../billing/stripe/node_modules/@kit/shared | 1 + .../billing/stripe/node_modules/@kit/supabase | 1 + .../billing/stripe/node_modules/@kit/tsconfig | 1 + packages/billing/stripe/node_modules/@kit/ui | 1 + .../node_modules/@stripe/react-stripe-js | 1 + .../stripe/node_modules/@stripe/stripe-js | 1 + .../billing/stripe/node_modules/@types/react | 1 + packages/billing/stripe/node_modules/date-fns | 1 + packages/billing/stripe/node_modules/next | 1 + packages/billing/stripe/node_modules/react | 1 + packages/billing/stripe/node_modules/stripe | 1 + packages/billing/stripe/node_modules/zod | 1 + packages/billing/stripe/package.json | 43 + .../billing/stripe/src/components/index.ts | 1 + .../components/stripe-embedded-checkout.tsx | 74 + packages/billing/stripe/src/index.ts | 2 + .../src/schema/stripe-client-env.schema.ts | 15 + .../src/schema/stripe-server-env.schema.ts | 39 + .../create-stripe-billing-portal-session.ts | 18 + .../src/services/create-stripe-checkout.ts | 136 + .../stripe-billing-strategy.service.ts | 420 + .../billing/stripe/src/services/stripe-sdk.ts | 22 + ...pe-subscription-payload-builder.service.ts | 121 + .../stripe-webhook-handler.service.ts | 476 + packages/billing/stripe/tsconfig.json | 8 + packages/cms/core/README.md | 3 + packages/cms/core/eslint.config.mjs | 3 + packages/cms/core/node_modules/@kit/cms-types | 1 + .../cms/core/node_modules/@kit/eslint-config | 1 + packages/cms/core/node_modules/@kit/keystatic | 1 + .../core/node_modules/@kit/prettier-config | 1 + packages/cms/core/node_modules/@kit/shared | 1 + packages/cms/core/node_modules/@kit/tsconfig | 1 + packages/cms/core/node_modules/@kit/wordpress | 1 + packages/cms/core/node_modules/@types/node | 1 + packages/cms/core/package.json | 32 + packages/cms/core/src/content-renderer.tsx | 48 + packages/cms/core/src/create-cms-client.ts | 33 + packages/cms/core/src/index.ts | 6 + packages/cms/core/tsconfig.json | 8 + packages/cms/keystatic/README.md | 5 + packages/cms/keystatic/eslint.config.mjs | 3 + .../cms/keystatic/node_modules/.bin/acorn | 17 + packages/cms/keystatic/node_modules/.bin/next | 17 + .../keystatic/node_modules/@keystatic/core | 1 + .../keystatic/node_modules/@keystatic/next | 1 + .../cms/keystatic/node_modules/@kit/cms-types | 1 + .../keystatic/node_modules/@kit/eslint-config | 1 + .../node_modules/@kit/prettier-config | 1 + .../cms/keystatic/node_modules/@kit/tsconfig | 1 + packages/cms/keystatic/node_modules/@kit/ui | 1 + .../keystatic/node_modules/@markdoc/markdoc | 1 + .../cms/keystatic/node_modules/@types/node | 1 + .../cms/keystatic/node_modules/@types/react | 1 + packages/cms/keystatic/node_modules/react | 1 + packages/cms/keystatic/node_modules/zod | 1 + packages/cms/keystatic/package.json | 41 + .../cms/keystatic/src/content-renderer.tsx | 3 + .../cms/keystatic/src/create-keystatic-cms.ts | 37 + packages/cms/keystatic/src/create-reader.ts | 66 + .../cms/keystatic/src/custom-components.tsx | 36 + packages/cms/keystatic/src/index.ts | 1 + .../cms/keystatic/src/keystatic-admin.tsx | 7 + .../cms/keystatic/src/keystatic-client.ts | 368 + .../keystatic/src/keystatic-route-handler.ts | 29 + .../cms/keystatic/src/keystatic-storage.ts | 79 + .../cms/keystatic/src/keystatic.config.ts | 153 + packages/cms/keystatic/src/markdoc-nodes.ts | 42 + packages/cms/keystatic/src/markdoc.tsx | 30 + packages/cms/keystatic/tsconfig.json | 8 + packages/cms/types/eslint.config.mjs | 3 + .../cms/types/node_modules/@kit/eslint-config | 1 + .../types/node_modules/@kit/prettier-config | 1 + packages/cms/types/node_modules/@kit/tsconfig | 1 + packages/cms/types/package.json | 27 + packages/cms/types/src/cms-client.ts | 117 + packages/cms/types/src/cms.type.ts | 3 + packages/cms/types/src/index.ts | 2 + packages/cms/types/tsconfig.json | 8 + packages/cms/wordpress/README.md | 3 + packages/cms/wordpress/docker-compose.yml | 48 + packages/cms/wordpress/eslint.config.mjs | 3 + .../cms/wordpress/node_modules/@kit/cms-types | 1 + .../wordpress/node_modules/@kit/eslint-config | 1 + .../node_modules/@kit/prettier-config | 1 + .../cms/wordpress/node_modules/@kit/tsconfig | 1 + packages/cms/wordpress/node_modules/@kit/ui | 1 + .../cms/wordpress/node_modules/@types/node | 1 + .../cms/wordpress/node_modules/@types/react | 1 + packages/cms/wordpress/node_modules/wp-types | 1 + packages/cms/wordpress/package.json | 34 + .../cms/wordpress/src/content-renderer.tsx | 5 + packages/cms/wordpress/src/index.ts | 1 + packages/cms/wordpress/src/wp-client.ts | 423 + packages/cms/wordpress/tsconfig.json | 8 + .../themes/twentytwentyfour/footer.php | 4 + .../themes/twentytwentyfour/functions.php | 23 + .../themes/twentytwentyfour/index.php | 42 + packages/database-webhooks/README.md | 24 + packages/database-webhooks/eslint.config.mjs | 3 + .../node_modules/@kit/billing | 1 + .../node_modules/@kit/billing-gateway | 1 + .../node_modules/@kit/eslint-config | 1 + .../node_modules/@kit/prettier-config | 1 + .../node_modules/@kit/shared | 1 + .../node_modules/@kit/stripe | 1 + .../node_modules/@kit/supabase | 1 + .../node_modules/@kit/team-accounts | 1 + .../node_modules/@kit/tsconfig | 1 + .../node_modules/@supabase/supabase-js | 1 + packages/database-webhooks/node_modules/zod | 1 + packages/database-webhooks/package.json | 35 + packages/database-webhooks/src/index.ts | 1 + .../src/server/record-change.type.ts | 16 + .../database-webhook-handler.service.ts | 88 + .../database-webhook-router.service.ts | 86 + .../database-webhook-verifier.service.ts | 3 + .../src/server/services/verifier/index.ts | 19 + ...tgres-database-webhook-verifier.service.ts | 27 + packages/database-webhooks/tsconfig.json | 8 + packages/email-templates/README.md | 5 + packages/email-templates/eslint.config.mjs | 3 + .../node_modules/@kit/eslint-config | 1 + .../email-templates/node_modules/@kit/i18n | 1 + .../node_modules/@kit/prettier-config | 1 + .../node_modules/@kit/tsconfig | 1 + .../node_modules/@react-email/components | 1 + packages/email-templates/package.json | 31 + .../src/components/body-style.tsx | 14 + .../src/components/content.tsx | 19 + .../src/components/cta-button.tsx | 16 + .../email-templates/src/components/footer.tsx | 11 + .../email-templates/src/components/header.tsx | 9 + .../src/components/heading.tsx | 9 + .../src/components/wrapper.tsx | 30 + .../src/emails/account-delete.email.tsx | 97 + .../src/emails/invite.email.tsx | 137 + .../email-templates/src/emails/otp.email.tsx | 97 + packages/email-templates/src/index.ts | 3 + packages/email-templates/src/lib/i18n.ts | 30 + .../src/locales/en/account-delete-email.json | 9 + .../src/locales/en/invite-email.json | 9 + .../src/locales/en/otp-email.json | 7 + packages/email-templates/tsconfig.json | 8 + packages/features/accounts/eslint.config.mjs | 3 + .../accounts/node_modules/.bin/nanoid | 17 + .../features/accounts/node_modules/.bin/next | 17 + .../features/accounts/node_modules/.bin/tsc | 17 + .../accounts/node_modules/.bin/tsserver | 17 + .../accounts/node_modules/@hookform/resolvers | 1 + .../node_modules/@kit/billing-gateway | 1 + .../node_modules/@kit/email-templates | 1 + .../accounts/node_modules/@kit/eslint-config | 1 + .../accounts/node_modules/@kit/mailers | 1 + .../accounts/node_modules/@kit/monitoring | 1 + .../features/accounts/node_modules/@kit/next | 1 + .../features/accounts/node_modules/@kit/otp | 1 + .../node_modules/@kit/prettier-config | 1 + .../accounts/node_modules/@kit/shared | 1 + .../accounts/node_modules/@kit/supabase | 1 + .../accounts/node_modules/@kit/tsconfig | 1 + .../features/accounts/node_modules/@kit/ui | 1 + .../node_modules/@radix-ui/react-icons | 1 + .../node_modules/@supabase/supabase-js | 1 + .../node_modules/@tanstack/react-query | 1 + .../accounts/node_modules/@types/react | 1 + .../accounts/node_modules/@types/react-dom | 1 + .../accounts/node_modules/lucide-react | 1 + .../features/accounts/node_modules/nanoid | 1 + packages/features/accounts/node_modules/next | 1 + .../accounts/node_modules/next-themes | 1 + packages/features/accounts/node_modules/react | 1 + .../features/accounts/node_modules/react-dom | 1 + .../accounts/node_modules/react-hook-form | 1 + .../accounts/node_modules/react-i18next | 1 + .../features/accounts/node_modules/sonner | 1 + packages/features/accounts/node_modules/zod | 1 + packages/features/accounts/package.json | 59 + .../src/components/account-selector.tsx | 293 + .../features/accounts/src/components/index.ts | 1 + .../components/personal-account-dropdown.tsx | 225 + .../account-danger-zone.tsx | 191 + .../account-settings-container.tsx | 181 + .../email/update-email-form-container.tsx | 20 + .../email/update-email-form.tsx | 150 + .../personal-account-settings/index.ts | 1 + .../mfa/multi-factor-auth-list.tsx | 308 + .../mfa/multi-factor-auth-setup-dialog.tsx | 513 + .../password/update-password-container.tsx | 42 + .../password/update-password-form.tsx | 206 + .../update-account-details-form-container.tsx | 23 + .../update-account-details-form.tsx | 97 + .../update-account-image-container.tsx | 166 + .../src/components/user-workspace-context.tsx | 40 + .../src/hooks/use-personal-account-data.ts | 69 + .../accounts/src/hooks/use-update-account.ts | 29 + .../accounts/src/hooks/use-user-workspace.ts | 17 + .../src/schema/account-details.schema.ts | 5 + .../schema/delete-personal-account.schema.ts | 5 + .../src/schema/update-email.schema.ts | 20 + .../src/schema/update-password.schema.ts | 20 + packages/features/accounts/src/server/api.ts | 131 + .../personal-accounts-server-actions.ts | 104 + .../delete-personal-account.service.ts | 68 + packages/features/accounts/tsconfig.json | 8 + packages/features/admin/eslint.config.mjs | 3 + .../features/admin/node_modules/.bin/next | 17 + .../admin/node_modules/@hookform/resolvers | 1 + .../admin/node_modules/@kit/eslint-config | 1 + .../features/admin/node_modules/@kit/next | 1 + .../admin/node_modules/@kit/prettier-config | 1 + .../features/admin/node_modules/@kit/shared | 1 + .../features/admin/node_modules/@kit/supabase | 1 + .../features/admin/node_modules/@kit/tsconfig | 1 + packages/features/admin/node_modules/@kit/ui | 1 + .../@makerkit/data-loader-supabase-core | 1 + .../@makerkit/data-loader-supabase-nextjs | 1 + .../admin/node_modules/@supabase/supabase-js | 1 + .../admin/node_modules/@tanstack/react-query | 1 + .../admin/node_modules/@tanstack/react-table | 1 + .../features/admin/node_modules/@types/react | 1 + .../features/admin/node_modules/lucide-react | 1 + packages/features/admin/node_modules/next | 1 + packages/features/admin/node_modules/react | 1 + .../features/admin/node_modules/react-dom | 1 + .../admin/node_modules/react-hook-form | 1 + packages/features/admin/node_modules/zod | 1 + packages/features/admin/package.json | 45 + .../src/components/admin-account-page.tsx | 404 + .../src/components/admin-accounts-table.tsx | 263 + .../src/components/admin-ban-user-dialog.tsx | 133 + .../components/admin-create-user-dialog.tsx | 178 + .../admin/src/components/admin-dashboard.tsx | 95 + .../admin-delete-account-dialog.tsx | 135 + .../components/admin-delete-user-dialog.tsx | 135 + .../admin/src/components/admin-guard.tsx | 28 + .../admin-impersonate-user-dialog.tsx | 188 + .../src/components/admin-members-table.tsx | 67 + .../components/admin-memberships-table.tsx | 53 + .../admin-reactivate-user-dialog.tsx | 128 + .../admin-reset-password-dialog.tsx | 163 + packages/features/admin/src/index.ts | 1 + .../src/lib/server/admin-server-actions.ts | 240 + .../server/loaders/admin-dashboard.loader.ts | 21 + .../lib/server/schema/admin-actions.schema.ts | 18 + .../lib/server/schema/create-user.schema.ts | 11 + .../server/schema/reset-password.schema.ts | 9 + .../server/services/admin-accounts.service.ts | 24 + .../services/admin-auth-user.service.ts | 203 + .../services/admin-dashboard.service.ts | 114 + .../src/lib/server/utils/admin-action.ts | 22 + .../src/lib/server/utils/is-super-admin.ts | 22 + packages/features/admin/tsconfig.json | 10 + packages/features/auth/eslint.config.mjs | 3 + packages/features/auth/node_modules/.bin/next | 17 + packages/features/auth/node_modules/.bin/tsc | 17 + .../features/auth/node_modules/.bin/tsserver | 17 + .../auth/node_modules/@hookform/resolvers | 1 + .../auth/node_modules/@kit/eslint-config | 1 + .../auth/node_modules/@kit/prettier-config | 1 + .../features/auth/node_modules/@kit/shared | 1 + .../features/auth/node_modules/@kit/supabase | 1 + .../features/auth/node_modules/@kit/tsconfig | 1 + packages/features/auth/node_modules/@kit/ui | 1 + .../node_modules/@marsidev/react-turnstile | 1 + .../auth/node_modules/@radix-ui/react-icons | 1 + .../auth/node_modules/@supabase/supabase-js | 1 + .../auth/node_modules/@tanstack/react-query | 1 + .../features/auth/node_modules/@types/react | 1 + .../features/auth/node_modules/lucide-react | 1 + packages/features/auth/node_modules/next | 1 + .../auth/node_modules/react-hook-form | 1 + .../features/auth/node_modules/react-i18next | 1 + packages/features/auth/node_modules/sonner | 1 + packages/features/auth/node_modules/zod | 1 + packages/features/auth/package.json | 49 + .../src/captcha/client/captcha-provider.tsx | 39 + .../captcha/client/captcha-token-setter.tsx | 37 + .../features/auth/src/captcha/client/index.ts | 3 + .../src/captcha/client/use-captcha-token.ts | 23 + .../features/auth/src/captcha/server/index.ts | 1 + .../src/captcha/server/verify-captcha.tsx | 39 + .../auth/src/components/auth-error-alert.tsx | 43 + .../auth/src/components/auth-layout.tsx | 24 + .../src/components/auth-link-redirect.tsx | 34 + .../src/components/auth-provider-button.tsx | 26 + .../components/magic-link-auth-container.tsx | 182 + .../multi-factor-challenge-container.tsx | 303 + .../components/oauth-provider-logo-image.tsx | 63 + .../auth/src/components/oauth-providers.tsx | 139 + .../password-reset-request-container.tsx | 112 + .../components/password-sign-in-container.tsx | 57 + .../src/components/password-sign-in-form.tsx | 146 + .../components/password-sign-up-container.tsx | 77 + .../src/components/password-sign-up-form.tsx | 170 + .../src/components/resend-auth-link-form.tsx | 113 + .../components/sign-in-methods-container.tsx | 92 + .../components/sign-up-methods-container.tsx | 143 + .../terms-and-conditions-form-field.tsx | 56 + .../src/components/update-password-form.tsx | 174 + .../auth/src/hooks/use-sign-up-flow.ts | 91 + packages/features/auth/src/mfa.ts | 1 + packages/features/auth/src/password-reset.ts | 2 + .../auth/src/schemas/password-reset.schema.ts | 10 + .../src/schemas/password-sign-in.schema.ts | 8 + .../src/schemas/password-sign-up.schema.ts | 11 + .../auth/src/schemas/password.schema.ts | 82 + packages/features/auth/src/shared.ts | 1 + packages/features/auth/src/sign-in.ts | 2 + packages/features/auth/src/sign-up.ts | 2 + packages/features/auth/tsconfig.json | 8 + .../features/notifications/eslint.config.mjs | 3 + .../notifications/node_modules/.bin/tsc | 17 + .../notifications/node_modules/.bin/tsserver | 17 + .../node_modules/@kit/eslint-config | 1 + .../node_modules/@kit/prettier-config | 1 + .../notifications/node_modules/@kit/supabase | 1 + .../notifications/node_modules/@kit/tsconfig | 1 + .../notifications/node_modules/@kit/ui | 1 + .../node_modules/@supabase/supabase-js | 1 + .../node_modules/@tanstack/react-query | 1 + .../notifications/node_modules/@types/react | 1 + .../notifications/node_modules/lucide-react | 1 + .../features/notifications/node_modules/react | 1 + .../notifications/node_modules/react-dom | 1 + .../notifications/node_modules/react-i18next | 1 + packages/features/notifications/package.json | 38 + .../notifications/src/components/index.ts | 1 + .../src/components/notifications-popover.tsx | 249 + .../features/notifications/src/hooks/index.ts | 2 + .../src/hooks/use-dismiss-notification.ts | 21 + .../src/hooks/use-fetch-notifications.ts | 73 + .../src/hooks/use-notifications-stream.ts | 51 + .../features/notifications/src/server/api.ts | 53 + .../src/server/notifications.service.ts | 23 + packages/features/notifications/tsconfig.json | 8 + .../features/team-accounts/eslint.config.mjs | 3 + .../team-accounts/node_modules/.bin/nanoid | 17 + .../team-accounts/node_modules/.bin/next | 17 + .../team-accounts/node_modules/.bin/tsc | 17 + .../team-accounts/node_modules/.bin/tsserver | 17 + .../node_modules/@hookform/resolvers | 1 + .../team-accounts/node_modules/@kit/accounts | 1 + .../node_modules/@kit/billing-gateway | 1 + .../node_modules/@kit/email-templates | 1 + .../node_modules/@kit/eslint-config | 1 + .../team-accounts/node_modules/@kit/mailers | 1 + .../node_modules/@kit/monitoring | 1 + .../team-accounts/node_modules/@kit/next | 1 + .../team-accounts/node_modules/@kit/otp | 1 + .../node_modules/@kit/prettier-config | 1 + .../team-accounts/node_modules/@kit/shared | 1 + .../team-accounts/node_modules/@kit/supabase | 1 + .../team-accounts/node_modules/@kit/tsconfig | 1 + .../team-accounts/node_modules/@kit/ui | 1 + .../node_modules/@supabase/supabase-js | 1 + .../node_modules/@tanstack/react-query | 1 + .../node_modules/@tanstack/react-table | 1 + .../team-accounts/node_modules/@types/react | 1 + .../node_modules/@types/react-dom | 1 + .../node_modules/class-variance-authority | 1 + .../team-accounts/node_modules/date-fns | 1 + .../team-accounts/node_modules/lucide-react | 1 + .../team-accounts/node_modules/nanoid | 1 + .../features/team-accounts/node_modules/next | 1 + .../features/team-accounts/node_modules/react | 1 + .../team-accounts/node_modules/react-dom | 1 + .../node_modules/react-hook-form | 1 + .../team-accounts/node_modules/react-i18next | 1 + .../team-accounts/node_modules/sonner | 1 + .../features/team-accounts/node_modules/zod | 1 + packages/features/team-accounts/package.json | 59 + .../components/create-team-account-dialog.tsx | 166 + .../team-accounts/src/components/index.ts | 8 + .../accept-invitation-container.tsx | 93 + .../invitations/account-invitations-table.tsx | 248 + .../invitations/delete-invitation-dialog.tsx | 113 + .../invitations/invitation-submit-button.tsx | 25 + .../invitations/renew-invitation-dialog.tsx | 117 + .../sign-out-invitation-button.tsx | 25 + .../invitations/update-invitation-dialog.tsx | 186 + .../members/account-members-table.tsx | 311 + .../invite-members-dialog-container.tsx | 277 + .../members/membership-role-selector.tsx | 52 + .../members/remove-member-dialog.tsx | 118 + .../src/components/members/role-badge.tsx | 32 + .../members/roles-data-provider.tsx | 42 + .../members/transfer-ownership-dialog.tsx | 192 + .../members/update-member-role-dialog.tsx | 186 + .../settings/team-account-danger-zone.tsx | 413 + .../team-account-settings-container.tsx | 91 + .../update-team-account-image-container.tsx | 141 + .../update-team-account-name-form.tsx | 122 + .../team-account-workspace-context.tsx | 27 + .../src/hooks/use-team-account-workspace.ts | 22 + .../src/schema/accept-invitation.schema.ts | 6 + .../src/schema/create-team.schema.ts | 50 + .../src/schema/delete-invitation.schema.ts | 5 + .../src/schema/delete-team-account.schema.ts | 6 + .../src/schema/invite-members.schema.ts | 26 + .../src/schema/leave-team-account.schema.ts | 6 + .../src/schema/remove-member.schema.ts | 6 + .../src/schema/renew-invitation.schema.ts | 5 + .../transfer-ownership-confirmation.schema.ts | 11 + .../src/schema/update-invitation.schema.ts | 6 + .../src/schema/update-member-role.schema.ts | 10 + .../src/schema/update-team-name.schema.ts | 14 + .../create-team-account-server-actions.ts | 48 + .../delete-team-account-server-actions.ts | 96 + .../leave-team-account-server-actions.ts | 31 + .../actions/team-details-server-actions.ts | 57 + .../team-invitations-server-actions.ts | 159 + .../actions/team-members-server-actions.ts | 144 + .../features/team-accounts/src/server/api.ts | 236 + .../services/account-invitations.service.ts | 296 + .../services/account-members.service.ts | 181 + .../account-per-seat-billing.service.ts | 227 + .../services/create-team-account.service.ts | 45 + .../services/delete-team-account.service.ts | 61 + .../services/leave-team-account.service.ts | 63 + .../account-invitations-webhook.service.ts | 175 + .../webhooks/account-webhooks.service.ts | 90 + .../src/server/services/webhooks/index.ts | 2 + packages/features/team-accounts/tsconfig.json | 8 + packages/i18n/eslint.config.mjs | 3 + packages/i18n/node_modules/.bin/next | 17 + packages/i18n/node_modules/.bin/tsc | 17 + packages/i18n/node_modules/.bin/tsserver | 17 + packages/i18n/node_modules/@kit/eslint-config | 1 + .../i18n/node_modules/@kit/prettier-config | 1 + packages/i18n/node_modules/@kit/shared | 1 + packages/i18n/node_modules/@kit/tsconfig | 1 + .../i18n/node_modules/@tanstack/react-query | 1 + packages/i18n/node_modules/i18next | 1 + .../i18next-browser-languagedetector | 1 + .../node_modules/i18next-resources-to-backend | 1 + packages/i18n/node_modules/next | 1 + packages/i18n/node_modules/react | 1 + packages/i18n/node_modules/react-dom | 1 + packages/i18n/node_modules/react-i18next | 1 + packages/i18n/package.json | 41 + packages/i18n/src/create-i18n-settings.ts | 41 + packages/i18n/src/i18n-provider.tsx | 47 + packages/i18n/src/i18n.client.ts | 81 + packages/i18n/src/i18n.server.ts | 151 + packages/i18n/src/index.ts | 1 + packages/i18n/tsconfig.json | 8 + packages/mailers/core/README.md | 3 + packages/mailers/core/eslint.config.mjs | 3 + .../core/node_modules/@kit/eslint-config | 1 + .../core/node_modules/@kit/mailers-shared | 1 + .../mailers/core/node_modules/@kit/nodemailer | 1 + .../core/node_modules/@kit/prettier-config | 1 + .../mailers/core/node_modules/@kit/resend | 1 + .../mailers/core/node_modules/@kit/shared | 1 + .../mailers/core/node_modules/@kit/tsconfig | 1 + .../mailers/core/node_modules/@types/node | 1 + packages/mailers/core/node_modules/zod | 1 + packages/mailers/core/package.json | 33 + packages/mailers/core/src/index.ts | 12 + packages/mailers/core/src/provider-enum.ts | 16 + packages/mailers/core/src/registry.ts | 26 + packages/mailers/core/tsconfig.json | 8 + packages/mailers/nodemailer/eslint.config.mjs | 3 + .../node_modules/@kit/eslint-config | 1 + .../node_modules/@kit/mailers-shared | 1 + .../node_modules/@kit/prettier-config | 1 + .../nodemailer/node_modules/@kit/tsconfig | 1 + .../nodemailer/node_modules/@types/nodemailer | 1 + .../nodemailer/node_modules/nodemailer | 1 + packages/mailers/nodemailer/node_modules/zod | 1 + packages/mailers/nodemailer/package.json | 33 + packages/mailers/nodemailer/src/index.ts | 26 + .../nodemailer/src/smtp-configuration.ts | 21 + packages/mailers/nodemailer/tsconfig.json | 8 + packages/mailers/resend/eslint.config.mjs | 3 + .../resend/node_modules/@kit/eslint-config | 1 + .../resend/node_modules/@kit/mailers-shared | 1 + .../resend/node_modules/@kit/prettier-config | 1 + .../mailers/resend/node_modules/@kit/tsconfig | 1 + .../mailers/resend/node_modules/@types/node | 1 + packages/mailers/resend/node_modules/zod | 1 + packages/mailers/resend/package.json | 30 + packages/mailers/resend/src/index.ts | 53 + packages/mailers/resend/tsconfig.json | 8 + packages/mailers/shared/README.md | 3 + packages/mailers/shared/eslint.config.mjs | 3 + .../shared/node_modules/@kit/eslint-config | 1 + .../shared/node_modules/@kit/prettier-config | 1 + .../mailers/shared/node_modules/@kit/tsconfig | 1 + packages/mailers/shared/node_modules/zod | 1 + packages/mailers/shared/package.json | 28 + packages/mailers/shared/src/index.ts | 3 + packages/mailers/shared/src/mailer.ts | 7 + .../shared/src/schema/mailer.schema.ts | 20 + .../shared/src/schema/smtp-config.schema.ts | 28 + packages/mailers/shared/tsconfig.json | 8 + packages/monitoring/api/README.md | 39 + packages/monitoring/api/eslint.config.mjs | 3 + .../monitoring/api/node_modules/@kit/baselime | 1 + .../api/node_modules/@kit/eslint-config | 1 + .../api/node_modules/@kit/monitoring-core | 1 + .../api/node_modules/@kit/prettier-config | 1 + .../monitoring/api/node_modules/@kit/sentry | 1 + .../monitoring/api/node_modules/@kit/shared | 1 + .../monitoring/api/node_modules/@kit/tsconfig | 1 + .../monitoring/api/node_modules/@types/react | 1 + packages/monitoring/api/node_modules/react | 1 + packages/monitoring/api/node_modules/zod | 1 + packages/monitoring/api/package.json | 38 + .../api/src/components/error-boundary.tsx | 35 + .../monitoring/api/src/components/index.ts | 2 + .../api/src/components/provider.tsx | 67 + .../api/src/get-monitoring-provider.ts | 12 + packages/monitoring/api/src/hooks/index.ts | 2 + .../api/src/hooks/use-capture-exception.ts | 11 + .../api/src/hooks/use-monitoring.ts | 14 + .../monitoring/api/src/instrumentation.ts | 51 + packages/monitoring/api/src/server.ts | 1 + .../services/get-server-monitoring-service.ts | 52 + packages/monitoring/api/tsconfig.json | 8 + packages/monitoring/baselime/README.md | 3 + .../monitoring/baselime/eslint.config.mjs | 3 + .../baselime/node_modules/.bin/acorn | 17 + .../monitoring/baselime/node_modules/.bin/tsc | 17 + .../baselime/node_modules/.bin/tsserver | 17 + .../node_modules/@baselime/node-opentelemetry | 1 + .../baselime/node_modules/@baselime/react-rum | 1 + .../baselime/node_modules/@kit/eslint-config | 1 + .../node_modules/@kit/monitoring-core | 1 + .../node_modules/@kit/prettier-config | 1 + .../baselime/node_modules/@kit/tsconfig | 1 + .../baselime/node_modules/@types/react | 1 + .../monitoring/baselime/node_modules/react | 1 + packages/monitoring/baselime/node_modules/zod | 1 + packages/monitoring/baselime/package.json | 38 + packages/monitoring/baselime/src/client.ts | 1 + .../baselime/src/components/provider.tsx | 50 + .../baselime/src/hooks/use-baselime.ts | 30 + .../baselime/src/instrumentation.ts | 38 + packages/monitoring/baselime/src/server.ts | 1 + .../baselime-server-monitoring.service.ts | 115 + packages/monitoring/baselime/tsconfig.json | 8 + packages/monitoring/core/eslint.config.mjs | 3 + .../core/node_modules/@kit/eslint-config | 1 + .../core/node_modules/@kit/prettier-config | 1 + .../core/node_modules/@kit/tsconfig | 1 + .../monitoring/core/node_modules/@types/react | 1 + packages/monitoring/core/node_modules/react | 1 + packages/monitoring/core/package.json | 30 + .../core/src/console-monitoring.service.ts | 21 + packages/monitoring/core/src/index.ts | 3 + .../monitoring/core/src/monitoring.context.ts | 10 + .../monitoring/core/src/monitoring.service.ts | 37 + packages/monitoring/core/tsconfig.json | 8 + packages/monitoring/sentry/README.md | 3 + packages/monitoring/sentry/eslint.config.mjs | 3 + .../monitoring/sentry/node_modules/.bin/acorn | 17 + .../sentry/node_modules/.bin/browserslist | 17 + .../monitoring/sentry/node_modules/.bin/next | 17 + .../sentry/node_modules/.bin/rollup | 17 + .../sentry/node_modules/.bin/webpack | 17 + .../sentry/node_modules/@kit/eslint-config | 1 + .../sentry/node_modules/@kit/monitoring-core | 1 + .../sentry/node_modules/@kit/prettier-config | 1 + .../sentry/node_modules/@kit/tsconfig | 1 + .../sentry/node_modules/@sentry/nextjs | 1 + .../sentry/node_modules/@types/react | 1 + .../sentry/node_modules/import-in-the-middle | 1 + packages/monitoring/sentry/node_modules/react | 1 + packages/monitoring/sentry/package.json | 37 + .../sentry/src/components/provider.tsx | 17 + packages/monitoring/sentry/src/index.ts | 1 + .../sentry/src/sentry.client.config.ts | 42 + .../sentry/src/sentry.server.config.ts | 27 + .../src/services/sentry-monitoring.service.ts | 71 + packages/monitoring/sentry/tsconfig.json | 8 + packages/next/README.md | 3 + packages/next/eslint.config.mjs | 3 + packages/next/node_modules/.bin/next | 17 + packages/next/node_modules/@kit/auth | 1 + packages/next/node_modules/@kit/eslint-config | 1 + packages/next/node_modules/@kit/monitoring | 1 + .../next/node_modules/@kit/prettier-config | 1 + packages/next/node_modules/@kit/supabase | 1 + packages/next/node_modules/@kit/tsconfig | 1 + .../next/node_modules/@supabase/supabase-js | 1 + packages/next/node_modules/next | 1 + packages/next/node_modules/zod | 1 + packages/next/package.json | 34 + packages/next/src/actions/index.ts | 76 + packages/next/src/routes/index.ts | 140 + packages/next/src/utils/index.ts | 14 + packages/next/tsconfig.json | 8 + packages/otp/README.md | 3 + packages/otp/eslint.config.mjs | 3 + packages/otp/node_modules/@hookform/resolvers | 1 + .../otp/node_modules/@kit/email-templates | 1 + packages/otp/node_modules/@kit/eslint-config | 1 + packages/otp/node_modules/@kit/mailers | 1 + packages/otp/node_modules/@kit/next | 1 + .../otp/node_modules/@kit/prettier-config | 1 + packages/otp/node_modules/@kit/shared | 1 + packages/otp/node_modules/@kit/supabase | 1 + packages/otp/node_modules/@kit/tsconfig | 1 + packages/otp/node_modules/@kit/ui | 1 + .../otp/node_modules/@radix-ui/react-icons | 1 + .../otp/node_modules/@supabase/supabase-js | 1 + packages/otp/node_modules/@types/react | 1 + packages/otp/node_modules/@types/react-dom | 1 + packages/otp/node_modules/react | 1 + packages/otp/node_modules/react-dom | 1 + packages/otp/node_modules/react-hook-form | 1 + packages/otp/node_modules/zod | 1 + packages/otp/package.json | 43 + packages/otp/src/api/index.ts | 117 + packages/otp/src/components/index.ts | 1 + .../otp/src/components/verify-otp-form.tsx | 257 + packages/otp/src/server/index.ts | 1 + packages/otp/src/server/otp-email.service.ts | 62 + packages/otp/src/server/otp.service.ts | 275 + packages/otp/src/server/server-actions.ts | 95 + packages/otp/src/types/index.ts | 115 + packages/otp/tsconfig.json | 8 + packages/shared/eslint.config.mjs | 3 + packages/shared/node_modules/.bin/pino | 17 + .../shared/node_modules/@kit/eslint-config | 1 + .../shared/node_modules/@kit/prettier-config | 1 + packages/shared/node_modules/@kit/tsconfig | 1 + packages/shared/node_modules/@types/react | 1 + packages/shared/node_modules/pino | 1 + packages/shared/package.json | 35 + packages/shared/src/events/index.tsx | 118 + packages/shared/src/hooks/index.ts | 1 + packages/shared/src/hooks/use-csrf-token.ts | 17 + packages/shared/src/logger/impl/console.ts | 9 + packages/shared/src/logger/impl/pino.ts | 18 + packages/shared/src/logger/index.ts | 33 + packages/shared/src/logger/logger.ts | 17 + packages/shared/src/registry/index.ts | 106 + packages/shared/src/utils.ts | 23 + packages/shared/tsconfig.json | 8 + packages/supabase/README.md | 14 + packages/supabase/eslint.config.mjs | 3 + packages/supabase/node_modules/.bin/next | 17 + .../supabase/node_modules/@kit/eslint-config | 1 + .../node_modules/@kit/prettier-config | 1 + packages/supabase/node_modules/@kit/tsconfig | 1 + packages/supabase/node_modules/@supabase/ssr | 1 + .../node_modules/@supabase/supabase-js | 1 + .../node_modules/@tanstack/react-query | 1 + packages/supabase/node_modules/@types/react | 1 + packages/supabase/node_modules/next | 1 + packages/supabase/node_modules/react | 1 + packages/supabase/node_modules/server-only | 1 + packages/supabase/node_modules/zod | 1 + packages/supabase/package.json | 43 + .../supabase/src/auth-callback.service.ts | 292 + packages/supabase/src/auth.ts | 1 + packages/supabase/src/check-requires-mfa.ts | 31 + .../supabase/src/clients/browser-client.ts | 14 + .../supabase/src/clients/middleware-client.ts | 38 + .../src/clients/server-admin-client.ts | 28 + .../supabase/src/clients/server-client.ts | 39 + packages/supabase/src/database.types.ts | 1442 ++ packages/supabase/src/get-service-role-key.ts | 33 + .../supabase/src/get-supabase-client-keys.ts | 24 + .../src/hooks/use-auth-change-listener.ts | 82 + .../src/hooks/use-fetch-mfa-factors.ts | 25 + .../src/hooks/use-request-reset-password.ts | 42 + .../hooks/use-sign-in-with-email-password.ts | 30 + .../src/hooks/use-sign-in-with-otp.ts | 43 + .../src/hooks/use-sign-in-with-provider.ts | 25 + packages/supabase/src/hooks/use-sign-out.ts | 13 + .../hooks/use-sign-up-with-email-password.ts | 46 + packages/supabase/src/hooks/use-supabase.ts | 8 + .../src/hooks/use-update-user-mutation.ts | 31 + .../hooks/use-user-factors-mutation-key.ts | 3 + packages/supabase/src/hooks/use-user.ts | 35 + packages/supabase/src/hooks/use-verify-otp.ts | 26 + packages/supabase/src/require-user.ts | 69 + packages/supabase/tsconfig.json | 8 + packages/tsconfig/base.json | 21 + packages/tsconfig/nextjs.json | 20 + packages/tsconfig/package.json | 10 + packages/tsconfig/react-library.json | 11 + packages/ui/README.md | 12 + packages/ui/components.json | 20 + packages/ui/eslint.config.mjs | 3 + packages/ui/node_modules/.bin/acorn | 17 + packages/ui/node_modules/.bin/eslint | 17 + packages/ui/node_modules/.bin/jiti | 17 + packages/ui/node_modules/.bin/next | 17 + packages/ui/node_modules/.bin/prettier | 17 + packages/ui/node_modules/.bin/tsc | 17 + packages/ui/node_modules/.bin/tsserver | 17 + packages/ui/node_modules/@hookform/resolvers | 1 + packages/ui/node_modules/@kit/eslint-config | 1 + packages/ui/node_modules/@kit/prettier-config | 1 + packages/ui/node_modules/@kit/tsconfig | 1 + .../ui/node_modules/@radix-ui/react-accordion | 1 + .../node_modules/@radix-ui/react-alert-dialog | 1 + .../ui/node_modules/@radix-ui/react-avatar | 1 + .../ui/node_modules/@radix-ui/react-checkbox | 1 + .../node_modules/@radix-ui/react-collapsible | 1 + .../ui/node_modules/@radix-ui/react-dialog | 1 + .../@radix-ui/react-dropdown-menu | 1 + .../ui/node_modules/@radix-ui/react-icons | 1 + .../ui/node_modules/@radix-ui/react-label | 1 + .../@radix-ui/react-navigation-menu | 1 + .../ui/node_modules/@radix-ui/react-popover | 1 + .../ui/node_modules/@radix-ui/react-progress | 1 + .../node_modules/@radix-ui/react-radio-group | 1 + .../node_modules/@radix-ui/react-scroll-area | 1 + .../ui/node_modules/@radix-ui/react-select | 1 + .../ui/node_modules/@radix-ui/react-separator | 1 + packages/ui/node_modules/@radix-ui/react-slot | 1 + .../ui/node_modules/@radix-ui/react-switch | 1 + packages/ui/node_modules/@radix-ui/react-tabs | 1 + .../ui/node_modules/@radix-ui/react-toast | 1 + .../ui/node_modules/@radix-ui/react-tooltip | 1 + .../ui/node_modules/@tanstack/react-query | 1 + .../ui/node_modules/@tanstack/react-table | 1 + packages/ui/node_modules/@types/react | 1 + packages/ui/node_modules/@types/react-dom | 1 + .../ui/node_modules/class-variance-authority | 1 + packages/ui/node_modules/clsx | 1 + packages/ui/node_modules/cmdk | 1 + packages/ui/node_modules/date-fns | 1 + packages/ui/node_modules/eslint | 1 + packages/ui/node_modules/input-otp | 1 + packages/ui/node_modules/lucide-react | 1 + packages/ui/node_modules/next | 1 + packages/ui/node_modules/next-themes | 1 + packages/ui/node_modules/prettier | 1 + packages/ui/node_modules/react-day-picker | 1 + packages/ui/node_modules/react-hook-form | 1 + packages/ui/node_modules/react-i18next | 1 + .../ui/node_modules/react-top-loading-bar | 1 + packages/ui/node_modules/recharts | 1 + packages/ui/node_modules/sonner | 1 + packages/ui/node_modules/tailwind-merge | 1 + packages/ui/node_modules/tailwindcss | 1 + packages/ui/node_modules/tailwindcss-animate | 1 + packages/ui/node_modules/typescript | 1 + packages/ui/node_modules/zod | 1 + packages/ui/package.json | 135 + packages/ui/src/hooks/use-mobile.tsx | 21 + packages/ui/src/lib/utils/cn.ts | 7 + packages/ui/src/lib/utils/index.ts | 2 + packages/ui/src/lib/utils/is-route-active.ts | 108 + packages/ui/src/makerkit/app-breadcrumbs.tsx | 89 + .../ui/src/makerkit/authenticity-token.tsx | 17 + .../src/makerkit/bordered-navigation-menu.tsx | 69 + packages/ui/src/makerkit/card-button.tsx | 117 + .../src/makerkit/context/sidebar.context.ts | 11 + packages/ui/src/makerkit/cookie-banner.tsx | 118 + packages/ui/src/makerkit/data-table.tsx | 285 + packages/ui/src/makerkit/empty-state.tsx | 79 + packages/ui/src/makerkit/global-loader.tsx | 36 + packages/ui/src/makerkit/if.tsx | 29 + .../ui/src/makerkit/image-upload-input.tsx | 200 + packages/ui/src/makerkit/image-uploader.tsx | 113 + .../ui/src/makerkit/language-selector.tsx | 79 + packages/ui/src/makerkit/lazy-render.tsx | 62 + packages/ui/src/makerkit/loading-overlay.tsx | 33 + .../ui/src/makerkit/marketing/coming-soon.tsx | 107 + .../ui/src/makerkit/marketing/cta-button.tsx | 22 + .../src/makerkit/marketing/feature-card.tsx | 28 + .../src/makerkit/marketing/feature-grid.tsx | 18 + .../makerkit/marketing/feature-showcase.tsx | 51 + packages/ui/src/makerkit/marketing/footer.tsx | 98 + .../marketing/gradient-secondary-text.tsx | 23 + .../src/makerkit/marketing/gradient-text.tsx | 18 + packages/ui/src/makerkit/marketing/header.tsx | 33 + .../ui/src/makerkit/marketing/hero-title.tsx | 23 + packages/ui/src/makerkit/marketing/hero.tsx | 90 + packages/ui/src/makerkit/marketing/index.tsx | 15 + .../marketing/newsletter-signup-container.tsx | 86 + .../makerkit/marketing/newsletter-signup.tsx | 71 + packages/ui/src/makerkit/marketing/pill.tsx | 59 + .../src/makerkit/marketing/secondary-hero.tsx | 42 + .../makerkit/mobile-navigation-dropdown.tsx | 72 + .../src/makerkit/mobile-navigation-menu.tsx | 77 + packages/ui/src/makerkit/mode-toggle.tsx | 141 + packages/ui/src/makerkit/multi-step-form.tsx | 435 + .../src/makerkit/navigation-config.schema.ts | 48 + packages/ui/src/makerkit/page.tsx | 234 + packages/ui/src/makerkit/profile-avatar.tsx | 54 + packages/ui/src/makerkit/sidebar.tsx | 357 + packages/ui/src/makerkit/spinner.tsx | 30 + packages/ui/src/makerkit/stepper.tsx | 217 + .../makerkit/top-loading-bar-indicator.tsx | 40 + packages/ui/src/makerkit/trans.tsx | 5 + packages/ui/src/makerkit/version-updater.tsx | 118 + packages/ui/src/shadcn/accordion.tsx | 49 + packages/ui/src/shadcn/alert-dialog.tsx | 127 + packages/ui/src/shadcn/alert.tsx | 61 + packages/ui/src/shadcn/avatar.tsx | 45 + packages/ui/src/shadcn/badge.tsx | 37 + packages/ui/src/shadcn/breadcrumb.tsx | 113 + packages/ui/src/shadcn/button.tsx | 64 + packages/ui/src/shadcn/calendar.tsx | 70 + packages/ui/src/shadcn/card.tsx | 64 + packages/ui/src/shadcn/chart.tsx | 361 + packages/ui/src/shadcn/checkbox.tsx | 29 + packages/ui/src/shadcn/collapsible.tsx | 11 + packages/ui/src/shadcn/command.tsx | 139 + packages/ui/src/shadcn/data-table.tsx | 86 + packages/ui/src/shadcn/dialog.tsx | 112 + packages/ui/src/shadcn/dropdown-menu.tsx | 190 + packages/ui/src/shadcn/form.tsx | 174 + packages/ui/src/shadcn/heading.tsx | 81 + packages/ui/src/shadcn/index.ts | 1 + packages/ui/src/shadcn/input-otp.tsx | 74 + packages/ui/src/shadcn/input.tsx | 26 + packages/ui/src/shadcn/label.tsx | 22 + packages/ui/src/shadcn/navigation-menu.tsx | 119 + packages/ui/src/shadcn/popover.tsx | 33 + packages/ui/src/shadcn/progress.tsx | 28 + packages/ui/src/shadcn/radio-group.tsx | 66 + packages/ui/src/shadcn/scroll-area.tsx | 45 + packages/ui/src/shadcn/select.tsx | 151 + packages/ui/src/shadcn/separator.tsx | 31 + packages/ui/src/shadcn/sheet.tsx | 133 + packages/ui/src/shadcn/sidebar.tsx | 1048 ++ packages/ui/src/shadcn/skeleton.tsx | 15 + packages/ui/src/shadcn/sonner.tsx | 31 + packages/ui/src/shadcn/switch.tsx | 28 + packages/ui/src/shadcn/table.tsx | 108 + packages/ui/src/shadcn/tabs.tsx | 50 + packages/ui/src/shadcn/textarea.tsx | 21 + packages/ui/src/shadcn/tooltip.tsx | 29 + packages/ui/tsconfig.json | 16 + pnpm-lock.yaml | 15061 ++++++++++++++++ pnpm-workspace.yaml | 3 + postcss.config.js | 6 - postcss.config.mjs | 6 + public/images/billing.webp | Bin 0 -> 50886 bytes public/images/dashboard-header.webp | Bin 0 -> 23044 bytes public/images/dashboard.webp | Bin 0 -> 126214 bytes .../images/favicon/android-chrome-192x192.png | Bin 0 -> 10625 bytes .../images/favicon/android-chrome-512x512.png | Bin 0 -> 56863 bytes public/images/favicon/apple-touch-icon.png | Bin 0 -> 9880 bytes public/images/favicon/browserconfig.xml | 9 + public/images/favicon/favicon-16x16.png | Bin 0 -> 677 bytes public/images/favicon/favicon-32x32.png | Bin 0 -> 1293 bytes public/images/favicon/favicon.ico | Bin 0 -> 15406 bytes public/images/favicon/mstile-150x150.png | Bin 0 -> 9681 bytes public/images/favicon/safari-pinned-tab.svg | 20 + public/images/favicon/site.webmanifest | 33 + public/images/multi-tenancy.webp | Bin 0 -> 12226 bytes public/images/oauth/apple.webp | Bin 0 -> 9380 bytes public/images/oauth/facebook.webp | Bin 0 -> 3166 bytes public/images/oauth/fb.png | Bin 0 -> 3931 bytes public/images/oauth/github.webp | Bin 0 -> 7270 bytes public/images/oauth/google.png | Bin 0 -> 11199 bytes public/images/oauth/google.webp | Bin 0 -> 13264 bytes public/images/oauth/microsoft.webp | Bin 0 -> 10354 bytes public/images/posts/brainstorming.webp | Bin 0 -> 220744 bytes public/images/posts/indie-hacker.webp | Bin 0 -> 202950 bytes .../images/posts/saas-starter-blog-post.webp | Bin 0 -> 82240 bytes public/images/sign-in.webp | Bin 0 -> 16644 bytes public/locales/en/account.json | 115 + public/locales/en/auth.json | 90 + public/locales/en/billing.json | 120 + public/locales/en/common.json | 96 + public/locales/en/marketing.json | 39 + public/locales/en/teams.json | 163 + styles/globals.css | 49 + styles/makerkit.css | 42 + styles/markdoc.css | 114 + styles/shadcn-ui.css | 104 + styles/theme.css | 116 + styles/theme.utilities.css | 5 + supabase copy/.gitignore | 4 + supabase copy/config.toml | 108 + .../migrations/20221215192558_schema.sql | 2759 +++ .../migrations/20240319163440_roles-seed.sql | 40 + .../20241007151024_delete-team-account.sql | 7 + .../20250301095452_one-time-tokens.sql | 346 + .../20250302043537_mfa-rls-super-admin.sql | 206 + .../20250304104340_set-otp-search-path.sql | 203 + supabase copy/schemas/00-privileges.sql | 74 + supabase copy/schemas/01-enums.sql | 65 + supabase copy/schemas/02-config.sql | 145 + supabase copy/schemas/03-accounts.sql | 560 + supabase copy/schemas/04-roles.sql | 30 + supabase copy/schemas/05-memberships.sql | 312 + .../schemas/06-roles-permissions.sql | 237 + supabase copy/schemas/07-invitations.sql | 354 + .../schemas/08-billing-customers.sql | 66 + supabase copy/schemas/09-subscriptions.sql | 366 + supabase copy/schemas/10-orders.sql | 280 + supabase copy/schemas/11-notifications.sql | 114 + supabase copy/schemas/12-one-time-tokens.sql | 349 + supabase copy/schemas/13-mfa.sql | 145 + supabase copy/schemas/14-super-admin.sql | 73 + supabase copy/schemas/15-account-views.sql | 126 + supabase copy/schemas/16-storage.sql | 50 + supabase copy/schemas/17-roles-seed.sql | 47 + supabase copy/seed.sql | 315 + .../templates/change-email-address.html | 8 + supabase copy/templates/confirm-email.html | 8 + supabase copy/templates/invite-user.html | 8 + supabase copy/templates/magic-link.html | 8 + supabase copy/templates/reset-password.html | 8 + supabase copy/tests/database/00000-dbdev.sql | 74 + .../tests/database/00000-makerkit-helpers.sql | 151 + .../database/account-permissions.test.sql | 104 + .../tests/database/account-slug.test.sql | 128 + .../tests/database/delete-membership.test.sql | 94 + .../tests/database/invitations.test.sql | 111 + .../tests/database/memberships.test.sql | 92 + .../tests/database/notifications.test.sql | 77 + supabase copy/tests/database/otp.test.sql | 1112 ++ .../tests/database/personal-accounts.test.sql | 57 + .../database/personal-billing-orders.test.sql | 95 + .../personal-billing-subscriptions.test.sql | 196 + .../tests/database/schema-conditions.test.sql | 57 + supabase copy/tests/database/schema.test.sql | 52 + supabase copy/tests/database/storage.test.sql | 122 + .../database/super-admin-edge-cases.test.sql | 84 + .../tests/database/super-admin.test.sql | 210 + .../tests/database/team-accounts.test.sql | 775 + .../database/team-billing-orders.test.sql | 113 + .../team-billing-subscriptions.test.sql | 196 + .../database/transfer-ownership.test.sql | 73 + .../tests/database/update-membership.test.sql | 27 + tooling/eslint/apps.js | 20 + tooling/eslint/base.js | 73 + tooling/eslint/nextjs.js | 17 + tooling/eslint/node_modules/.bin/eslint | 17 + tooling/eslint/node_modules/.bin/jiti | 17 + tooling/eslint/node_modules/.bin/tsc | 17 + tooling/eslint/node_modules/.bin/tsserver | 17 + tooling/eslint/node_modules/.bin/turbo | 17 + .../eslint/node_modules/@kit/prettier-config | 1 + tooling/eslint/node_modules/@kit/tsconfig | 1 + .../node_modules/@next/eslint-plugin-next | 1 + tooling/eslint/node_modules/@types/eslint | 1 + tooling/eslint/node_modules/eslint | 1 + .../eslint/node_modules/eslint-config-next | 1 + .../eslint/node_modules/eslint-config-turbo | 1 + tooling/eslint/node_modules/typescript | 1 + tooling/eslint/node_modules/typescript-eslint | 1 + tooling/eslint/package.json | 29 + tooling/prettier/index.mjs | 34 + tooling/prettier/node_modules/.bin/prettier | 17 + tooling/prettier/node_modules/.bin/tsc | 17 + tooling/prettier/node_modules/.bin/tsserver | 17 + tooling/prettier/node_modules/@kit/tsconfig | 1 + .../@trivago/prettier-plugin-sort-imports | 1 + tooling/prettier/node_modules/prettier | 1 + .../node_modules/prettier-plugin-tailwindcss | 1 + tooling/prettier/node_modules/typescript | 1 + tooling/prettier/package.json | 21 + tooling/prettier/tsconfig.json | 8 + tooling/typescript/base.json | 22 + tooling/typescript/package.json | 8 + tsconfig.json | 40 +- 1280 files changed, 77893 insertions(+), 5688 deletions(-) create mode 100644 .aiignore create mode 100644 .cursorignore create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .env.test create mode 100644 .npmrc create mode 100644 .nvmrc create mode 100644 .prettierignore create mode 100644 .windsurfrules delete mode 100644 app/(auth-pages)/forgot-password/page.tsx delete mode 100644 app/(auth-pages)/layout.tsx delete mode 100644 app/(auth-pages)/sign-in/page.tsx delete mode 100644 app/(auth-pages)/sign-up/page.tsx delete mode 100644 app/(auth-pages)/smtp-message.tsx create mode 100644 app/(marketing)/(legal)/cookie-policy/page.tsx create mode 100644 app/(marketing)/(legal)/privacy-policy/page.tsx create mode 100644 app/(marketing)/(legal)/terms-of-service/page.tsx create mode 100644 app/(marketing)/_components/site-footer.tsx create mode 100644 app/(marketing)/_components/site-header-account-section.tsx create mode 100644 app/(marketing)/_components/site-header.tsx create mode 100644 app/(marketing)/_components/site-navigation-item.tsx create mode 100644 app/(marketing)/_components/site-navigation.tsx create mode 100644 app/(marketing)/_components/site-page-header.tsx create mode 100644 app/(marketing)/blog/[slug]/page.tsx create mode 100644 app/(marketing)/blog/_components/blog-pagination.tsx create mode 100644 app/(marketing)/blog/_components/cover-image.tsx create mode 100644 app/(marketing)/blog/_components/date-formatter.tsx create mode 100644 app/(marketing)/blog/_components/draft-post-badge.tsx create mode 100644 app/(marketing)/blog/_components/post-header.tsx create mode 100644 app/(marketing)/blog/_components/post-preview.tsx create mode 100644 app/(marketing)/blog/_components/post.tsx create mode 100644 app/(marketing)/blog/page.tsx create mode 100644 app/(marketing)/contact/_components/contact-form.tsx create mode 100644 app/(marketing)/contact/_lib/contact-email.schema.ts create mode 100644 app/(marketing)/contact/_lib/server/server-actions.ts create mode 100644 app/(marketing)/contact/page.tsx create mode 100644 app/(marketing)/docs/[...slug]/page.tsx create mode 100644 app/(marketing)/docs/_components/docs-card.tsx create mode 100644 app/(marketing)/docs/_components/docs-cards.tsx create mode 100644 app/(marketing)/docs/_components/docs-nav-link.tsx create mode 100644 app/(marketing)/docs/_components/docs-navigation-collapsible.tsx create mode 100644 app/(marketing)/docs/_components/docs-navigation.tsx create mode 100644 app/(marketing)/docs/_components/docs-page-link.tsx create mode 100644 app/(marketing)/docs/_components/docs-table-of-contents.tsx create mode 100644 app/(marketing)/docs/_components/floating-docs-navigation.tsx create mode 100644 app/(marketing)/docs/_lib/server/docs.loader.ts create mode 100644 app/(marketing)/docs/_lib/utils.ts create mode 100644 app/(marketing)/docs/layout.tsx create mode 100644 app/(marketing)/docs/loading.tsx create mode 100644 app/(marketing)/docs/page.tsx create mode 100644 app/(marketing)/faq/page.tsx create mode 100644 app/(marketing)/layout.tsx create mode 100644 app/(marketing)/loading.tsx create mode 100644 app/(marketing)/page.tsx create mode 100644 app/(marketing)/pricing/page.tsx delete mode 100644 app/actions.ts create mode 100644 app/admin/_components/admin-sidebar.tsx create mode 100644 app/admin/_components/mobile-navigation.tsx create mode 100644 app/admin/accounts/[id]/page.tsx create mode 100644 app/admin/accounts/page.tsx create mode 100644 app/admin/layout.tsx create mode 100644 app/admin/loading.tsx create mode 100644 app/admin/page.tsx create mode 100644 app/api/billing/webhook/route.ts create mode 100644 app/api/db/webhook/route.ts create mode 100644 app/auth/callback/error/page.tsx create mode 100644 app/auth/confirm/route.ts create mode 100644 app/auth/layout.tsx create mode 100644 app/auth/loading.tsx create mode 100644 app/auth/password-reset/page.tsx create mode 100644 app/auth/sign-in/page.tsx create mode 100644 app/auth/sign-up/page.tsx create mode 100644 app/auth/verify/page.tsx create mode 100644 app/error.tsx delete mode 100644 app/favicon.ico create mode 100644 app/global-error.tsx delete mode 100644 app/globals.css create mode 100644 app/healthcheck/route.ts create mode 100644 app/home/(user)/_components/home-account-selector.tsx create mode 100644 app/home/(user)/_components/home-accounts-list.tsx create mode 100644 app/home/(user)/_components/home-add-account-button.tsx create mode 100644 app/home/(user)/_components/home-menu-navigation.tsx create mode 100644 app/home/(user)/_components/home-mobile-navigation.tsx create mode 100644 app/home/(user)/_components/home-page-header.tsx create mode 100644 app/home/(user)/_components/home-sidebar.tsx create mode 100644 app/home/(user)/_components/user-notifications.tsx create mode 100644 app/home/(user)/_lib/server/load-user-workspace.ts create mode 100644 app/home/(user)/billing/_components/personal-account-checkout-form.tsx create mode 100644 app/home/(user)/billing/_lib/schema/personal-account-checkout.schema.ts create mode 100644 app/home/(user)/billing/_lib/server/personal-account-billing-page.loader.ts create mode 100644 app/home/(user)/billing/_lib/server/server-actions.ts create mode 100644 app/home/(user)/billing/_lib/server/user-billing.service.ts create mode 100644 app/home/(user)/billing/error.tsx create mode 100644 app/home/(user)/billing/layout.tsx create mode 100644 app/home/(user)/billing/page.tsx create mode 100644 app/home/(user)/billing/return/page.tsx create mode 100644 app/home/(user)/layout.tsx create mode 100644 app/home/(user)/loading.tsx create mode 100644 app/home/(user)/page.tsx create mode 100644 app/home/(user)/settings/layout.tsx create mode 100644 app/home/(user)/settings/page.tsx create mode 100644 app/home/[account]/_components/dashboard-demo-charts.tsx create mode 100644 app/home/[account]/_components/dashboard-demo.tsx create mode 100644 app/home/[account]/_components/team-account-accounts-selector.tsx create mode 100644 app/home/[account]/_components/team-account-layout-mobile-navigation.tsx create mode 100644 app/home/[account]/_components/team-account-layout-page-header.tsx create mode 100644 app/home/[account]/_components/team-account-layout-sidebar-navigation.tsx create mode 100644 app/home/[account]/_components/team-account-layout-sidebar.tsx create mode 100644 app/home/[account]/_components/team-account-navigation-menu.tsx create mode 100644 app/home/[account]/_components/team-account-notifications.tsx create mode 100644 app/home/[account]/_lib/server/team-account-billing-page.loader.ts create mode 100644 app/home/[account]/_lib/server/team-account-workspace.loader.ts create mode 100644 app/home/[account]/billing/_components/embedded-checkout-form.tsx create mode 100644 app/home/[account]/billing/_components/team-account-checkout-form.tsx create mode 100644 app/home/[account]/billing/_lib/schema/team-billing.schema.ts create mode 100644 app/home/[account]/billing/_lib/server/server-actions.ts create mode 100644 app/home/[account]/billing/_lib/server/team-billing.service.ts create mode 100644 app/home/[account]/billing/error.tsx create mode 100644 app/home/[account]/billing/layout.tsx create mode 100644 app/home/[account]/billing/page.tsx create mode 100644 app/home/[account]/billing/return/page.tsx create mode 100644 app/home/[account]/layout.tsx create mode 100644 app/home/[account]/loading.tsx create mode 100644 app/home/[account]/members/_lib/server/members-page.loader.ts create mode 100644 app/home/[account]/members/page.tsx create mode 100644 app/home/[account]/page.tsx create mode 100644 app/home/[account]/settings/page.tsx create mode 100644 app/home/loading.tsx create mode 100644 app/join/page.tsx create mode 100644 app/not-found.tsx delete mode 100644 app/opengraph-image.png delete mode 100644 app/page.tsx delete mode 100644 app/protected/page.tsx delete mode 100644 app/protected/reset-password/page.tsx create mode 100644 app/robots.ts create mode 100644 app/sitemap.xml/route.ts delete mode 100644 app/twitter-image.png create mode 100644 app/update-password/page.tsx create mode 100644 app/version/route.ts create mode 100644 components/analytics-provider.tsx create mode 100644 components/app-logo.tsx create mode 100644 components/auth-provider.tsx delete mode 100644 components/deploy-button.tsx delete mode 100644 components/env-var-warning.tsx delete mode 100644 components/form-message.tsx delete mode 100644 components/header-auth.tsx delete mode 100644 components/hero.tsx delete mode 100644 components/next-logo.tsx create mode 100644 components/personal-account-dropdown-container.tsx create mode 100644 components/react-query-provider.tsx create mode 100644 components/root-providers.tsx delete mode 100644 components/submit-button.tsx delete mode 100644 components/supabase-logo.tsx delete mode 100644 components/theme-switcher.tsx delete mode 100644 components/tutorial/code-block.tsx delete mode 100644 components/tutorial/connect-supabase-steps.tsx delete mode 100644 components/tutorial/fetch-data-steps.tsx delete mode 100644 components/tutorial/sign-up-user-steps.tsx delete mode 100644 components/tutorial/tutorial-step.tsx delete mode 100644 components/typography/inline-code.tsx delete mode 100644 components/ui/badge.tsx delete mode 100644 components/ui/button.tsx delete mode 100644 components/ui/checkbox.tsx delete mode 100644 components/ui/dropdown-menu.tsx delete mode 100644 components/ui/input.tsx delete mode 100644 components/ui/label.tsx create mode 100644 config/app.config.ts create mode 100644 config/auth.config.ts create mode 100644 config/billing.config.ts create mode 100644 config/billing.sample.config.ts create mode 100644 config/feature-flags.config.ts create mode 100644 config/paths.config.ts create mode 100644 config/personal-account-navigation.config.tsx create mode 100644 config/team-account-navigation.config.tsx create mode 100644 content/documentation/authentication/authentication.mdoc create mode 100644 content/documentation/authentication/configuration.mdoc create mode 100644 content/documentation/getting-started/getting-started.mdoc create mode 100644 content/documentation/getting-started/installing-dependencies.mdoc create mode 100644 content/posts/brainstorming-ideas.mdoc create mode 100644 content/posts/must-have-features.mdoc create mode 100644 content/posts/saas-starter-guide.mdoc create mode 100644 instrumentation.ts create mode 100644 lib/create-csp-response.ts create mode 100644 lib/database.types.ts create mode 100644 lib/dev-mock-modules.ts create mode 100644 lib/fonts.ts create mode 100644 lib/i18n/i18n.resolver.ts create mode 100644 lib/i18n/i18n.server.ts create mode 100644 lib/i18n/i18n.settings.ts create mode 100644 lib/i18n/with-i18n.tsx create mode 100644 lib/root-metdata.ts create mode 100644 lib/root-theme.ts create mode 100644 lib/server/require-user-in-server-component.ts create mode 100644 next.config.mjs delete mode 100644 next.config.ts delete mode 100644 package-lock.json create mode 100644 packages/analytics/README.md create mode 100644 packages/analytics/eslint.config.mjs create mode 120000 packages/analytics/node_modules/@kit/eslint-config create mode 120000 packages/analytics/node_modules/@kit/prettier-config create mode 120000 packages/analytics/node_modules/@kit/tsconfig create mode 120000 packages/analytics/node_modules/@types/node create mode 100644 packages/analytics/package.json create mode 100644 packages/analytics/src/analytics-manager.ts create mode 100644 packages/analytics/src/index.ts create mode 100644 packages/analytics/src/null-analytics-service.ts create mode 100644 packages/analytics/src/types.ts create mode 100644 packages/analytics/tsconfig.json create mode 100644 packages/billing/core/README.md create mode 100644 packages/billing/core/eslint.config.mjs create mode 120000 packages/billing/core/node_modules/@kit/eslint-config create mode 120000 packages/billing/core/node_modules/@kit/prettier-config create mode 120000 packages/billing/core/node_modules/@kit/supabase create mode 120000 packages/billing/core/node_modules/@kit/tsconfig create mode 120000 packages/billing/core/node_modules/@kit/ui create mode 120000 packages/billing/core/node_modules/zod create mode 100644 packages/billing/core/package.json create mode 100644 packages/billing/core/src/create-billing-schema.ts create mode 100644 packages/billing/core/src/index.ts create mode 100644 packages/billing/core/src/schema/cancel-subscription-params.schema.ts create mode 100644 packages/billing/core/src/schema/create-biling-portal-session.schema.ts create mode 100644 packages/billing/core/src/schema/create-billing-checkout.schema.ts create mode 100644 packages/billing/core/src/schema/index.ts create mode 100644 packages/billing/core/src/schema/query-billing-usage.schema.ts create mode 100644 packages/billing/core/src/schema/report-billing-usage.schema.ts create mode 100644 packages/billing/core/src/schema/retrieve-checkout-session.schema.ts create mode 100644 packages/billing/core/src/schema/update-subscription-params.schema.ts create mode 100644 packages/billing/core/src/services/billing-strategy-provider.service.ts create mode 100644 packages/billing/core/src/services/billing-webhook-handler.service.ts create mode 100644 packages/billing/core/src/types/index.ts create mode 100644 packages/billing/core/tsconfig.json create mode 100644 packages/billing/gateway/README.md create mode 100644 packages/billing/gateway/eslint.config.mjs create mode 100755 packages/billing/gateway/node_modules/.bin/next create mode 100755 packages/billing/gateway/node_modules/.bin/tsc create mode 100755 packages/billing/gateway/node_modules/.bin/tsserver create mode 120000 packages/billing/gateway/node_modules/@hookform/resolvers create mode 120000 packages/billing/gateway/node_modules/@kit/billing create mode 120000 packages/billing/gateway/node_modules/@kit/eslint-config create mode 120000 packages/billing/gateway/node_modules/@kit/lemon-squeezy create mode 120000 packages/billing/gateway/node_modules/@kit/prettier-config create mode 120000 packages/billing/gateway/node_modules/@kit/shared create mode 120000 packages/billing/gateway/node_modules/@kit/stripe create mode 120000 packages/billing/gateway/node_modules/@kit/supabase create mode 120000 packages/billing/gateway/node_modules/@kit/tsconfig create mode 120000 packages/billing/gateway/node_modules/@kit/ui create mode 120000 packages/billing/gateway/node_modules/@supabase/supabase-js create mode 120000 packages/billing/gateway/node_modules/@types/react create mode 120000 packages/billing/gateway/node_modules/date-fns create mode 120000 packages/billing/gateway/node_modules/lucide-react create mode 120000 packages/billing/gateway/node_modules/next create mode 120000 packages/billing/gateway/node_modules/react create mode 120000 packages/billing/gateway/node_modules/react-hook-form create mode 120000 packages/billing/gateway/node_modules/react-i18next create mode 120000 packages/billing/gateway/node_modules/zod create mode 100644 packages/billing/gateway/package.json create mode 100644 packages/billing/gateway/src/components/billing-portal-card.tsx create mode 100644 packages/billing/gateway/src/components/billing-session-status.tsx create mode 100644 packages/billing/gateway/src/components/current-lifetime-order-card.tsx create mode 100644 packages/billing/gateway/src/components/current-plan-alert.tsx create mode 100644 packages/billing/gateway/src/components/current-plan-badge.tsx create mode 100644 packages/billing/gateway/src/components/current-subscription-card.tsx create mode 100644 packages/billing/gateway/src/components/embedded-checkout.tsx create mode 100644 packages/billing/gateway/src/components/index.ts create mode 100644 packages/billing/gateway/src/components/line-item-details.tsx create mode 100644 packages/billing/gateway/src/components/marketing.tsx create mode 100644 packages/billing/gateway/src/components/plan-cost-display.tsx create mode 100644 packages/billing/gateway/src/components/plan-picker.tsx create mode 100644 packages/billing/gateway/src/components/pricing-table.tsx create mode 100644 packages/billing/gateway/src/index.ts create mode 100644 packages/billing/gateway/src/server/services/billing-event-handler/billing-event-handler-factory.service.ts create mode 100644 packages/billing/gateway/src/server/services/billing-event-handler/billing-event-handler-provider.ts create mode 100644 packages/billing/gateway/src/server/services/billing-event-handler/billing-event-handler.service.ts create mode 100644 packages/billing/gateway/src/server/services/billing-gateway/billing-gateway-provider-factory.ts create mode 100644 packages/billing/gateway/src/server/services/billing-gateway/billing-gateway-registry.ts create mode 100644 packages/billing/gateway/src/server/services/billing-gateway/billing-gateway.service.ts create mode 100644 packages/billing/gateway/src/server/services/billing-webhooks/billing-webhooks.service.ts create mode 100644 packages/billing/gateway/tsconfig.json create mode 100644 packages/billing/lemon-squeezy/README.md create mode 100644 packages/billing/lemon-squeezy/eslint.config.mjs create mode 100755 packages/billing/lemon-squeezy/node_modules/.bin/next create mode 120000 packages/billing/lemon-squeezy/node_modules/@kit/billing create mode 120000 packages/billing/lemon-squeezy/node_modules/@kit/eslint-config create mode 120000 packages/billing/lemon-squeezy/node_modules/@kit/prettier-config create mode 120000 packages/billing/lemon-squeezy/node_modules/@kit/shared create mode 120000 packages/billing/lemon-squeezy/node_modules/@kit/supabase create mode 120000 packages/billing/lemon-squeezy/node_modules/@kit/tsconfig create mode 120000 packages/billing/lemon-squeezy/node_modules/@kit/ui create mode 120000 packages/billing/lemon-squeezy/node_modules/@lemonsqueezy/lemonsqueezy.js create mode 120000 packages/billing/lemon-squeezy/node_modules/@types/react create mode 120000 packages/billing/lemon-squeezy/node_modules/next create mode 120000 packages/billing/lemon-squeezy/node_modules/react create mode 120000 packages/billing/lemon-squeezy/node_modules/zod create mode 100644 packages/billing/lemon-squeezy/package.json create mode 100644 packages/billing/lemon-squeezy/src/components/index.ts create mode 100644 packages/billing/lemon-squeezy/src/components/lemon-squeezy-embedded-checkout.tsx create mode 100644 packages/billing/lemon-squeezy/src/index.ts create mode 100644 packages/billing/lemon-squeezy/src/schema/lemon-squeezy-server-env.schema.ts create mode 100644 packages/billing/lemon-squeezy/src/services/create-lemon-squeezy-billing-portal-session.ts create mode 100644 packages/billing/lemon-squeezy/src/services/create-lemon-squeezy-checkout.ts create mode 100644 packages/billing/lemon-squeezy/src/services/lemon-squeezy-billing-strategy.service.ts create mode 100644 packages/billing/lemon-squeezy/src/services/lemon-squeezy-sdk.ts create mode 100644 packages/billing/lemon-squeezy/src/services/lemon-squeezy-subscription-payload-builder.service.ts create mode 100644 packages/billing/lemon-squeezy/src/services/lemon-squeezy-webhook-handler.service.ts create mode 100644 packages/billing/lemon-squeezy/src/services/verify-hmac.ts create mode 100644 packages/billing/lemon-squeezy/src/types/order-webhook.ts create mode 100644 packages/billing/lemon-squeezy/src/types/subscription-invoice-webhook.ts create mode 100644 packages/billing/lemon-squeezy/src/types/subscription-webhook.ts create mode 100644 packages/billing/lemon-squeezy/tsconfig.json create mode 100644 packages/billing/stripe/README.md create mode 100644 packages/billing/stripe/eslint.config.mjs create mode 100755 packages/billing/stripe/node_modules/.bin/next create mode 120000 packages/billing/stripe/node_modules/@kit/billing create mode 120000 packages/billing/stripe/node_modules/@kit/eslint-config create mode 120000 packages/billing/stripe/node_modules/@kit/prettier-config create mode 120000 packages/billing/stripe/node_modules/@kit/shared create mode 120000 packages/billing/stripe/node_modules/@kit/supabase create mode 120000 packages/billing/stripe/node_modules/@kit/tsconfig create mode 120000 packages/billing/stripe/node_modules/@kit/ui create mode 120000 packages/billing/stripe/node_modules/@stripe/react-stripe-js create mode 120000 packages/billing/stripe/node_modules/@stripe/stripe-js create mode 120000 packages/billing/stripe/node_modules/@types/react create mode 120000 packages/billing/stripe/node_modules/date-fns create mode 120000 packages/billing/stripe/node_modules/next create mode 120000 packages/billing/stripe/node_modules/react create mode 120000 packages/billing/stripe/node_modules/stripe create mode 120000 packages/billing/stripe/node_modules/zod create mode 100644 packages/billing/stripe/package.json create mode 100644 packages/billing/stripe/src/components/index.ts create mode 100644 packages/billing/stripe/src/components/stripe-embedded-checkout.tsx create mode 100644 packages/billing/stripe/src/index.ts create mode 100644 packages/billing/stripe/src/schema/stripe-client-env.schema.ts create mode 100644 packages/billing/stripe/src/schema/stripe-server-env.schema.ts create mode 100644 packages/billing/stripe/src/services/create-stripe-billing-portal-session.ts create mode 100644 packages/billing/stripe/src/services/create-stripe-checkout.ts create mode 100644 packages/billing/stripe/src/services/stripe-billing-strategy.service.ts create mode 100644 packages/billing/stripe/src/services/stripe-sdk.ts create mode 100644 packages/billing/stripe/src/services/stripe-subscription-payload-builder.service.ts create mode 100644 packages/billing/stripe/src/services/stripe-webhook-handler.service.ts create mode 100644 packages/billing/stripe/tsconfig.json create mode 100644 packages/cms/core/README.md create mode 100644 packages/cms/core/eslint.config.mjs create mode 120000 packages/cms/core/node_modules/@kit/cms-types create mode 120000 packages/cms/core/node_modules/@kit/eslint-config create mode 120000 packages/cms/core/node_modules/@kit/keystatic create mode 120000 packages/cms/core/node_modules/@kit/prettier-config create mode 120000 packages/cms/core/node_modules/@kit/shared create mode 120000 packages/cms/core/node_modules/@kit/tsconfig create mode 120000 packages/cms/core/node_modules/@kit/wordpress create mode 120000 packages/cms/core/node_modules/@types/node create mode 100644 packages/cms/core/package.json create mode 100644 packages/cms/core/src/content-renderer.tsx create mode 100644 packages/cms/core/src/create-cms-client.ts create mode 100644 packages/cms/core/src/index.ts create mode 100644 packages/cms/core/tsconfig.json create mode 100644 packages/cms/keystatic/README.md create mode 100644 packages/cms/keystatic/eslint.config.mjs create mode 100755 packages/cms/keystatic/node_modules/.bin/acorn create mode 100755 packages/cms/keystatic/node_modules/.bin/next create mode 120000 packages/cms/keystatic/node_modules/@keystatic/core create mode 120000 packages/cms/keystatic/node_modules/@keystatic/next create mode 120000 packages/cms/keystatic/node_modules/@kit/cms-types create mode 120000 packages/cms/keystatic/node_modules/@kit/eslint-config create mode 120000 packages/cms/keystatic/node_modules/@kit/prettier-config create mode 120000 packages/cms/keystatic/node_modules/@kit/tsconfig create mode 120000 packages/cms/keystatic/node_modules/@kit/ui create mode 120000 packages/cms/keystatic/node_modules/@markdoc/markdoc create mode 120000 packages/cms/keystatic/node_modules/@types/node create mode 120000 packages/cms/keystatic/node_modules/@types/react create mode 120000 packages/cms/keystatic/node_modules/react create mode 120000 packages/cms/keystatic/node_modules/zod create mode 100644 packages/cms/keystatic/package.json create mode 100644 packages/cms/keystatic/src/content-renderer.tsx create mode 100644 packages/cms/keystatic/src/create-keystatic-cms.ts create mode 100644 packages/cms/keystatic/src/create-reader.ts create mode 100644 packages/cms/keystatic/src/custom-components.tsx create mode 100644 packages/cms/keystatic/src/index.ts create mode 100644 packages/cms/keystatic/src/keystatic-admin.tsx create mode 100644 packages/cms/keystatic/src/keystatic-client.ts create mode 100644 packages/cms/keystatic/src/keystatic-route-handler.ts create mode 100644 packages/cms/keystatic/src/keystatic-storage.ts create mode 100644 packages/cms/keystatic/src/keystatic.config.ts create mode 100644 packages/cms/keystatic/src/markdoc-nodes.ts create mode 100644 packages/cms/keystatic/src/markdoc.tsx create mode 100644 packages/cms/keystatic/tsconfig.json create mode 100644 packages/cms/types/eslint.config.mjs create mode 120000 packages/cms/types/node_modules/@kit/eslint-config create mode 120000 packages/cms/types/node_modules/@kit/prettier-config create mode 120000 packages/cms/types/node_modules/@kit/tsconfig create mode 100644 packages/cms/types/package.json create mode 100644 packages/cms/types/src/cms-client.ts create mode 100644 packages/cms/types/src/cms.type.ts create mode 100644 packages/cms/types/src/index.ts create mode 100644 packages/cms/types/tsconfig.json create mode 100644 packages/cms/wordpress/README.md create mode 100644 packages/cms/wordpress/docker-compose.yml create mode 100644 packages/cms/wordpress/eslint.config.mjs create mode 120000 packages/cms/wordpress/node_modules/@kit/cms-types create mode 120000 packages/cms/wordpress/node_modules/@kit/eslint-config create mode 120000 packages/cms/wordpress/node_modules/@kit/prettier-config create mode 120000 packages/cms/wordpress/node_modules/@kit/tsconfig create mode 120000 packages/cms/wordpress/node_modules/@kit/ui create mode 120000 packages/cms/wordpress/node_modules/@types/node create mode 120000 packages/cms/wordpress/node_modules/@types/react create mode 120000 packages/cms/wordpress/node_modules/wp-types create mode 100644 packages/cms/wordpress/package.json create mode 100644 packages/cms/wordpress/src/content-renderer.tsx create mode 100644 packages/cms/wordpress/src/index.ts create mode 100644 packages/cms/wordpress/src/wp-client.ts create mode 100644 packages/cms/wordpress/tsconfig.json create mode 100644 packages/cms/wordpress/wp-content/themes/twentytwentyfour/footer.php create mode 100644 packages/cms/wordpress/wp-content/themes/twentytwentyfour/functions.php create mode 100644 packages/cms/wordpress/wp-content/themes/twentytwentyfour/index.php create mode 100644 packages/database-webhooks/README.md create mode 100644 packages/database-webhooks/eslint.config.mjs create mode 120000 packages/database-webhooks/node_modules/@kit/billing create mode 120000 packages/database-webhooks/node_modules/@kit/billing-gateway create mode 120000 packages/database-webhooks/node_modules/@kit/eslint-config create mode 120000 packages/database-webhooks/node_modules/@kit/prettier-config create mode 120000 packages/database-webhooks/node_modules/@kit/shared create mode 120000 packages/database-webhooks/node_modules/@kit/stripe create mode 120000 packages/database-webhooks/node_modules/@kit/supabase create mode 120000 packages/database-webhooks/node_modules/@kit/team-accounts create mode 120000 packages/database-webhooks/node_modules/@kit/tsconfig create mode 120000 packages/database-webhooks/node_modules/@supabase/supabase-js create mode 120000 packages/database-webhooks/node_modules/zod create mode 100644 packages/database-webhooks/package.json create mode 100644 packages/database-webhooks/src/index.ts create mode 100644 packages/database-webhooks/src/server/record-change.type.ts create mode 100644 packages/database-webhooks/src/server/services/database-webhook-handler.service.ts create mode 100644 packages/database-webhooks/src/server/services/database-webhook-router.service.ts create mode 100644 packages/database-webhooks/src/server/services/verifier/database-webhook-verifier.service.ts create mode 100644 packages/database-webhooks/src/server/services/verifier/index.ts create mode 100644 packages/database-webhooks/src/server/services/verifier/postgres-database-webhook-verifier.service.ts create mode 100644 packages/database-webhooks/tsconfig.json create mode 100644 packages/email-templates/README.md create mode 100644 packages/email-templates/eslint.config.mjs create mode 120000 packages/email-templates/node_modules/@kit/eslint-config create mode 120000 packages/email-templates/node_modules/@kit/i18n create mode 120000 packages/email-templates/node_modules/@kit/prettier-config create mode 120000 packages/email-templates/node_modules/@kit/tsconfig create mode 120000 packages/email-templates/node_modules/@react-email/components create mode 100644 packages/email-templates/package.json create mode 100644 packages/email-templates/src/components/body-style.tsx create mode 100644 packages/email-templates/src/components/content.tsx create mode 100644 packages/email-templates/src/components/cta-button.tsx create mode 100644 packages/email-templates/src/components/footer.tsx create mode 100644 packages/email-templates/src/components/header.tsx create mode 100644 packages/email-templates/src/components/heading.tsx create mode 100644 packages/email-templates/src/components/wrapper.tsx create mode 100644 packages/email-templates/src/emails/account-delete.email.tsx create mode 100644 packages/email-templates/src/emails/invite.email.tsx create mode 100644 packages/email-templates/src/emails/otp.email.tsx create mode 100644 packages/email-templates/src/index.ts create mode 100644 packages/email-templates/src/lib/i18n.ts create mode 100644 packages/email-templates/src/locales/en/account-delete-email.json create mode 100644 packages/email-templates/src/locales/en/invite-email.json create mode 100644 packages/email-templates/src/locales/en/otp-email.json create mode 100644 packages/email-templates/tsconfig.json create mode 100644 packages/features/accounts/eslint.config.mjs create mode 100755 packages/features/accounts/node_modules/.bin/nanoid create mode 100755 packages/features/accounts/node_modules/.bin/next create mode 100755 packages/features/accounts/node_modules/.bin/tsc create mode 100755 packages/features/accounts/node_modules/.bin/tsserver create mode 120000 packages/features/accounts/node_modules/@hookform/resolvers create mode 120000 packages/features/accounts/node_modules/@kit/billing-gateway create mode 120000 packages/features/accounts/node_modules/@kit/email-templates create mode 120000 packages/features/accounts/node_modules/@kit/eslint-config create mode 120000 packages/features/accounts/node_modules/@kit/mailers create mode 120000 packages/features/accounts/node_modules/@kit/monitoring create mode 120000 packages/features/accounts/node_modules/@kit/next create mode 120000 packages/features/accounts/node_modules/@kit/otp create mode 120000 packages/features/accounts/node_modules/@kit/prettier-config create mode 120000 packages/features/accounts/node_modules/@kit/shared create mode 120000 packages/features/accounts/node_modules/@kit/supabase create mode 120000 packages/features/accounts/node_modules/@kit/tsconfig create mode 120000 packages/features/accounts/node_modules/@kit/ui create mode 120000 packages/features/accounts/node_modules/@radix-ui/react-icons create mode 120000 packages/features/accounts/node_modules/@supabase/supabase-js create mode 120000 packages/features/accounts/node_modules/@tanstack/react-query create mode 120000 packages/features/accounts/node_modules/@types/react create mode 120000 packages/features/accounts/node_modules/@types/react-dom create mode 120000 packages/features/accounts/node_modules/lucide-react create mode 120000 packages/features/accounts/node_modules/nanoid create mode 120000 packages/features/accounts/node_modules/next create mode 120000 packages/features/accounts/node_modules/next-themes create mode 120000 packages/features/accounts/node_modules/react create mode 120000 packages/features/accounts/node_modules/react-dom create mode 120000 packages/features/accounts/node_modules/react-hook-form create mode 120000 packages/features/accounts/node_modules/react-i18next create mode 120000 packages/features/accounts/node_modules/sonner create mode 120000 packages/features/accounts/node_modules/zod create mode 100644 packages/features/accounts/package.json create mode 100644 packages/features/accounts/src/components/account-selector.tsx create mode 100644 packages/features/accounts/src/components/index.ts create mode 100644 packages/features/accounts/src/components/personal-account-dropdown.tsx create mode 100644 packages/features/accounts/src/components/personal-account-settings/account-danger-zone.tsx create mode 100644 packages/features/accounts/src/components/personal-account-settings/account-settings-container.tsx create mode 100644 packages/features/accounts/src/components/personal-account-settings/email/update-email-form-container.tsx create mode 100644 packages/features/accounts/src/components/personal-account-settings/email/update-email-form.tsx create mode 100644 packages/features/accounts/src/components/personal-account-settings/index.ts create mode 100644 packages/features/accounts/src/components/personal-account-settings/mfa/multi-factor-auth-list.tsx create mode 100644 packages/features/accounts/src/components/personal-account-settings/mfa/multi-factor-auth-setup-dialog.tsx create mode 100644 packages/features/accounts/src/components/personal-account-settings/password/update-password-container.tsx create mode 100644 packages/features/accounts/src/components/personal-account-settings/password/update-password-form.tsx create mode 100644 packages/features/accounts/src/components/personal-account-settings/update-account-details-form-container.tsx create mode 100644 packages/features/accounts/src/components/personal-account-settings/update-account-details-form.tsx create mode 100644 packages/features/accounts/src/components/personal-account-settings/update-account-image-container.tsx create mode 100644 packages/features/accounts/src/components/user-workspace-context.tsx create mode 100644 packages/features/accounts/src/hooks/use-personal-account-data.ts create mode 100644 packages/features/accounts/src/hooks/use-update-account.ts create mode 100644 packages/features/accounts/src/hooks/use-user-workspace.ts create mode 100644 packages/features/accounts/src/schema/account-details.schema.ts create mode 100644 packages/features/accounts/src/schema/delete-personal-account.schema.ts create mode 100644 packages/features/accounts/src/schema/update-email.schema.ts create mode 100644 packages/features/accounts/src/schema/update-password.schema.ts create mode 100644 packages/features/accounts/src/server/api.ts create mode 100644 packages/features/accounts/src/server/personal-accounts-server-actions.ts create mode 100644 packages/features/accounts/src/server/services/delete-personal-account.service.ts create mode 100644 packages/features/accounts/tsconfig.json create mode 100644 packages/features/admin/eslint.config.mjs create mode 100755 packages/features/admin/node_modules/.bin/next create mode 120000 packages/features/admin/node_modules/@hookform/resolvers create mode 120000 packages/features/admin/node_modules/@kit/eslint-config create mode 120000 packages/features/admin/node_modules/@kit/next create mode 120000 packages/features/admin/node_modules/@kit/prettier-config create mode 120000 packages/features/admin/node_modules/@kit/shared create mode 120000 packages/features/admin/node_modules/@kit/supabase create mode 120000 packages/features/admin/node_modules/@kit/tsconfig create mode 120000 packages/features/admin/node_modules/@kit/ui create mode 120000 packages/features/admin/node_modules/@makerkit/data-loader-supabase-core create mode 120000 packages/features/admin/node_modules/@makerkit/data-loader-supabase-nextjs create mode 120000 packages/features/admin/node_modules/@supabase/supabase-js create mode 120000 packages/features/admin/node_modules/@tanstack/react-query create mode 120000 packages/features/admin/node_modules/@tanstack/react-table create mode 120000 packages/features/admin/node_modules/@types/react create mode 120000 packages/features/admin/node_modules/lucide-react create mode 120000 packages/features/admin/node_modules/next create mode 120000 packages/features/admin/node_modules/react create mode 120000 packages/features/admin/node_modules/react-dom create mode 120000 packages/features/admin/node_modules/react-hook-form create mode 120000 packages/features/admin/node_modules/zod create mode 100644 packages/features/admin/package.json create mode 100644 packages/features/admin/src/components/admin-account-page.tsx create mode 100644 packages/features/admin/src/components/admin-accounts-table.tsx create mode 100644 packages/features/admin/src/components/admin-ban-user-dialog.tsx create mode 100644 packages/features/admin/src/components/admin-create-user-dialog.tsx create mode 100644 packages/features/admin/src/components/admin-dashboard.tsx create mode 100644 packages/features/admin/src/components/admin-delete-account-dialog.tsx create mode 100644 packages/features/admin/src/components/admin-delete-user-dialog.tsx create mode 100644 packages/features/admin/src/components/admin-guard.tsx create mode 100644 packages/features/admin/src/components/admin-impersonate-user-dialog.tsx create mode 100644 packages/features/admin/src/components/admin-members-table.tsx create mode 100644 packages/features/admin/src/components/admin-memberships-table.tsx create mode 100644 packages/features/admin/src/components/admin-reactivate-user-dialog.tsx create mode 100644 packages/features/admin/src/components/admin-reset-password-dialog.tsx create mode 100644 packages/features/admin/src/index.ts create mode 100644 packages/features/admin/src/lib/server/admin-server-actions.ts create mode 100644 packages/features/admin/src/lib/server/loaders/admin-dashboard.loader.ts create mode 100644 packages/features/admin/src/lib/server/schema/admin-actions.schema.ts create mode 100644 packages/features/admin/src/lib/server/schema/create-user.schema.ts create mode 100644 packages/features/admin/src/lib/server/schema/reset-password.schema.ts create mode 100644 packages/features/admin/src/lib/server/services/admin-accounts.service.ts create mode 100644 packages/features/admin/src/lib/server/services/admin-auth-user.service.ts create mode 100644 packages/features/admin/src/lib/server/services/admin-dashboard.service.ts create mode 100644 packages/features/admin/src/lib/server/utils/admin-action.ts create mode 100644 packages/features/admin/src/lib/server/utils/is-super-admin.ts create mode 100644 packages/features/admin/tsconfig.json create mode 100644 packages/features/auth/eslint.config.mjs create mode 100755 packages/features/auth/node_modules/.bin/next create mode 100755 packages/features/auth/node_modules/.bin/tsc create mode 100755 packages/features/auth/node_modules/.bin/tsserver create mode 120000 packages/features/auth/node_modules/@hookform/resolvers create mode 120000 packages/features/auth/node_modules/@kit/eslint-config create mode 120000 packages/features/auth/node_modules/@kit/prettier-config create mode 120000 packages/features/auth/node_modules/@kit/shared create mode 120000 packages/features/auth/node_modules/@kit/supabase create mode 120000 packages/features/auth/node_modules/@kit/tsconfig create mode 120000 packages/features/auth/node_modules/@kit/ui create mode 120000 packages/features/auth/node_modules/@marsidev/react-turnstile create mode 120000 packages/features/auth/node_modules/@radix-ui/react-icons create mode 120000 packages/features/auth/node_modules/@supabase/supabase-js create mode 120000 packages/features/auth/node_modules/@tanstack/react-query create mode 120000 packages/features/auth/node_modules/@types/react create mode 120000 packages/features/auth/node_modules/lucide-react create mode 120000 packages/features/auth/node_modules/next create mode 120000 packages/features/auth/node_modules/react-hook-form create mode 120000 packages/features/auth/node_modules/react-i18next create mode 120000 packages/features/auth/node_modules/sonner create mode 120000 packages/features/auth/node_modules/zod create mode 100644 packages/features/auth/package.json create mode 100644 packages/features/auth/src/captcha/client/captcha-provider.tsx create mode 100644 packages/features/auth/src/captcha/client/captcha-token-setter.tsx create mode 100644 packages/features/auth/src/captcha/client/index.ts create mode 100644 packages/features/auth/src/captcha/client/use-captcha-token.ts create mode 100644 packages/features/auth/src/captcha/server/index.ts create mode 100644 packages/features/auth/src/captcha/server/verify-captcha.tsx create mode 100644 packages/features/auth/src/components/auth-error-alert.tsx create mode 100644 packages/features/auth/src/components/auth-layout.tsx create mode 100644 packages/features/auth/src/components/auth-link-redirect.tsx create mode 100644 packages/features/auth/src/components/auth-provider-button.tsx create mode 100644 packages/features/auth/src/components/magic-link-auth-container.tsx create mode 100644 packages/features/auth/src/components/multi-factor-challenge-container.tsx create mode 100644 packages/features/auth/src/components/oauth-provider-logo-image.tsx create mode 100644 packages/features/auth/src/components/oauth-providers.tsx create mode 100644 packages/features/auth/src/components/password-reset-request-container.tsx create mode 100644 packages/features/auth/src/components/password-sign-in-container.tsx create mode 100644 packages/features/auth/src/components/password-sign-in-form.tsx create mode 100644 packages/features/auth/src/components/password-sign-up-container.tsx create mode 100644 packages/features/auth/src/components/password-sign-up-form.tsx create mode 100644 packages/features/auth/src/components/resend-auth-link-form.tsx create mode 100644 packages/features/auth/src/components/sign-in-methods-container.tsx create mode 100644 packages/features/auth/src/components/sign-up-methods-container.tsx create mode 100644 packages/features/auth/src/components/terms-and-conditions-form-field.tsx create mode 100644 packages/features/auth/src/components/update-password-form.tsx create mode 100644 packages/features/auth/src/hooks/use-sign-up-flow.ts create mode 100644 packages/features/auth/src/mfa.ts create mode 100644 packages/features/auth/src/password-reset.ts create mode 100644 packages/features/auth/src/schemas/password-reset.schema.ts create mode 100644 packages/features/auth/src/schemas/password-sign-in.schema.ts create mode 100644 packages/features/auth/src/schemas/password-sign-up.schema.ts create mode 100644 packages/features/auth/src/schemas/password.schema.ts create mode 100644 packages/features/auth/src/shared.ts create mode 100644 packages/features/auth/src/sign-in.ts create mode 100644 packages/features/auth/src/sign-up.ts create mode 100644 packages/features/auth/tsconfig.json create mode 100644 packages/features/notifications/eslint.config.mjs create mode 100755 packages/features/notifications/node_modules/.bin/tsc create mode 100755 packages/features/notifications/node_modules/.bin/tsserver create mode 120000 packages/features/notifications/node_modules/@kit/eslint-config create mode 120000 packages/features/notifications/node_modules/@kit/prettier-config create mode 120000 packages/features/notifications/node_modules/@kit/supabase create mode 120000 packages/features/notifications/node_modules/@kit/tsconfig create mode 120000 packages/features/notifications/node_modules/@kit/ui create mode 120000 packages/features/notifications/node_modules/@supabase/supabase-js create mode 120000 packages/features/notifications/node_modules/@tanstack/react-query create mode 120000 packages/features/notifications/node_modules/@types/react create mode 120000 packages/features/notifications/node_modules/lucide-react create mode 120000 packages/features/notifications/node_modules/react create mode 120000 packages/features/notifications/node_modules/react-dom create mode 120000 packages/features/notifications/node_modules/react-i18next create mode 100644 packages/features/notifications/package.json create mode 100644 packages/features/notifications/src/components/index.ts create mode 100644 packages/features/notifications/src/components/notifications-popover.tsx create mode 100644 packages/features/notifications/src/hooks/index.ts create mode 100644 packages/features/notifications/src/hooks/use-dismiss-notification.ts create mode 100644 packages/features/notifications/src/hooks/use-fetch-notifications.ts create mode 100644 packages/features/notifications/src/hooks/use-notifications-stream.ts create mode 100644 packages/features/notifications/src/server/api.ts create mode 100644 packages/features/notifications/src/server/notifications.service.ts create mode 100644 packages/features/notifications/tsconfig.json create mode 100644 packages/features/team-accounts/eslint.config.mjs create mode 100755 packages/features/team-accounts/node_modules/.bin/nanoid create mode 100755 packages/features/team-accounts/node_modules/.bin/next create mode 100755 packages/features/team-accounts/node_modules/.bin/tsc create mode 100755 packages/features/team-accounts/node_modules/.bin/tsserver create mode 120000 packages/features/team-accounts/node_modules/@hookform/resolvers create mode 120000 packages/features/team-accounts/node_modules/@kit/accounts create mode 120000 packages/features/team-accounts/node_modules/@kit/billing-gateway create mode 120000 packages/features/team-accounts/node_modules/@kit/email-templates create mode 120000 packages/features/team-accounts/node_modules/@kit/eslint-config create mode 120000 packages/features/team-accounts/node_modules/@kit/mailers create mode 120000 packages/features/team-accounts/node_modules/@kit/monitoring create mode 120000 packages/features/team-accounts/node_modules/@kit/next create mode 120000 packages/features/team-accounts/node_modules/@kit/otp create mode 120000 packages/features/team-accounts/node_modules/@kit/prettier-config create mode 120000 packages/features/team-accounts/node_modules/@kit/shared create mode 120000 packages/features/team-accounts/node_modules/@kit/supabase create mode 120000 packages/features/team-accounts/node_modules/@kit/tsconfig create mode 120000 packages/features/team-accounts/node_modules/@kit/ui create mode 120000 packages/features/team-accounts/node_modules/@supabase/supabase-js create mode 120000 packages/features/team-accounts/node_modules/@tanstack/react-query create mode 120000 packages/features/team-accounts/node_modules/@tanstack/react-table create mode 120000 packages/features/team-accounts/node_modules/@types/react create mode 120000 packages/features/team-accounts/node_modules/@types/react-dom create mode 120000 packages/features/team-accounts/node_modules/class-variance-authority create mode 120000 packages/features/team-accounts/node_modules/date-fns create mode 120000 packages/features/team-accounts/node_modules/lucide-react create mode 120000 packages/features/team-accounts/node_modules/nanoid create mode 120000 packages/features/team-accounts/node_modules/next create mode 120000 packages/features/team-accounts/node_modules/react create mode 120000 packages/features/team-accounts/node_modules/react-dom create mode 120000 packages/features/team-accounts/node_modules/react-hook-form create mode 120000 packages/features/team-accounts/node_modules/react-i18next create mode 120000 packages/features/team-accounts/node_modules/sonner create mode 120000 packages/features/team-accounts/node_modules/zod create mode 100644 packages/features/team-accounts/package.json create mode 100644 packages/features/team-accounts/src/components/create-team-account-dialog.tsx create mode 100644 packages/features/team-accounts/src/components/index.ts create mode 100644 packages/features/team-accounts/src/components/invitations/accept-invitation-container.tsx create mode 100644 packages/features/team-accounts/src/components/invitations/account-invitations-table.tsx create mode 100644 packages/features/team-accounts/src/components/invitations/delete-invitation-dialog.tsx create mode 100644 packages/features/team-accounts/src/components/invitations/invitation-submit-button.tsx create mode 100644 packages/features/team-accounts/src/components/invitations/renew-invitation-dialog.tsx create mode 100644 packages/features/team-accounts/src/components/invitations/sign-out-invitation-button.tsx create mode 100644 packages/features/team-accounts/src/components/invitations/update-invitation-dialog.tsx create mode 100644 packages/features/team-accounts/src/components/members/account-members-table.tsx create mode 100644 packages/features/team-accounts/src/components/members/invite-members-dialog-container.tsx create mode 100644 packages/features/team-accounts/src/components/members/membership-role-selector.tsx create mode 100644 packages/features/team-accounts/src/components/members/remove-member-dialog.tsx create mode 100644 packages/features/team-accounts/src/components/members/role-badge.tsx create mode 100644 packages/features/team-accounts/src/components/members/roles-data-provider.tsx create mode 100644 packages/features/team-accounts/src/components/members/transfer-ownership-dialog.tsx create mode 100644 packages/features/team-accounts/src/components/members/update-member-role-dialog.tsx create mode 100644 packages/features/team-accounts/src/components/settings/team-account-danger-zone.tsx create mode 100644 packages/features/team-accounts/src/components/settings/team-account-settings-container.tsx create mode 100644 packages/features/team-accounts/src/components/settings/update-team-account-image-container.tsx create mode 100644 packages/features/team-accounts/src/components/settings/update-team-account-name-form.tsx create mode 100644 packages/features/team-accounts/src/components/team-account-workspace-context.tsx create mode 100644 packages/features/team-accounts/src/hooks/use-team-account-workspace.ts create mode 100644 packages/features/team-accounts/src/schema/accept-invitation.schema.ts create mode 100644 packages/features/team-accounts/src/schema/create-team.schema.ts create mode 100644 packages/features/team-accounts/src/schema/delete-invitation.schema.ts create mode 100644 packages/features/team-accounts/src/schema/delete-team-account.schema.ts create mode 100644 packages/features/team-accounts/src/schema/invite-members.schema.ts create mode 100644 packages/features/team-accounts/src/schema/leave-team-account.schema.ts create mode 100644 packages/features/team-accounts/src/schema/remove-member.schema.ts create mode 100644 packages/features/team-accounts/src/schema/renew-invitation.schema.ts create mode 100644 packages/features/team-accounts/src/schema/transfer-ownership-confirmation.schema.ts create mode 100644 packages/features/team-accounts/src/schema/update-invitation.schema.ts create mode 100644 packages/features/team-accounts/src/schema/update-member-role.schema.ts create mode 100644 packages/features/team-accounts/src/schema/update-team-name.schema.ts create mode 100644 packages/features/team-accounts/src/server/actions/create-team-account-server-actions.ts create mode 100644 packages/features/team-accounts/src/server/actions/delete-team-account-server-actions.ts create mode 100644 packages/features/team-accounts/src/server/actions/leave-team-account-server-actions.ts create mode 100644 packages/features/team-accounts/src/server/actions/team-details-server-actions.ts create mode 100644 packages/features/team-accounts/src/server/actions/team-invitations-server-actions.ts create mode 100644 packages/features/team-accounts/src/server/actions/team-members-server-actions.ts create mode 100644 packages/features/team-accounts/src/server/api.ts create mode 100644 packages/features/team-accounts/src/server/services/account-invitations.service.ts create mode 100644 packages/features/team-accounts/src/server/services/account-members.service.ts create mode 100644 packages/features/team-accounts/src/server/services/account-per-seat-billing.service.ts create mode 100644 packages/features/team-accounts/src/server/services/create-team-account.service.ts create mode 100644 packages/features/team-accounts/src/server/services/delete-team-account.service.ts create mode 100644 packages/features/team-accounts/src/server/services/leave-team-account.service.ts create mode 100644 packages/features/team-accounts/src/server/services/webhooks/account-invitations-webhook.service.ts create mode 100644 packages/features/team-accounts/src/server/services/webhooks/account-webhooks.service.ts create mode 100644 packages/features/team-accounts/src/server/services/webhooks/index.ts create mode 100644 packages/features/team-accounts/tsconfig.json create mode 100644 packages/i18n/eslint.config.mjs create mode 100755 packages/i18n/node_modules/.bin/next create mode 100755 packages/i18n/node_modules/.bin/tsc create mode 100755 packages/i18n/node_modules/.bin/tsserver create mode 120000 packages/i18n/node_modules/@kit/eslint-config create mode 120000 packages/i18n/node_modules/@kit/prettier-config create mode 120000 packages/i18n/node_modules/@kit/shared create mode 120000 packages/i18n/node_modules/@kit/tsconfig create mode 120000 packages/i18n/node_modules/@tanstack/react-query create mode 120000 packages/i18n/node_modules/i18next create mode 120000 packages/i18n/node_modules/i18next-browser-languagedetector create mode 120000 packages/i18n/node_modules/i18next-resources-to-backend create mode 120000 packages/i18n/node_modules/next create mode 120000 packages/i18n/node_modules/react create mode 120000 packages/i18n/node_modules/react-dom create mode 120000 packages/i18n/node_modules/react-i18next create mode 100644 packages/i18n/package.json create mode 100644 packages/i18n/src/create-i18n-settings.ts create mode 100644 packages/i18n/src/i18n-provider.tsx create mode 100644 packages/i18n/src/i18n.client.ts create mode 100644 packages/i18n/src/i18n.server.ts create mode 100644 packages/i18n/src/index.ts create mode 100644 packages/i18n/tsconfig.json create mode 100644 packages/mailers/core/README.md create mode 100644 packages/mailers/core/eslint.config.mjs create mode 120000 packages/mailers/core/node_modules/@kit/eslint-config create mode 120000 packages/mailers/core/node_modules/@kit/mailers-shared create mode 120000 packages/mailers/core/node_modules/@kit/nodemailer create mode 120000 packages/mailers/core/node_modules/@kit/prettier-config create mode 120000 packages/mailers/core/node_modules/@kit/resend create mode 120000 packages/mailers/core/node_modules/@kit/shared create mode 120000 packages/mailers/core/node_modules/@kit/tsconfig create mode 120000 packages/mailers/core/node_modules/@types/node create mode 120000 packages/mailers/core/node_modules/zod create mode 100644 packages/mailers/core/package.json create mode 100644 packages/mailers/core/src/index.ts create mode 100644 packages/mailers/core/src/provider-enum.ts create mode 100644 packages/mailers/core/src/registry.ts create mode 100644 packages/mailers/core/tsconfig.json create mode 100644 packages/mailers/nodemailer/eslint.config.mjs create mode 120000 packages/mailers/nodemailer/node_modules/@kit/eslint-config create mode 120000 packages/mailers/nodemailer/node_modules/@kit/mailers-shared create mode 120000 packages/mailers/nodemailer/node_modules/@kit/prettier-config create mode 120000 packages/mailers/nodemailer/node_modules/@kit/tsconfig create mode 120000 packages/mailers/nodemailer/node_modules/@types/nodemailer create mode 120000 packages/mailers/nodemailer/node_modules/nodemailer create mode 120000 packages/mailers/nodemailer/node_modules/zod create mode 100644 packages/mailers/nodemailer/package.json create mode 100644 packages/mailers/nodemailer/src/index.ts create mode 100644 packages/mailers/nodemailer/src/smtp-configuration.ts create mode 100644 packages/mailers/nodemailer/tsconfig.json create mode 100644 packages/mailers/resend/eslint.config.mjs create mode 120000 packages/mailers/resend/node_modules/@kit/eslint-config create mode 120000 packages/mailers/resend/node_modules/@kit/mailers-shared create mode 120000 packages/mailers/resend/node_modules/@kit/prettier-config create mode 120000 packages/mailers/resend/node_modules/@kit/tsconfig create mode 120000 packages/mailers/resend/node_modules/@types/node create mode 120000 packages/mailers/resend/node_modules/zod create mode 100644 packages/mailers/resend/package.json create mode 100644 packages/mailers/resend/src/index.ts create mode 100644 packages/mailers/resend/tsconfig.json create mode 100644 packages/mailers/shared/README.md create mode 100644 packages/mailers/shared/eslint.config.mjs create mode 120000 packages/mailers/shared/node_modules/@kit/eslint-config create mode 120000 packages/mailers/shared/node_modules/@kit/prettier-config create mode 120000 packages/mailers/shared/node_modules/@kit/tsconfig create mode 120000 packages/mailers/shared/node_modules/zod create mode 100644 packages/mailers/shared/package.json create mode 100644 packages/mailers/shared/src/index.ts create mode 100644 packages/mailers/shared/src/mailer.ts create mode 100644 packages/mailers/shared/src/schema/mailer.schema.ts create mode 100644 packages/mailers/shared/src/schema/smtp-config.schema.ts create mode 100644 packages/mailers/shared/tsconfig.json create mode 100644 packages/monitoring/api/README.md create mode 100644 packages/monitoring/api/eslint.config.mjs create mode 120000 packages/monitoring/api/node_modules/@kit/baselime create mode 120000 packages/monitoring/api/node_modules/@kit/eslint-config create mode 120000 packages/monitoring/api/node_modules/@kit/monitoring-core create mode 120000 packages/monitoring/api/node_modules/@kit/prettier-config create mode 120000 packages/monitoring/api/node_modules/@kit/sentry create mode 120000 packages/monitoring/api/node_modules/@kit/shared create mode 120000 packages/monitoring/api/node_modules/@kit/tsconfig create mode 120000 packages/monitoring/api/node_modules/@types/react create mode 120000 packages/monitoring/api/node_modules/react create mode 120000 packages/monitoring/api/node_modules/zod create mode 100644 packages/monitoring/api/package.json create mode 100644 packages/monitoring/api/src/components/error-boundary.tsx create mode 100644 packages/monitoring/api/src/components/index.ts create mode 100644 packages/monitoring/api/src/components/provider.tsx create mode 100644 packages/monitoring/api/src/get-monitoring-provider.ts create mode 100644 packages/monitoring/api/src/hooks/index.ts create mode 100644 packages/monitoring/api/src/hooks/use-capture-exception.ts create mode 100644 packages/monitoring/api/src/hooks/use-monitoring.ts create mode 100644 packages/monitoring/api/src/instrumentation.ts create mode 100644 packages/monitoring/api/src/server.ts create mode 100644 packages/monitoring/api/src/services/get-server-monitoring-service.ts create mode 100644 packages/monitoring/api/tsconfig.json create mode 100644 packages/monitoring/baselime/README.md create mode 100644 packages/monitoring/baselime/eslint.config.mjs create mode 100755 packages/monitoring/baselime/node_modules/.bin/acorn create mode 100755 packages/monitoring/baselime/node_modules/.bin/tsc create mode 100755 packages/monitoring/baselime/node_modules/.bin/tsserver create mode 120000 packages/monitoring/baselime/node_modules/@baselime/node-opentelemetry create mode 120000 packages/monitoring/baselime/node_modules/@baselime/react-rum create mode 120000 packages/monitoring/baselime/node_modules/@kit/eslint-config create mode 120000 packages/monitoring/baselime/node_modules/@kit/monitoring-core create mode 120000 packages/monitoring/baselime/node_modules/@kit/prettier-config create mode 120000 packages/monitoring/baselime/node_modules/@kit/tsconfig create mode 120000 packages/monitoring/baselime/node_modules/@types/react create mode 120000 packages/monitoring/baselime/node_modules/react create mode 120000 packages/monitoring/baselime/node_modules/zod create mode 100644 packages/monitoring/baselime/package.json create mode 100644 packages/monitoring/baselime/src/client.ts create mode 100644 packages/monitoring/baselime/src/components/provider.tsx create mode 100644 packages/monitoring/baselime/src/hooks/use-baselime.ts create mode 100644 packages/monitoring/baselime/src/instrumentation.ts create mode 100644 packages/monitoring/baselime/src/server.ts create mode 100644 packages/monitoring/baselime/src/services/baselime-server-monitoring.service.ts create mode 100644 packages/monitoring/baselime/tsconfig.json create mode 100644 packages/monitoring/core/eslint.config.mjs create mode 120000 packages/monitoring/core/node_modules/@kit/eslint-config create mode 120000 packages/monitoring/core/node_modules/@kit/prettier-config create mode 120000 packages/monitoring/core/node_modules/@kit/tsconfig create mode 120000 packages/monitoring/core/node_modules/@types/react create mode 120000 packages/monitoring/core/node_modules/react create mode 100644 packages/monitoring/core/package.json create mode 100644 packages/monitoring/core/src/console-monitoring.service.ts create mode 100644 packages/monitoring/core/src/index.ts create mode 100644 packages/monitoring/core/src/monitoring.context.ts create mode 100644 packages/monitoring/core/src/monitoring.service.ts create mode 100644 packages/monitoring/core/tsconfig.json create mode 100644 packages/monitoring/sentry/README.md create mode 100644 packages/monitoring/sentry/eslint.config.mjs create mode 100755 packages/monitoring/sentry/node_modules/.bin/acorn create mode 100755 packages/monitoring/sentry/node_modules/.bin/browserslist create mode 100755 packages/monitoring/sentry/node_modules/.bin/next create mode 100755 packages/monitoring/sentry/node_modules/.bin/rollup create mode 100755 packages/monitoring/sentry/node_modules/.bin/webpack create mode 120000 packages/monitoring/sentry/node_modules/@kit/eslint-config create mode 120000 packages/monitoring/sentry/node_modules/@kit/monitoring-core create mode 120000 packages/monitoring/sentry/node_modules/@kit/prettier-config create mode 120000 packages/monitoring/sentry/node_modules/@kit/tsconfig create mode 120000 packages/monitoring/sentry/node_modules/@sentry/nextjs create mode 120000 packages/monitoring/sentry/node_modules/@types/react create mode 120000 packages/monitoring/sentry/node_modules/import-in-the-middle create mode 120000 packages/monitoring/sentry/node_modules/react create mode 100644 packages/monitoring/sentry/package.json create mode 100644 packages/monitoring/sentry/src/components/provider.tsx create mode 100644 packages/monitoring/sentry/src/index.ts create mode 100644 packages/monitoring/sentry/src/sentry.client.config.ts create mode 100644 packages/monitoring/sentry/src/sentry.server.config.ts create mode 100644 packages/monitoring/sentry/src/services/sentry-monitoring.service.ts create mode 100644 packages/monitoring/sentry/tsconfig.json create mode 100644 packages/next/README.md create mode 100644 packages/next/eslint.config.mjs create mode 100755 packages/next/node_modules/.bin/next create mode 120000 packages/next/node_modules/@kit/auth create mode 120000 packages/next/node_modules/@kit/eslint-config create mode 120000 packages/next/node_modules/@kit/monitoring create mode 120000 packages/next/node_modules/@kit/prettier-config create mode 120000 packages/next/node_modules/@kit/supabase create mode 120000 packages/next/node_modules/@kit/tsconfig create mode 120000 packages/next/node_modules/@supabase/supabase-js create mode 120000 packages/next/node_modules/next create mode 120000 packages/next/node_modules/zod create mode 100644 packages/next/package.json create mode 100644 packages/next/src/actions/index.ts create mode 100644 packages/next/src/routes/index.ts create mode 100644 packages/next/src/utils/index.ts create mode 100644 packages/next/tsconfig.json create mode 100644 packages/otp/README.md create mode 100644 packages/otp/eslint.config.mjs create mode 120000 packages/otp/node_modules/@hookform/resolvers create mode 120000 packages/otp/node_modules/@kit/email-templates create mode 120000 packages/otp/node_modules/@kit/eslint-config create mode 120000 packages/otp/node_modules/@kit/mailers create mode 120000 packages/otp/node_modules/@kit/next create mode 120000 packages/otp/node_modules/@kit/prettier-config create mode 120000 packages/otp/node_modules/@kit/shared create mode 120000 packages/otp/node_modules/@kit/supabase create mode 120000 packages/otp/node_modules/@kit/tsconfig create mode 120000 packages/otp/node_modules/@kit/ui create mode 120000 packages/otp/node_modules/@radix-ui/react-icons create mode 120000 packages/otp/node_modules/@supabase/supabase-js create mode 120000 packages/otp/node_modules/@types/react create mode 120000 packages/otp/node_modules/@types/react-dom create mode 120000 packages/otp/node_modules/react create mode 120000 packages/otp/node_modules/react-dom create mode 120000 packages/otp/node_modules/react-hook-form create mode 120000 packages/otp/node_modules/zod create mode 100644 packages/otp/package.json create mode 100644 packages/otp/src/api/index.ts create mode 100644 packages/otp/src/components/index.ts create mode 100644 packages/otp/src/components/verify-otp-form.tsx create mode 100644 packages/otp/src/server/index.ts create mode 100644 packages/otp/src/server/otp-email.service.ts create mode 100644 packages/otp/src/server/otp.service.ts create mode 100644 packages/otp/src/server/server-actions.ts create mode 100644 packages/otp/src/types/index.ts create mode 100644 packages/otp/tsconfig.json create mode 100644 packages/shared/eslint.config.mjs create mode 100755 packages/shared/node_modules/.bin/pino create mode 120000 packages/shared/node_modules/@kit/eslint-config create mode 120000 packages/shared/node_modules/@kit/prettier-config create mode 120000 packages/shared/node_modules/@kit/tsconfig create mode 120000 packages/shared/node_modules/@types/react create mode 120000 packages/shared/node_modules/pino create mode 100644 packages/shared/package.json create mode 100644 packages/shared/src/events/index.tsx create mode 100644 packages/shared/src/hooks/index.ts create mode 100644 packages/shared/src/hooks/use-csrf-token.ts create mode 100644 packages/shared/src/logger/impl/console.ts create mode 100644 packages/shared/src/logger/impl/pino.ts create mode 100644 packages/shared/src/logger/index.ts create mode 100644 packages/shared/src/logger/logger.ts create mode 100644 packages/shared/src/registry/index.ts create mode 100644 packages/shared/src/utils.ts create mode 100644 packages/shared/tsconfig.json create mode 100644 packages/supabase/README.md create mode 100644 packages/supabase/eslint.config.mjs create mode 100755 packages/supabase/node_modules/.bin/next create mode 120000 packages/supabase/node_modules/@kit/eslint-config create mode 120000 packages/supabase/node_modules/@kit/prettier-config create mode 120000 packages/supabase/node_modules/@kit/tsconfig create mode 120000 packages/supabase/node_modules/@supabase/ssr create mode 120000 packages/supabase/node_modules/@supabase/supabase-js create mode 120000 packages/supabase/node_modules/@tanstack/react-query create mode 120000 packages/supabase/node_modules/@types/react create mode 120000 packages/supabase/node_modules/next create mode 120000 packages/supabase/node_modules/react create mode 120000 packages/supabase/node_modules/server-only create mode 120000 packages/supabase/node_modules/zod create mode 100644 packages/supabase/package.json create mode 100644 packages/supabase/src/auth-callback.service.ts create mode 100644 packages/supabase/src/auth.ts create mode 100644 packages/supabase/src/check-requires-mfa.ts create mode 100644 packages/supabase/src/clients/browser-client.ts create mode 100644 packages/supabase/src/clients/middleware-client.ts create mode 100644 packages/supabase/src/clients/server-admin-client.ts create mode 100644 packages/supabase/src/clients/server-client.ts create mode 100644 packages/supabase/src/database.types.ts create mode 100644 packages/supabase/src/get-service-role-key.ts create mode 100644 packages/supabase/src/get-supabase-client-keys.ts create mode 100644 packages/supabase/src/hooks/use-auth-change-listener.ts create mode 100644 packages/supabase/src/hooks/use-fetch-mfa-factors.ts create mode 100644 packages/supabase/src/hooks/use-request-reset-password.ts create mode 100644 packages/supabase/src/hooks/use-sign-in-with-email-password.ts create mode 100644 packages/supabase/src/hooks/use-sign-in-with-otp.ts create mode 100644 packages/supabase/src/hooks/use-sign-in-with-provider.ts create mode 100644 packages/supabase/src/hooks/use-sign-out.ts create mode 100644 packages/supabase/src/hooks/use-sign-up-with-email-password.ts create mode 100644 packages/supabase/src/hooks/use-supabase.ts create mode 100644 packages/supabase/src/hooks/use-update-user-mutation.ts create mode 100644 packages/supabase/src/hooks/use-user-factors-mutation-key.ts create mode 100644 packages/supabase/src/hooks/use-user.ts create mode 100644 packages/supabase/src/hooks/use-verify-otp.ts create mode 100644 packages/supabase/src/require-user.ts create mode 100644 packages/supabase/tsconfig.json create mode 100644 packages/tsconfig/base.json create mode 100644 packages/tsconfig/nextjs.json create mode 100644 packages/tsconfig/package.json create mode 100644 packages/tsconfig/react-library.json create mode 100644 packages/ui/README.md create mode 100644 packages/ui/components.json create mode 100644 packages/ui/eslint.config.mjs create mode 100755 packages/ui/node_modules/.bin/acorn create mode 100755 packages/ui/node_modules/.bin/eslint create mode 100755 packages/ui/node_modules/.bin/jiti create mode 100755 packages/ui/node_modules/.bin/next create mode 100755 packages/ui/node_modules/.bin/prettier create mode 100755 packages/ui/node_modules/.bin/tsc create mode 100755 packages/ui/node_modules/.bin/tsserver create mode 120000 packages/ui/node_modules/@hookform/resolvers create mode 120000 packages/ui/node_modules/@kit/eslint-config create mode 120000 packages/ui/node_modules/@kit/prettier-config create mode 120000 packages/ui/node_modules/@kit/tsconfig create mode 120000 packages/ui/node_modules/@radix-ui/react-accordion create mode 120000 packages/ui/node_modules/@radix-ui/react-alert-dialog create mode 120000 packages/ui/node_modules/@radix-ui/react-avatar create mode 120000 packages/ui/node_modules/@radix-ui/react-checkbox create mode 120000 packages/ui/node_modules/@radix-ui/react-collapsible create mode 120000 packages/ui/node_modules/@radix-ui/react-dialog create mode 120000 packages/ui/node_modules/@radix-ui/react-dropdown-menu create mode 120000 packages/ui/node_modules/@radix-ui/react-icons create mode 120000 packages/ui/node_modules/@radix-ui/react-label create mode 120000 packages/ui/node_modules/@radix-ui/react-navigation-menu create mode 120000 packages/ui/node_modules/@radix-ui/react-popover create mode 120000 packages/ui/node_modules/@radix-ui/react-progress create mode 120000 packages/ui/node_modules/@radix-ui/react-radio-group create mode 120000 packages/ui/node_modules/@radix-ui/react-scroll-area create mode 120000 packages/ui/node_modules/@radix-ui/react-select create mode 120000 packages/ui/node_modules/@radix-ui/react-separator create mode 120000 packages/ui/node_modules/@radix-ui/react-slot create mode 120000 packages/ui/node_modules/@radix-ui/react-switch create mode 120000 packages/ui/node_modules/@radix-ui/react-tabs create mode 120000 packages/ui/node_modules/@radix-ui/react-toast create mode 120000 packages/ui/node_modules/@radix-ui/react-tooltip create mode 120000 packages/ui/node_modules/@tanstack/react-query create mode 120000 packages/ui/node_modules/@tanstack/react-table create mode 120000 packages/ui/node_modules/@types/react create mode 120000 packages/ui/node_modules/@types/react-dom create mode 120000 packages/ui/node_modules/class-variance-authority create mode 120000 packages/ui/node_modules/clsx create mode 120000 packages/ui/node_modules/cmdk create mode 120000 packages/ui/node_modules/date-fns create mode 120000 packages/ui/node_modules/eslint create mode 120000 packages/ui/node_modules/input-otp create mode 120000 packages/ui/node_modules/lucide-react create mode 120000 packages/ui/node_modules/next create mode 120000 packages/ui/node_modules/next-themes create mode 120000 packages/ui/node_modules/prettier create mode 120000 packages/ui/node_modules/react-day-picker create mode 120000 packages/ui/node_modules/react-hook-form create mode 120000 packages/ui/node_modules/react-i18next create mode 120000 packages/ui/node_modules/react-top-loading-bar create mode 120000 packages/ui/node_modules/recharts create mode 120000 packages/ui/node_modules/sonner create mode 120000 packages/ui/node_modules/tailwind-merge create mode 120000 packages/ui/node_modules/tailwindcss create mode 120000 packages/ui/node_modules/tailwindcss-animate create mode 120000 packages/ui/node_modules/typescript create mode 120000 packages/ui/node_modules/zod create mode 100644 packages/ui/package.json create mode 100644 packages/ui/src/hooks/use-mobile.tsx create mode 100644 packages/ui/src/lib/utils/cn.ts create mode 100644 packages/ui/src/lib/utils/index.ts create mode 100644 packages/ui/src/lib/utils/is-route-active.ts create mode 100644 packages/ui/src/makerkit/app-breadcrumbs.tsx create mode 100644 packages/ui/src/makerkit/authenticity-token.tsx create mode 100644 packages/ui/src/makerkit/bordered-navigation-menu.tsx create mode 100644 packages/ui/src/makerkit/card-button.tsx create mode 100644 packages/ui/src/makerkit/context/sidebar.context.ts create mode 100644 packages/ui/src/makerkit/cookie-banner.tsx create mode 100644 packages/ui/src/makerkit/data-table.tsx create mode 100644 packages/ui/src/makerkit/empty-state.tsx create mode 100644 packages/ui/src/makerkit/global-loader.tsx create mode 100644 packages/ui/src/makerkit/if.tsx create mode 100644 packages/ui/src/makerkit/image-upload-input.tsx create mode 100644 packages/ui/src/makerkit/image-uploader.tsx create mode 100644 packages/ui/src/makerkit/language-selector.tsx create mode 100644 packages/ui/src/makerkit/lazy-render.tsx create mode 100644 packages/ui/src/makerkit/loading-overlay.tsx create mode 100644 packages/ui/src/makerkit/marketing/coming-soon.tsx create mode 100644 packages/ui/src/makerkit/marketing/cta-button.tsx create mode 100644 packages/ui/src/makerkit/marketing/feature-card.tsx create mode 100644 packages/ui/src/makerkit/marketing/feature-grid.tsx create mode 100644 packages/ui/src/makerkit/marketing/feature-showcase.tsx create mode 100644 packages/ui/src/makerkit/marketing/footer.tsx create mode 100644 packages/ui/src/makerkit/marketing/gradient-secondary-text.tsx create mode 100644 packages/ui/src/makerkit/marketing/gradient-text.tsx create mode 100644 packages/ui/src/makerkit/marketing/header.tsx create mode 100644 packages/ui/src/makerkit/marketing/hero-title.tsx create mode 100644 packages/ui/src/makerkit/marketing/hero.tsx create mode 100644 packages/ui/src/makerkit/marketing/index.tsx create mode 100644 packages/ui/src/makerkit/marketing/newsletter-signup-container.tsx create mode 100644 packages/ui/src/makerkit/marketing/newsletter-signup.tsx create mode 100644 packages/ui/src/makerkit/marketing/pill.tsx create mode 100644 packages/ui/src/makerkit/marketing/secondary-hero.tsx create mode 100644 packages/ui/src/makerkit/mobile-navigation-dropdown.tsx create mode 100644 packages/ui/src/makerkit/mobile-navigation-menu.tsx create mode 100644 packages/ui/src/makerkit/mode-toggle.tsx create mode 100644 packages/ui/src/makerkit/multi-step-form.tsx create mode 100644 packages/ui/src/makerkit/navigation-config.schema.ts create mode 100644 packages/ui/src/makerkit/page.tsx create mode 100644 packages/ui/src/makerkit/profile-avatar.tsx create mode 100644 packages/ui/src/makerkit/sidebar.tsx create mode 100644 packages/ui/src/makerkit/spinner.tsx create mode 100644 packages/ui/src/makerkit/stepper.tsx create mode 100644 packages/ui/src/makerkit/top-loading-bar-indicator.tsx create mode 100644 packages/ui/src/makerkit/trans.tsx create mode 100644 packages/ui/src/makerkit/version-updater.tsx create mode 100644 packages/ui/src/shadcn/accordion.tsx create mode 100644 packages/ui/src/shadcn/alert-dialog.tsx create mode 100644 packages/ui/src/shadcn/alert.tsx create mode 100644 packages/ui/src/shadcn/avatar.tsx create mode 100644 packages/ui/src/shadcn/badge.tsx create mode 100644 packages/ui/src/shadcn/breadcrumb.tsx create mode 100644 packages/ui/src/shadcn/button.tsx create mode 100644 packages/ui/src/shadcn/calendar.tsx create mode 100644 packages/ui/src/shadcn/card.tsx create mode 100644 packages/ui/src/shadcn/chart.tsx create mode 100644 packages/ui/src/shadcn/checkbox.tsx create mode 100644 packages/ui/src/shadcn/collapsible.tsx create mode 100644 packages/ui/src/shadcn/command.tsx create mode 100644 packages/ui/src/shadcn/data-table.tsx create mode 100644 packages/ui/src/shadcn/dialog.tsx create mode 100644 packages/ui/src/shadcn/dropdown-menu.tsx create mode 100644 packages/ui/src/shadcn/form.tsx create mode 100644 packages/ui/src/shadcn/heading.tsx create mode 100644 packages/ui/src/shadcn/index.ts create mode 100644 packages/ui/src/shadcn/input-otp.tsx create mode 100644 packages/ui/src/shadcn/input.tsx create mode 100644 packages/ui/src/shadcn/label.tsx create mode 100644 packages/ui/src/shadcn/navigation-menu.tsx create mode 100644 packages/ui/src/shadcn/popover.tsx create mode 100644 packages/ui/src/shadcn/progress.tsx create mode 100644 packages/ui/src/shadcn/radio-group.tsx create mode 100644 packages/ui/src/shadcn/scroll-area.tsx create mode 100644 packages/ui/src/shadcn/select.tsx create mode 100644 packages/ui/src/shadcn/separator.tsx create mode 100644 packages/ui/src/shadcn/sheet.tsx create mode 100644 packages/ui/src/shadcn/sidebar.tsx create mode 100644 packages/ui/src/shadcn/skeleton.tsx create mode 100644 packages/ui/src/shadcn/sonner.tsx create mode 100644 packages/ui/src/shadcn/switch.tsx create mode 100644 packages/ui/src/shadcn/table.tsx create mode 100644 packages/ui/src/shadcn/tabs.tsx create mode 100644 packages/ui/src/shadcn/textarea.tsx create mode 100644 packages/ui/src/shadcn/tooltip.tsx create mode 100644 packages/ui/tsconfig.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml delete mode 100644 postcss.config.js create mode 100644 postcss.config.mjs create mode 100644 public/images/billing.webp create mode 100644 public/images/dashboard-header.webp create mode 100644 public/images/dashboard.webp create mode 100644 public/images/favicon/android-chrome-192x192.png create mode 100644 public/images/favicon/android-chrome-512x512.png create mode 100644 public/images/favicon/apple-touch-icon.png create mode 100644 public/images/favicon/browserconfig.xml create mode 100644 public/images/favicon/favicon-16x16.png create mode 100644 public/images/favicon/favicon-32x32.png create mode 100644 public/images/favicon/favicon.ico create mode 100644 public/images/favicon/mstile-150x150.png create mode 100644 public/images/favicon/safari-pinned-tab.svg create mode 100644 public/images/favicon/site.webmanifest create mode 100644 public/images/multi-tenancy.webp create mode 100644 public/images/oauth/apple.webp create mode 100644 public/images/oauth/facebook.webp create mode 100644 public/images/oauth/fb.png create mode 100644 public/images/oauth/github.webp create mode 100644 public/images/oauth/google.png create mode 100644 public/images/oauth/google.webp create mode 100644 public/images/oauth/microsoft.webp create mode 100644 public/images/posts/brainstorming.webp create mode 100644 public/images/posts/indie-hacker.webp create mode 100644 public/images/posts/saas-starter-blog-post.webp create mode 100644 public/images/sign-in.webp create mode 100644 public/locales/en/account.json create mode 100644 public/locales/en/auth.json create mode 100644 public/locales/en/billing.json create mode 100644 public/locales/en/common.json create mode 100644 public/locales/en/marketing.json create mode 100644 public/locales/en/teams.json create mode 100644 styles/globals.css create mode 100644 styles/makerkit.css create mode 100644 styles/markdoc.css create mode 100644 styles/shadcn-ui.css create mode 100644 styles/theme.css create mode 100644 styles/theme.utilities.css create mode 100644 supabase copy/.gitignore create mode 100644 supabase copy/config.toml create mode 100644 supabase copy/migrations/20221215192558_schema.sql create mode 100644 supabase copy/migrations/20240319163440_roles-seed.sql create mode 100644 supabase copy/migrations/20241007151024_delete-team-account.sql create mode 100644 supabase copy/migrations/20250301095452_one-time-tokens.sql create mode 100644 supabase copy/migrations/20250302043537_mfa-rls-super-admin.sql create mode 100644 supabase copy/migrations/20250304104340_set-otp-search-path.sql create mode 100644 supabase copy/schemas/00-privileges.sql create mode 100644 supabase copy/schemas/01-enums.sql create mode 100644 supabase copy/schemas/02-config.sql create mode 100644 supabase copy/schemas/03-accounts.sql create mode 100644 supabase copy/schemas/04-roles.sql create mode 100644 supabase copy/schemas/05-memberships.sql create mode 100644 supabase copy/schemas/06-roles-permissions.sql create mode 100644 supabase copy/schemas/07-invitations.sql create mode 100644 supabase copy/schemas/08-billing-customers.sql create mode 100644 supabase copy/schemas/09-subscriptions.sql create mode 100644 supabase copy/schemas/10-orders.sql create mode 100644 supabase copy/schemas/11-notifications.sql create mode 100644 supabase copy/schemas/12-one-time-tokens.sql create mode 100644 supabase copy/schemas/13-mfa.sql create mode 100644 supabase copy/schemas/14-super-admin.sql create mode 100644 supabase copy/schemas/15-account-views.sql create mode 100644 supabase copy/schemas/16-storage.sql create mode 100644 supabase copy/schemas/17-roles-seed.sql create mode 100644 supabase copy/seed.sql create mode 100644 supabase copy/templates/change-email-address.html create mode 100644 supabase copy/templates/confirm-email.html create mode 100644 supabase copy/templates/invite-user.html create mode 100644 supabase copy/templates/magic-link.html create mode 100644 supabase copy/templates/reset-password.html create mode 100644 supabase copy/tests/database/00000-dbdev.sql create mode 100644 supabase copy/tests/database/00000-makerkit-helpers.sql create mode 100644 supabase copy/tests/database/account-permissions.test.sql create mode 100644 supabase copy/tests/database/account-slug.test.sql create mode 100644 supabase copy/tests/database/delete-membership.test.sql create mode 100644 supabase copy/tests/database/invitations.test.sql create mode 100644 supabase copy/tests/database/memberships.test.sql create mode 100644 supabase copy/tests/database/notifications.test.sql create mode 100644 supabase copy/tests/database/otp.test.sql create mode 100644 supabase copy/tests/database/personal-accounts.test.sql create mode 100644 supabase copy/tests/database/personal-billing-orders.test.sql create mode 100644 supabase copy/tests/database/personal-billing-subscriptions.test.sql create mode 100644 supabase copy/tests/database/schema-conditions.test.sql create mode 100644 supabase copy/tests/database/schema.test.sql create mode 100644 supabase copy/tests/database/storage.test.sql create mode 100644 supabase copy/tests/database/super-admin-edge-cases.test.sql create mode 100644 supabase copy/tests/database/super-admin.test.sql create mode 100644 supabase copy/tests/database/team-accounts.test.sql create mode 100644 supabase copy/tests/database/team-billing-orders.test.sql create mode 100644 supabase copy/tests/database/team-billing-subscriptions.test.sql create mode 100644 supabase copy/tests/database/transfer-ownership.test.sql create mode 100644 supabase copy/tests/database/update-membership.test.sql create mode 100644 tooling/eslint/apps.js create mode 100644 tooling/eslint/base.js create mode 100644 tooling/eslint/nextjs.js create mode 100755 tooling/eslint/node_modules/.bin/eslint create mode 100755 tooling/eslint/node_modules/.bin/jiti create mode 100755 tooling/eslint/node_modules/.bin/tsc create mode 100755 tooling/eslint/node_modules/.bin/tsserver create mode 100755 tooling/eslint/node_modules/.bin/turbo create mode 120000 tooling/eslint/node_modules/@kit/prettier-config create mode 120000 tooling/eslint/node_modules/@kit/tsconfig create mode 120000 tooling/eslint/node_modules/@next/eslint-plugin-next create mode 120000 tooling/eslint/node_modules/@types/eslint create mode 120000 tooling/eslint/node_modules/eslint create mode 120000 tooling/eslint/node_modules/eslint-config-next create mode 120000 tooling/eslint/node_modules/eslint-config-turbo create mode 120000 tooling/eslint/node_modules/typescript create mode 120000 tooling/eslint/node_modules/typescript-eslint create mode 100644 tooling/eslint/package.json create mode 100644 tooling/prettier/index.mjs create mode 100755 tooling/prettier/node_modules/.bin/prettier create mode 100755 tooling/prettier/node_modules/.bin/tsc create mode 100755 tooling/prettier/node_modules/.bin/tsserver create mode 120000 tooling/prettier/node_modules/@kit/tsconfig create mode 120000 tooling/prettier/node_modules/@trivago/prettier-plugin-sort-imports create mode 120000 tooling/prettier/node_modules/prettier create mode 120000 tooling/prettier/node_modules/prettier-plugin-tailwindcss create mode 120000 tooling/prettier/node_modules/typescript create mode 100644 tooling/prettier/package.json create mode 100644 tooling/prettier/tsconfig.json create mode 100644 tooling/typescript/base.json create mode 100644 tooling/typescript/package.json diff --git a/.aiignore b/.aiignore new file mode 100644 index 0000000..7d17f6f --- /dev/null +++ b/.aiignore @@ -0,0 +1,27 @@ +# An .aiignore file follows the same syntax as a .gitignore file. +# .gitignore documentation: https://git-scm.com/docs/gitignore + +# you can ignore files +.DS_Store +*.log +*.tmp + +# or folders +dist/ +build/ +out/ + +.cursor +.cursorignore +database.types.ts +playwright-report +test-results +web/supabase/migrations +pnpm-lock.yaml +.env.local +.env.production.local +.idea +.vscode +.zed +tsconfig.tsbuildinfo +.windsurfrules \ No newline at end of file diff --git a/.cursorignore b/.cursorignore new file mode 100644 index 0000000..8ce3491 --- /dev/null +++ b/.cursorignore @@ -0,0 +1,12 @@ +database.types.ts +playwright-report +test-results +web/supabase/migrations +pnpm-lock.yaml +.env.local +.env.production.local +.idea +.vscode +.zed +tsconfig.tsbuildinfo +.windsurfrules \ No newline at end of file diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..82a3969 --- /dev/null +++ b/.env.development @@ -0,0 +1,27 @@ +# This file is used to define environment variables for the development environment. +# These values are only used when running the app in development mode. + +# SUPABASE +NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321 +NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0 +SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU + +## THIS IS FOR DEVELOPMENT ONLY - DO NOT USE IN PRODUCTION +SUPABASE_DB_WEBHOOK_SECRET=WEBHOOKSECRET + +# EMAILS +EMAIL_SENDER="Makerkit " +EMAIL_PORT=54325 +EMAIL_HOST=localhost +EMAIL_TLS=false +EMAIL_USER=user +EMAIL_PASSWORD=password + +# CONTACT FORM +CONTACT_EMAIL=test@makerkit.dev + +# STRIPE +NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY= + +# MAILER +MAILER_PROVIDER=nodemailer \ No newline at end of file diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..417308e --- /dev/null +++ b/.env.production @@ -0,0 +1,12 @@ +# PRODUCTION ENVIRONMENT VARIABLES + +## DO NOT ADD VARS HERE UNLESS THEY ARE PUBLIC OR NOT SENSITIVE +## THIS ENV IS USED FOR PRODUCTION AND IS COMMITED TO THE REPO +## AVOID PLACING SENSITIVE DATA IN THIS FILE. +## PUBLIC KEYS OR CONFIGURATION ARE OKAY TO BE PLACED HERE. + +# SUPABASE +NEXT_PUBLIC_SUPABASE_URL= + +# STRIPE +NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY= diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..3d047a0 --- /dev/null +++ b/.env.test @@ -0,0 +1,22 @@ +# TEST ENVIRONMENT VARIABLES +NEXT_PUBLIC_CI=true + +# SUPABASE +NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321 +NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0 +SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU + +## THIS IS FOR DEVELOPMENT ONLY - DO NOT USE IN PRODUCTION +SUPABASE_DB_WEBHOOK_SECRET=WEBHOOKSECRET + +EMAIL_SENDER=test@makerkit.dev +EMAIL_PORT=54325 +EMAIL_HOST=localhost +EMAIL_TLS=false +EMAIL_USER=user +EMAIL_PASSWORD=password + +# STRIPE +NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_51K9cWKI1i3VnbZTq2HGstY2S8wt3peF1MOqPXFO4LR8ln2QgS7GxL8XyKaKLvn7iFHeqAnvdDw0o48qN7rrwwcHU00jOtKhjsf + +CONTACT_EMAIL=test@makerkit.dev \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..dad7c34 --- /dev/null +++ b/.npmrc @@ -0,0 +1,10 @@ +peer-legacy-deps=true +dedupe-peer-dependents=true +use-lockfile-v6=true +resolution-mode=highest +package-manager-strict=true +public-hoist-pattern[]=*i18next* +public-hoist-pattern[]=*eslint* +public-hoist-pattern[]=*prettier* +public-hoist-pattern[]=*require-in-the-middle* +public-hoist-pattern[]=*import-in-the-middle* \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..89e0c3d --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20.10 \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..dca02d0 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +database.types.ts +playwright-report +*.hbs \ No newline at end of file diff --git a/.windsurfrules b/.windsurfrules new file mode 100644 index 0000000..df3e6cf --- /dev/null +++ b/.windsurfrules @@ -0,0 +1,225 @@ +# Makerkit Guidelines + +## Project Stack +- Framework: Next.js 15 App Router, TypeScript, React, Node.js +- Backend: Supabase with Postgres +- UI: Shadcn UI, Tailwind CSS +- Key libraries: React Hook Form, React Query, Zod, Lucide React +- Focus: Code clarity, Readability, Best practices, Maintainability + +## Project Structure +``` +/apps/web/ + /app + /home # protected routes + /(user) # user workspace + /[account] # team workspace + /(marketing) # marketing pages + /auth # auth pages + /components # global components + /config # global config + /lib # global utils + /content # markdoc content + /supabase # supabase root +``` + +## Core Principles + +### Data Flow +1. Server Components + - Use Supabase Client directly via `getSupabaseServerClient` + - Handle errors with proper boundaries + - Example: + ```tsx + async function ServerComponent() { + const client = getSupabaseServerClient(); + const { data, error } = await client.from('notes').select('*'); + if (error) return ; + return ; + } + ``` + +2. Client Components + - Use React Query for data fetching + - Implement proper loading states + - Example: + ```tsx + function useNotes() { + const { data, isLoading } = useQuery({ + queryKey: ['notes'], + queryFn: async () => { + const { data } = await fetch('/api/notes'); + return data; + } + }); + return { data, isLoading }; + } + ``` + +### Server Actions +- Name files as "server-actions.ts" in `_lib/server` folder +- Export with "Action" suffix +- Use `enhanceAction` with proper typing +- Example: + ```tsx + export const createNoteAction = enhanceAction( + async function (data, user) { + const client = getSupabaseServerClient(); + const { error } = await client + .from('notes') + .insert({ ...data, user_id: user.id }); + if (error) throw error; + return { success: true }; + }, + { + auth: true, + schema: NoteSchema, + } + ); + ``` + +### Route Handlers + +- Use `enhanceRouteHandler` to wrap route handlers +- Use Route Handlers when data fetching from Client Components + +## Database & Security + +### RLS Policies +- Strive to create a safe, robust, secure and consistent database schema +- Always consider the compromises you need to make and explain them so I can make an educated decision. Follow up with the considerations make and explain them. +- Enable RLS by default and propose the required RLS policies +- `public.accounts` are the root tables for the application +- Implement cascading deletes when appropriate +- Ensure strong consistency considering triggers and constraints +- Always use Postgres schemas explicitly (e.g., `public.accounts`) + +## Forms Pattern + +### 1. Schema Definition +```tsx +// schema/note.schema.ts +import { z } from 'zod'; + +export const NoteSchema = z.object({ + title: z.string().min(1).max(100), + content: z.string().min(1), + category: z.enum(['work', 'personal']), +}); +``` + +### 2. Form Component +```tsx +'use client'; + +export function NoteForm() { + const [pending, startTransition] = useTransition(); + const form = useForm({ + resolver: zodResolver(NoteSchema), + defaultValues: { title: '', content: '', category: 'personal' } + }); + + const onSubmit = (data: z.infer) => { + startTransition(async () => { + try { + await createNoteAction(data); + form.reset(); + } catch (error) { + // Handle error + } + }); + }; + + return ( +
+ ( + + Title + + + + + + )} /> + {/* Other fields */} + + ); +} +``` + +## Error Handling + +- Consider logging asynchronous requests in server code using the `@kit/shared/logger` +- Handle promises and async/await gracefully +- Consider the unhappy path and handle errors appropriately + +### Structured Logging +```tsx +const ctx = { + name: 'create-note', + userId: user.id, + noteId: note.id +}; + +logger.info(ctx, 'Creating new note...'); + +try { + await createNote(); + logger.info(ctx, 'Note created successfully'); +} catch (error) { + logger.error(ctx, 'Failed to create note', { error }); + throw error; +} +``` + +## Context Management + +In client components, we can use the `useUserWorkspace` hook to access the user's workspace data. + +### Personal Account +```tsx +'use client'; + +function PersonalDashboard() { + const { workspace, user } = useUserWorkspace(); + if (!workspace) return null; + + return ( +
+

Welcome, {user.email}

+ +
+ ); +} +``` + +### Team Account +In client components, we can use the `useTeamAccountWorkspace` hook to access the team account's workspace data. It only works under the `/home/[account]` route. + +```tsx +'use client'; + +function TeamDashboard() { + const { account, user } = useTeamAccountWorkspace(); + + return ( +
+

{account.name}

+ + +
+ ); +} +``` + +## UI Components + +- Reusable UI components are defined in the "packages/ui" package named "@kit/ui". +- By exporting the component from the "exports" field, we can import it using the "@kit/ui/{component-name}" format. + +## Creating Pages + +When creating new pages ensure: +- The page is exported using `withI18n(Page)` to enable i18n. +- The page has the required and correct metadata using the `metadata` or `generateMetadata` function. +- Don't worry about authentication, it's handled in the middleware. diff --git a/app/(auth-pages)/forgot-password/page.tsx b/app/(auth-pages)/forgot-password/page.tsx deleted file mode 100644 index bcf9725..0000000 --- a/app/(auth-pages)/forgot-password/page.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { forgotPasswordAction } from "@/app/actions"; -import { FormMessage, Message } from "@/components/form-message"; -import { SubmitButton } from "@/components/submit-button"; -import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; -import Link from "next/link"; -import { SmtpMessage } from "../smtp-message"; - -export default async function ForgotPassword(props: { - searchParams: Promise; -}) { - const searchParams = await props.searchParams; - return ( - <> -
-
-

Reset Password

-

- Already have an account?{" "} - - Sign in - -

-
-
- - - - Reset Password - - -
-
- - - ); -} diff --git a/app/(auth-pages)/layout.tsx b/app/(auth-pages)/layout.tsx deleted file mode 100644 index e038de1..0000000 --- a/app/(auth-pages)/layout.tsx +++ /dev/null @@ -1,9 +0,0 @@ -export default async function Layout({ - children, -}: { - children: React.ReactNode; -}) { - return ( -
{children}
- ); -} diff --git a/app/(auth-pages)/sign-in/page.tsx b/app/(auth-pages)/sign-in/page.tsx deleted file mode 100644 index 7628cc7..0000000 --- a/app/(auth-pages)/sign-in/page.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { signInAction } from "@/app/actions"; -import { FormMessage, Message } from "@/components/form-message"; -import { SubmitButton } from "@/components/submit-button"; -import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; -import Link from "next/link"; - -export default async function Login(props: { searchParams: Promise }) { - const searchParams = await props.searchParams; - return ( -
-

Sign in

-

- Don't have an account?{" "} - - Sign up - -

-
- - -
- - - Forgot Password? - -
- - - Sign in - - -
-
- ); -} diff --git a/app/(auth-pages)/sign-up/page.tsx b/app/(auth-pages)/sign-up/page.tsx deleted file mode 100644 index 31b5a6d..0000000 --- a/app/(auth-pages)/sign-up/page.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { signUpAction } from "@/app/actions"; -import { FormMessage, Message } from "@/components/form-message"; -import { SubmitButton } from "@/components/submit-button"; -import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; -import Link from "next/link"; -import { SmtpMessage } from "../smtp-message"; - -export default async function Signup(props: { - searchParams: Promise; -}) { - const searchParams = await props.searchParams; - if ("message" in searchParams) { - return ( -
- -
- ); - } - - return ( - <> -
-

Sign up

-

- Already have an account?{" "} - - Sign in - -

-
- - - - - - Sign up - - -
-
- - - ); -} diff --git a/app/(auth-pages)/smtp-message.tsx b/app/(auth-pages)/smtp-message.tsx deleted file mode 100644 index 84c21fc..0000000 --- a/app/(auth-pages)/smtp-message.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { ArrowUpRight, InfoIcon } from "lucide-react"; -import Link from "next/link"; - -export function SmtpMessage() { - return ( -
- -
- - Note: Emails are rate limited. Enable Custom SMTP to - increase the rate limit. - -
- - Learn more - -
-
-
- ); -} diff --git a/app/(marketing)/(legal)/cookie-policy/page.tsx b/app/(marketing)/(legal)/cookie-policy/page.tsx new file mode 100644 index 0000000..d3c5eee --- /dev/null +++ b/app/(marketing)/(legal)/cookie-policy/page.tsx @@ -0,0 +1,30 @@ +import { SitePageHeader } from '~/(marketing)/_components/site-page-header'; +import { createI18nServerInstance } from '~/lib/i18n/i18n.server'; +import { withI18n } from '~/lib/i18n/with-i18n'; + +export async function generateMetadata() { + const { t } = await createI18nServerInstance(); + + return { + title: t('marketing:cookiePolicy'), + }; +} + +async function CookiePolicyPage() { + const { t } = await createI18nServerInstance(); + + return ( +
+ + +
+
Your terms of service content here
+
+
+ ); +} + +export default withI18n(CookiePolicyPage); diff --git a/app/(marketing)/(legal)/privacy-policy/page.tsx b/app/(marketing)/(legal)/privacy-policy/page.tsx new file mode 100644 index 0000000..b8ff856 --- /dev/null +++ b/app/(marketing)/(legal)/privacy-policy/page.tsx @@ -0,0 +1,30 @@ +import { SitePageHeader } from '~/(marketing)/_components/site-page-header'; +import { createI18nServerInstance } from '~/lib/i18n/i18n.server'; +import { withI18n } from '~/lib/i18n/with-i18n'; + +export async function generateMetadata() { + const { t } = await createI18nServerInstance(); + + return { + title: t('marketing:privacyPolicy'), + }; +} + +async function PrivacyPolicyPage() { + const { t } = await createI18nServerInstance(); + + return ( +
+ + +
+
Your terms of service content here
+
+
+ ); +} + +export default withI18n(PrivacyPolicyPage); diff --git a/app/(marketing)/(legal)/terms-of-service/page.tsx b/app/(marketing)/(legal)/terms-of-service/page.tsx new file mode 100644 index 0000000..ee7d0cb --- /dev/null +++ b/app/(marketing)/(legal)/terms-of-service/page.tsx @@ -0,0 +1,30 @@ +import { SitePageHeader } from '~/(marketing)/_components/site-page-header'; +import { createI18nServerInstance } from '~/lib/i18n/i18n.server'; +import { withI18n } from '~/lib/i18n/with-i18n'; + +export async function generateMetadata() { + const { t } = await createI18nServerInstance(); + + return { + title: t('marketing:termsOfService'), + }; +} + +async function TermsOfServicePage() { + const { t } = await createI18nServerInstance(); + + return ( +
+ + +
+
Your terms of service content here
+
+
+ ); +} + +export default withI18n(TermsOfServicePage); diff --git a/app/(marketing)/_components/site-footer.tsx b/app/(marketing)/_components/site-footer.tsx new file mode 100644 index 0000000..bd8fdb4 --- /dev/null +++ b/app/(marketing)/_components/site-footer.tsx @@ -0,0 +1,58 @@ +import { Footer } from '@kit/ui/marketing'; +import { Trans } from '@kit/ui/trans'; + +import { AppLogo } from '~/components/app-logo'; +import appConfig from '~/config/app.config'; + +export function SiteFooter() { + return ( +