@digilogiclabs/create-saas-app 2.9.0 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/generators/template-generator.d.ts.map +1 -1
- package/dist/generators/template-generator.js +6 -3
- package/dist/generators/template-generator.js.map +1 -1
- package/dist/templates/shared/auth/supabase/web/src/middleware.ts +63 -0
- package/dist/templates/shared/database/supabase/web/src/lib/supabase/server.ts +3 -1
- package/dist/templates/shared/design/web/src/config/design.config.ts +14 -14
- package/dist/templates/shared/landing/web/src/components/LandingPage.tsx +0 -3
- package/dist/templates/shared/security/web/src/lib/api-security.ts +2 -2
- package/dist/templates/web/ai-platform/template/next.config.js +14 -14
- package/dist/templates/web/ai-platform/template/package.json +11 -22
- package/dist/templates/web/ai-platform/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ai-platform/template/src/app/chat/page.tsx +234 -235
- package/dist/templates/web/ai-platform/template/src/app/dashboard/page.tsx +142 -142
- package/dist/templates/web/ai-platform/template/src/app/error.tsx +13 -13
- package/dist/templates/web/ai-platform/template/src/app/globals.css +97 -34
- package/dist/templates/web/ai-platform/template/src/app/layout.tsx +3 -0
- package/dist/templates/web/ai-platform/template/src/app/loading.tsx +22 -22
- package/dist/templates/web/ai-platform/template/src/app/page.tsx +249 -155
- package/dist/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/ai-platform/template/src/lib/auth-server.ts +32 -33
- package/dist/templates/web/base/template/next.config.js +14 -15
- package/dist/templates/web/base/template/package.json +16 -31
- package/dist/templates/web/base/template/postcss.config.mjs +8 -0
- package/dist/templates/web/base/template/src/app/error.tsx +97 -97
- package/dist/templates/web/base/template/src/app/globals.css +87 -148
- package/dist/templates/web/base/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/base/template/src/app/loading.tsx +52 -52
- package/dist/templates/web/base/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/base/template/tsconfig.json +27 -33
- package/dist/templates/web/iot-dashboard/template/next.config.js +14 -14
- package/dist/templates/web/iot-dashboard/template/package.json +12 -16
- package/dist/templates/web/iot-dashboard/template/postcss.config.mjs +8 -0
- package/dist/templates/web/iot-dashboard/template/src/app/dashboard/page.tsx +224 -224
- package/dist/templates/web/iot-dashboard/template/src/app/error.tsx +8 -8
- package/dist/templates/web/iot-dashboard/template/src/app/globals.css +97 -20
- package/dist/templates/web/iot-dashboard/template/src/app/layout.tsx +3 -0
- package/dist/templates/web/iot-dashboard/template/src/app/loading.tsx +5 -5
- package/dist/templates/web/iot-dashboard/template/src/app/page.tsx +266 -189
- package/dist/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/iot-dashboard/template/src/lib/auth-server.ts +32 -33
- package/dist/templates/web/marketplace/template/next.config.js +14 -14
- package/dist/templates/web/marketplace/template/package.json +11 -18
- package/dist/templates/web/marketplace/template/postcss.config.mjs +8 -0
- package/dist/templates/web/marketplace/template/src/app/cart/page.tsx +147 -147
- package/dist/templates/web/marketplace/template/src/app/dashboard/page.tsx +149 -149
- package/dist/templates/web/marketplace/template/src/app/error.tsx +7 -7
- package/dist/templates/web/marketplace/template/src/app/globals.css +97 -20
- package/dist/templates/web/marketplace/template/src/app/layout.tsx +3 -0
- package/dist/templates/web/marketplace/template/src/app/loading.tsx +5 -5
- package/dist/templates/web/marketplace/template/src/app/page.tsx +370 -169
- package/dist/templates/web/marketplace/template/src/app/products/page.tsx +129 -129
- package/dist/templates/web/marketplace/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/marketplace/template/src/lib/auth-server.ts +32 -33
- package/dist/templates/web/micro-saas/template/next.config.js +14 -14
- package/dist/templates/web/micro-saas/template/package.json +9 -8
- package/dist/templates/web/micro-saas/template/postcss.config.mjs +8 -0
- package/dist/templates/web/micro-saas/template/src/app/dashboard/page.tsx +145 -117
- package/dist/templates/web/micro-saas/template/src/app/error.tsx +7 -7
- package/dist/templates/web/micro-saas/template/src/app/globals.css +97 -20
- package/dist/templates/web/micro-saas/template/src/app/layout.tsx +3 -0
- package/dist/templates/web/micro-saas/template/src/app/loading.tsx +43 -27
- package/dist/templates/web/micro-saas/template/src/app/login/page.tsx +101 -87
- package/dist/templates/web/micro-saas/template/src/app/page.tsx +227 -137
- package/dist/templates/web/micro-saas/template/src/app/signup/page.tsx +122 -108
- package/dist/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/micro-saas/template/src/lib/auth-server.ts +32 -33
- package/dist/templates/web/ui-auth/template/next.config.js +14 -12
- package/dist/templates/web/ui-auth/template/package.json +16 -26
- package/dist/templates/web/ui-auth/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-auth/template/src/app/globals.css +85 -84
- package/dist/templates/web/ui-auth/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-auth/template/src/app/loading.tsx +20 -38
- package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/ui-auth/template/tsconfig.json +27 -33
- package/dist/templates/web/ui-auth-ai/template/next.config.js +15 -13
- package/dist/templates/web/ui-auth-ai/template/package.json +25 -21
- package/dist/templates/web/ui-auth-ai/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth-ai/template/src/app/error.tsx +7 -7
- package/dist/templates/web/ui-auth-ai/template/src/app/globals.css +87 -25
- package/dist/templates/web/ui-auth-ai/template/src/app/layout.tsx +3 -0
- package/dist/templates/web/ui-auth-ai/template/src/app/loading.tsx +4 -4
- package/dist/templates/web/ui-auth-ai/template/tsconfig.json +27 -28
- package/dist/templates/web/ui-auth-payments/template/next.config.js +14 -12
- package/dist/templates/web/ui-auth-payments/template/package.json +16 -29
- package/dist/templates/web/ui-auth-payments/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth-payments/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-auth-payments/template/src/app/globals.css +89 -204
- package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-auth-payments/template/src/app/loading.tsx +20 -20
- package/dist/templates/web/ui-auth-payments/template/tsconfig.json +27 -33
- package/dist/templates/web/ui-auth-payments-ai/template/next.config.js +14 -12
- package/dist/templates/web/ui-auth-payments-ai/template/package.json +17 -33
- package/dist/templates/web/ui-auth-payments-ai/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/globals.css +85 -85
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-auth-payments-ai/template/src/app/loading.tsx +20 -20
- package/dist/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/ui-auth-payments-ai/template/tsconfig.json +27 -33
- package/dist/templates/web/ui-auth-payments-audio/template/next.config.js +14 -12
- package/dist/templates/web/ui-auth-payments-audio/template/package.json +17 -30
- package/dist/templates/web/ui-auth-payments-audio/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/globals.css +85 -85
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/loading.tsx +20 -20
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/ui-auth-payments-audio/template/tsconfig.json +27 -33
- package/dist/templates/web/ui-auth-payments-video/template/next.config.js +14 -12
- package/dist/templates/web/ui-auth-payments-video/template/package.json +17 -30
- package/dist/templates/web/ui-auth-payments-video/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-auth-payments-video/template/src/app/globals.css +89 -221
- package/dist/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-auth-payments-video/template/src/app/loading.tsx +20 -20
- package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +5 -2
- package/dist/templates/web/ui-auth-payments-video/template/tsconfig.json +27 -33
- package/dist/templates/web/ui-only/template/next.config.js +14 -12
- package/dist/templates/web/ui-only/template/package.json +15 -25
- package/dist/templates/web/ui-only/template/postcss.config.mjs +8 -0
- package/dist/templates/web/ui-only/template/src/app/error.tsx +67 -67
- package/dist/templates/web/ui-only/template/src/app/globals.css +85 -31
- package/dist/templates/web/ui-only/template/src/app/layout.tsx +4 -1
- package/dist/templates/web/ui-only/template/src/app/loading.tsx +20 -20
- package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +20 -26
- package/dist/templates/web/ui-only/template/tsconfig.json +27 -33
- package/package.json +1 -1
- package/src/templates/shared/auth/supabase/web/src/middleware.ts +63 -0
- package/src/templates/shared/database/supabase/web/src/lib/supabase/server.ts +3 -1
- package/src/templates/shared/design/web/src/config/design.config.ts +14 -14
- package/src/templates/shared/landing/web/src/components/LandingPage.tsx +0 -3
- package/src/templates/shared/security/web/src/lib/api-security.ts +2 -2
- package/src/templates/web/ai-platform/template/next.config.js +14 -14
- package/src/templates/web/ai-platform/template/package.json +11 -22
- package/src/templates/web/ai-platform/template/postcss.config.mjs +8 -0
- package/src/templates/web/ai-platform/template/src/app/chat/page.tsx +234 -235
- package/src/templates/web/ai-platform/template/src/app/dashboard/page.tsx +142 -142
- package/src/templates/web/ai-platform/template/src/app/error.tsx +13 -13
- package/src/templates/web/ai-platform/template/src/app/globals.css +97 -34
- package/src/templates/web/ai-platform/template/src/app/layout.tsx +3 -0
- package/src/templates/web/ai-platform/template/src/app/loading.tsx +22 -22
- package/src/templates/web/ai-platform/template/src/app/page.tsx +249 -155
- package/src/templates/web/ai-platform/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/ai-platform/template/src/lib/auth-server.ts +32 -33
- package/src/templates/web/base/template/next.config.js +14 -15
- package/src/templates/web/base/template/package.json +16 -31
- package/src/templates/web/base/template/postcss.config.mjs +8 -0
- package/src/templates/web/base/template/src/app/error.tsx +97 -97
- package/src/templates/web/base/template/src/app/globals.css +87 -148
- package/src/templates/web/base/template/src/app/layout.tsx +4 -1
- package/src/templates/web/base/template/src/app/loading.tsx +52 -52
- package/src/templates/web/base/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/base/template/tsconfig.json +27 -33
- package/src/templates/web/iot-dashboard/template/next.config.js +14 -14
- package/src/templates/web/iot-dashboard/template/package.json +12 -16
- package/src/templates/web/iot-dashboard/template/postcss.config.mjs +8 -0
- package/src/templates/web/iot-dashboard/template/src/app/dashboard/page.tsx +224 -224
- package/src/templates/web/iot-dashboard/template/src/app/error.tsx +8 -8
- package/src/templates/web/iot-dashboard/template/src/app/globals.css +97 -20
- package/src/templates/web/iot-dashboard/template/src/app/layout.tsx +3 -0
- package/src/templates/web/iot-dashboard/template/src/app/loading.tsx +5 -5
- package/src/templates/web/iot-dashboard/template/src/app/page.tsx +266 -189
- package/src/templates/web/iot-dashboard/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/iot-dashboard/template/src/lib/auth-server.ts +32 -33
- package/src/templates/web/marketplace/template/next.config.js +14 -14
- package/src/templates/web/marketplace/template/package.json +11 -18
- package/src/templates/web/marketplace/template/postcss.config.mjs +8 -0
- package/src/templates/web/marketplace/template/src/app/cart/page.tsx +147 -147
- package/src/templates/web/marketplace/template/src/app/dashboard/page.tsx +149 -149
- package/src/templates/web/marketplace/template/src/app/error.tsx +7 -7
- package/src/templates/web/marketplace/template/src/app/globals.css +97 -20
- package/src/templates/web/marketplace/template/src/app/layout.tsx +3 -0
- package/src/templates/web/marketplace/template/src/app/loading.tsx +5 -5
- package/src/templates/web/marketplace/template/src/app/page.tsx +370 -169
- package/src/templates/web/marketplace/template/src/app/products/page.tsx +129 -129
- package/src/templates/web/marketplace/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/marketplace/template/src/lib/auth-server.ts +32 -33
- package/src/templates/web/micro-saas/template/next.config.js +14 -14
- package/src/templates/web/micro-saas/template/package.json +9 -8
- package/src/templates/web/micro-saas/template/postcss.config.mjs +8 -0
- package/src/templates/web/micro-saas/template/src/app/dashboard/page.tsx +145 -117
- package/src/templates/web/micro-saas/template/src/app/error.tsx +7 -7
- package/src/templates/web/micro-saas/template/src/app/globals.css +97 -20
- package/src/templates/web/micro-saas/template/src/app/layout.tsx +3 -0
- package/src/templates/web/micro-saas/template/src/app/loading.tsx +43 -27
- package/src/templates/web/micro-saas/template/src/app/login/page.tsx +101 -87
- package/src/templates/web/micro-saas/template/src/app/page.tsx +227 -137
- package/src/templates/web/micro-saas/template/src/app/signup/page.tsx +122 -108
- package/src/templates/web/micro-saas/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/micro-saas/template/src/lib/auth-server.ts +32 -33
- package/src/templates/web/ui-auth/template/next.config.js +14 -12
- package/src/templates/web/ui-auth/template/package.json +16 -26
- package/src/templates/web/ui-auth/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-auth/template/src/app/globals.css +85 -84
- package/src/templates/web/ui-auth/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-auth/template/src/app/loading.tsx +20 -38
- package/src/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/ui-auth/template/tsconfig.json +27 -33
- package/src/templates/web/ui-auth-ai/template/next.config.js +15 -13
- package/src/templates/web/ui-auth-ai/template/package.json +25 -21
- package/src/templates/web/ui-auth-ai/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth-ai/template/src/app/error.tsx +7 -7
- package/src/templates/web/ui-auth-ai/template/src/app/globals.css +87 -25
- package/src/templates/web/ui-auth-ai/template/src/app/layout.tsx +3 -0
- package/src/templates/web/ui-auth-ai/template/src/app/loading.tsx +4 -4
- package/src/templates/web/ui-auth-ai/template/tsconfig.json +27 -28
- package/src/templates/web/ui-auth-payments/template/next.config.js +14 -12
- package/src/templates/web/ui-auth-payments/template/package.json +16 -29
- package/src/templates/web/ui-auth-payments/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth-payments/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-auth-payments/template/src/app/globals.css +89 -204
- package/src/templates/web/ui-auth-payments/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-auth-payments/template/src/app/loading.tsx +20 -20
- package/src/templates/web/ui-auth-payments/template/tsconfig.json +27 -33
- package/src/templates/web/ui-auth-payments-ai/template/next.config.js +14 -12
- package/src/templates/web/ui-auth-payments-ai/template/package.json +17 -33
- package/src/templates/web/ui-auth-payments-ai/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth-payments-ai/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-auth-payments-ai/template/src/app/globals.css +85 -85
- package/src/templates/web/ui-auth-payments-ai/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-auth-payments-ai/template/src/app/loading.tsx +20 -20
- package/src/templates/web/ui-auth-payments-ai/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/ui-auth-payments-ai/template/tsconfig.json +27 -33
- package/src/templates/web/ui-auth-payments-audio/template/next.config.js +14 -12
- package/src/templates/web/ui-auth-payments-audio/template/package.json +17 -30
- package/src/templates/web/ui-auth-payments-audio/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-auth-payments-audio/template/src/app/globals.css +85 -85
- package/src/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-auth-payments-audio/template/src/app/loading.tsx +20 -20
- package/src/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/ui-auth-payments-audio/template/tsconfig.json +27 -33
- package/src/templates/web/ui-auth-payments-video/template/next.config.js +14 -12
- package/src/templates/web/ui-auth-payments-video/template/package.json +17 -30
- package/src/templates/web/ui-auth-payments-video/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-auth-payments-video/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-auth-payments-video/template/src/app/globals.css +89 -221
- package/src/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-auth-payments-video/template/src/app/loading.tsx +20 -20
- package/src/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +5 -2
- package/src/templates/web/ui-auth-payments-video/template/tsconfig.json +27 -33
- package/src/templates/web/ui-only/template/next.config.js +14 -12
- package/src/templates/web/ui-only/template/package.json +15 -25
- package/src/templates/web/ui-only/template/postcss.config.mjs +8 -0
- package/src/templates/web/ui-only/template/src/app/error.tsx +67 -67
- package/src/templates/web/ui-only/template/src/app/globals.css +85 -31
- package/src/templates/web/ui-only/template/src/app/layout.tsx +4 -1
- package/src/templates/web/ui-only/template/src/app/loading.tsx +20 -20
- package/src/templates/web/ui-only/template/src/components/providers/app-providers.tsx +20 -26
- package/src/templates/web/ui-only/template/tsconfig.json +27 -33
- package/dist/templates/web/ai-platform/template/middleware.ts +0 -55
- package/dist/templates/web/ai-platform/template/src/lib/supabase/client.ts +0 -8
- package/dist/templates/web/ai-platform/template/src/lib/supabase/server.ts +0 -27
- package/dist/templates/web/base/template/postcss.config.js +0 -7
- package/dist/templates/web/base/template/tailwind.config.js +0 -77
- package/dist/templates/web/iot-dashboard/template/middleware.ts +0 -56
- package/dist/templates/web/iot-dashboard/template/src/lib/supabase/client.ts +0 -8
- package/dist/templates/web/iot-dashboard/template/src/lib/supabase/server.ts +0 -27
- package/dist/templates/web/marketplace/template/middleware.ts +0 -56
- package/dist/templates/web/marketplace/template/src/lib/supabase/client.ts +0 -8
- package/dist/templates/web/marketplace/template/src/lib/supabase/server.ts +0 -27
- package/dist/templates/web/micro-saas/template/middleware.ts +0 -53
- package/dist/templates/web/micro-saas/template/src/lib/supabase/client.ts +0 -8
- package/dist/templates/web/micro-saas/template/src/lib/supabase/server.ts +0 -29
- package/dist/templates/web/ui-auth/template/.claude +0 -21
- package/dist/templates/web/ui-auth/template/context.md +0 -105
- package/dist/templates/web/ui-auth/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-auth/template/tailwind.config.js +0 -77
- package/dist/templates/web/ui-auth-ai/template/postcss.config.js +0 -6
- package/dist/templates/web/ui-auth-ai/template/tailwind.config.js +0 -22
- package/dist/templates/web/ui-auth-payments/template/middleware.ts +0 -68
- package/dist/templates/web/ui-auth-payments/template/package-lock.json +0 -12240
- package/dist/templates/web/ui-auth-payments/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-auth-payments/template/tailwind.config.js +0 -77
- package/dist/templates/web/ui-auth-payments/template/tsconfig.tsbuildinfo +0 -1
- package/dist/templates/web/ui-auth-payments-ai/template/.claude +0 -21
- package/dist/templates/web/ui-auth-payments-ai/template/context.md +0 -169
- package/dist/templates/web/ui-auth-payments-ai/template/middleware.ts +0 -68
- package/dist/templates/web/ui-auth-payments-ai/template/package-lock.json +0 -12241
- package/dist/templates/web/ui-auth-payments-ai/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-auth-payments-ai/template/tailwind.config.js +0 -77
- package/dist/templates/web/ui-auth-payments-ai/template/tsconfig.tsbuildinfo +0 -1
- package/dist/templates/web/ui-auth-payments-audio/template/middleware.ts +0 -68
- package/dist/templates/web/ui-auth-payments-audio/template/package-lock.json +0 -12241
- package/dist/templates/web/ui-auth-payments-audio/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-auth-payments-audio/template/tailwind.config.js +0 -77
- package/dist/templates/web/ui-auth-payments-audio/template/tsconfig.tsbuildinfo +0 -1
- package/dist/templates/web/ui-auth-payments-video/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-auth-payments-video/template/tailwind.config.js +0 -77
- package/dist/templates/web/ui-only/template/postcss.config.js +0 -7
- package/dist/templates/web/ui-only/template/tailwind.config.js +0 -77
- package/src/templates/web/ai-platform/template/middleware.ts +0 -55
- package/src/templates/web/ai-platform/template/src/lib/supabase/client.ts +0 -8
- package/src/templates/web/ai-platform/template/src/lib/supabase/server.ts +0 -27
- package/src/templates/web/base/template/postcss.config.js +0 -7
- package/src/templates/web/base/template/tailwind.config.js +0 -77
- package/src/templates/web/iot-dashboard/template/middleware.ts +0 -56
- package/src/templates/web/iot-dashboard/template/src/lib/supabase/client.ts +0 -8
- package/src/templates/web/iot-dashboard/template/src/lib/supabase/server.ts +0 -27
- package/src/templates/web/marketplace/template/middleware.ts +0 -56
- package/src/templates/web/marketplace/template/src/lib/supabase/client.ts +0 -8
- package/src/templates/web/marketplace/template/src/lib/supabase/server.ts +0 -27
- package/src/templates/web/micro-saas/template/middleware.ts +0 -53
- package/src/templates/web/micro-saas/template/src/lib/supabase/client.ts +0 -8
- package/src/templates/web/micro-saas/template/src/lib/supabase/server.ts +0 -29
- package/src/templates/web/ui-auth/template/.claude +0 -21
- package/src/templates/web/ui-auth/template/context.md +0 -105
- package/src/templates/web/ui-auth/template/postcss.config.js +0 -7
- package/src/templates/web/ui-auth/template/tailwind.config.js +0 -77
- package/src/templates/web/ui-auth-ai/template/postcss.config.js +0 -6
- package/src/templates/web/ui-auth-ai/template/tailwind.config.js +0 -22
- package/src/templates/web/ui-auth-payments/template/middleware.ts +0 -68
- package/src/templates/web/ui-auth-payments/template/package-lock.json +0 -12240
- package/src/templates/web/ui-auth-payments/template/postcss.config.js +0 -7
- package/src/templates/web/ui-auth-payments/template/tailwind.config.js +0 -77
- package/src/templates/web/ui-auth-payments/template/tsconfig.tsbuildinfo +0 -1
- package/src/templates/web/ui-auth-payments-ai/template/.claude +0 -21
- package/src/templates/web/ui-auth-payments-ai/template/context.md +0 -169
- package/src/templates/web/ui-auth-payments-ai/template/middleware.ts +0 -68
- package/src/templates/web/ui-auth-payments-ai/template/package-lock.json +0 -12241
- package/src/templates/web/ui-auth-payments-ai/template/postcss.config.js +0 -7
- package/src/templates/web/ui-auth-payments-ai/template/tailwind.config.js +0 -77
- package/src/templates/web/ui-auth-payments-ai/template/tsconfig.tsbuildinfo +0 -1
- package/src/templates/web/ui-auth-payments-audio/template/middleware.ts +0 -68
- package/src/templates/web/ui-auth-payments-audio/template/package-lock.json +0 -12241
- package/src/templates/web/ui-auth-payments-audio/template/postcss.config.js +0 -7
- package/src/templates/web/ui-auth-payments-audio/template/tailwind.config.js +0 -77
- package/src/templates/web/ui-auth-payments-audio/template/tsconfig.tsbuildinfo +0 -1
- package/src/templates/web/ui-auth-payments-video/template/postcss.config.js +0 -7
- package/src/templates/web/ui-auth-payments-video/template/tailwind.config.js +0 -77
- package/src/templates/web/ui-only/template/postcss.config.js +0 -7
- package/src/templates/web/ui-only/template/tailwind.config.js +0 -77
- /package/dist/templates/shared/admin/web/{components → src/components}/admin-nav.tsx +0 -0
- /package/dist/templates/shared/auth/keycloak/web/{auth.config.ts → src/auth.config.ts} +0 -0
- /package/dist/templates/shared/auth/keycloak/web/{auth.ts → src/auth.ts} +0 -0
- /package/dist/templates/shared/middleware/web/{middleware.ts → src/middleware.ts} +0 -0
- /package/src/templates/shared/admin/web/{components → src/components}/admin-nav.tsx +0 -0
- /package/src/templates/shared/auth/keycloak/web/{auth.config.ts → src/auth.config.ts} +0 -0
- /package/src/templates/shared/auth/keycloak/web/{auth.ts → src/auth.ts} +0 -0
- /package/src/templates/shared/middleware/web/{middleware.ts → src/middleware.ts} +0 -0
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/** @type {import('tailwindcss').Config} */
|
|
2
|
-
module.exports = {
|
|
3
|
-
darkMode: ["class"],
|
|
4
|
-
content: [
|
|
5
|
-
'./pages/**/*.{ts,tsx}',
|
|
6
|
-
'./components/**/*.{ts,tsx}',
|
|
7
|
-
'./app/**/*.{ts,tsx}',
|
|
8
|
-
'./src/**/*.{ts,tsx}',
|
|
9
|
-
'../../node_modules/@digilogiclabs/saas-factory-ui/dist/**/*.{js,ts,jsx,tsx}',
|
|
10
|
-
],
|
|
11
|
-
theme: {
|
|
12
|
-
container: {
|
|
13
|
-
center: true,
|
|
14
|
-
padding: "2rem",
|
|
15
|
-
screens: {
|
|
16
|
-
"2xl": "1400px",
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
extend: {
|
|
20
|
-
colors: {
|
|
21
|
-
border: "hsl(var(--border))",
|
|
22
|
-
input: "hsl(var(--input))",
|
|
23
|
-
ring: "hsl(var(--ring))",
|
|
24
|
-
background: "hsl(var(--background))",
|
|
25
|
-
foreground: "hsl(var(--foreground))",
|
|
26
|
-
primary: {
|
|
27
|
-
DEFAULT: "hsl(var(--primary))",
|
|
28
|
-
foreground: "hsl(var(--primary-foreground))",
|
|
29
|
-
},
|
|
30
|
-
secondary: {
|
|
31
|
-
DEFAULT: "hsl(var(--secondary))",
|
|
32
|
-
foreground: "hsl(var(--secondary-foreground))",
|
|
33
|
-
},
|
|
34
|
-
destructive: {
|
|
35
|
-
DEFAULT: "hsl(var(--destructive))",
|
|
36
|
-
foreground: "hsl(var(--destructive-foreground))",
|
|
37
|
-
},
|
|
38
|
-
muted: {
|
|
39
|
-
DEFAULT: "hsl(var(--muted))",
|
|
40
|
-
foreground: "hsl(var(--muted-foreground))",
|
|
41
|
-
},
|
|
42
|
-
accent: {
|
|
43
|
-
DEFAULT: "hsl(var(--accent))",
|
|
44
|
-
foreground: "hsl(var(--accent-foreground))",
|
|
45
|
-
},
|
|
46
|
-
popover: {
|
|
47
|
-
DEFAULT: "hsl(var(--popover))",
|
|
48
|
-
foreground: "hsl(var(--popover-foreground))",
|
|
49
|
-
},
|
|
50
|
-
card: {
|
|
51
|
-
DEFAULT: "hsl(var(--card))",
|
|
52
|
-
foreground: "hsl(var(--card-foreground))",
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
borderRadius: {
|
|
56
|
-
lg: "var(--radius)",
|
|
57
|
-
md: "calc(var(--radius) - 2px)",
|
|
58
|
-
sm: "calc(var(--radius) - 4px)",
|
|
59
|
-
},
|
|
60
|
-
keyframes: {
|
|
61
|
-
"accordion-down": {
|
|
62
|
-
from: { height: 0 },
|
|
63
|
-
to: { height: "var(--radix-accordion-content-height)" },
|
|
64
|
-
},
|
|
65
|
-
"accordion-up": {
|
|
66
|
-
from: { height: "var(--radix-accordion-content-height)" },
|
|
67
|
-
to: { height: 0 },
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
animation: {
|
|
71
|
-
"accordion-down": "accordion-down 0.2s ease-out",
|
|
72
|
-
"accordion-up": "accordion-up 0.2s ease-out",
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
plugins: [require("tailwindcss-animate")],
|
|
77
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { createServerClient } from '@supabase/ssr'
|
|
2
|
-
import { NextResponse, type NextRequest } from 'next/server'
|
|
3
|
-
|
|
4
|
-
export async function middleware(request: NextRequest) {
|
|
5
|
-
let supabaseResponse = NextResponse.next({
|
|
6
|
-
request,
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
const supabase = createServerClient(
|
|
10
|
-
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
|
11
|
-
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
|
|
12
|
-
{
|
|
13
|
-
cookies: {
|
|
14
|
-
getAll() {
|
|
15
|
-
return request.cookies.getAll()
|
|
16
|
-
},
|
|
17
|
-
setAll(cookiesToSet: Array<{ name: string; value: string; options?: Record<string, unknown> }>) {
|
|
18
|
-
cookiesToSet.forEach(({ name, value }) =>
|
|
19
|
-
request.cookies.set(name, value)
|
|
20
|
-
)
|
|
21
|
-
supabaseResponse = NextResponse.next({
|
|
22
|
-
request,
|
|
23
|
-
})
|
|
24
|
-
cookiesToSet.forEach(({ name, value, options }) =>
|
|
25
|
-
supabaseResponse.cookies.set(name, value, options)
|
|
26
|
-
)
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
}
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
const {
|
|
33
|
-
data: { user },
|
|
34
|
-
} = await supabase.auth.getUser()
|
|
35
|
-
|
|
36
|
-
// Redirect to login if accessing protected route without auth
|
|
37
|
-
if (
|
|
38
|
-
!user &&
|
|
39
|
-
(request.nextUrl.pathname.startsWith('/dashboard') ||
|
|
40
|
-
request.nextUrl.pathname.startsWith('/devices') ||
|
|
41
|
-
request.nextUrl.pathname.startsWith('/analytics') ||
|
|
42
|
-
request.nextUrl.pathname.startsWith('/alerts'))
|
|
43
|
-
) {
|
|
44
|
-
const url = request.nextUrl.clone()
|
|
45
|
-
url.pathname = '/login'
|
|
46
|
-
return NextResponse.redirect(url)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return supabaseResponse
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export const config = {
|
|
53
|
-
matcher: [
|
|
54
|
-
'/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)',
|
|
55
|
-
],
|
|
56
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { createServerClient } from '@supabase/ssr'
|
|
2
|
-
import { cookies } from 'next/headers'
|
|
3
|
-
|
|
4
|
-
export async function createClient() {
|
|
5
|
-
const cookieStore = await cookies()
|
|
6
|
-
|
|
7
|
-
return createServerClient(
|
|
8
|
-
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
|
9
|
-
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
|
|
10
|
-
{
|
|
11
|
-
cookies: {
|
|
12
|
-
getAll() {
|
|
13
|
-
return cookieStore.getAll()
|
|
14
|
-
},
|
|
15
|
-
setAll(cookiesToSet: Array<{ name: string; value: string; options?: Record<string, unknown> }>) {
|
|
16
|
-
try {
|
|
17
|
-
cookiesToSet.forEach(({ name, value, options }) =>
|
|
18
|
-
cookieStore.set(name, value, options)
|
|
19
|
-
)
|
|
20
|
-
} catch {
|
|
21
|
-
// Server Component context
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
}
|
|
26
|
-
)
|
|
27
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { createServerClient } from '@supabase/ssr'
|
|
2
|
-
import { NextResponse, type NextRequest } from 'next/server'
|
|
3
|
-
|
|
4
|
-
export async function middleware(request: NextRequest) {
|
|
5
|
-
let supabaseResponse = NextResponse.next({
|
|
6
|
-
request,
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
const supabase = createServerClient(
|
|
10
|
-
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
|
11
|
-
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
|
|
12
|
-
{
|
|
13
|
-
cookies: {
|
|
14
|
-
getAll() {
|
|
15
|
-
return request.cookies.getAll()
|
|
16
|
-
},
|
|
17
|
-
setAll(cookiesToSet: Array<{ name: string; value: string; options?: Record<string, unknown> }>) {
|
|
18
|
-
cookiesToSet.forEach(({ name, value }) =>
|
|
19
|
-
request.cookies.set(name, value)
|
|
20
|
-
)
|
|
21
|
-
supabaseResponse = NextResponse.next({
|
|
22
|
-
request,
|
|
23
|
-
})
|
|
24
|
-
cookiesToSet.forEach(({ name, value, options }) =>
|
|
25
|
-
supabaseResponse.cookies.set(name, value, options)
|
|
26
|
-
)
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
}
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
const {
|
|
33
|
-
data: { user },
|
|
34
|
-
} = await supabase.auth.getUser()
|
|
35
|
-
|
|
36
|
-
// Redirect to login if accessing protected route without auth
|
|
37
|
-
if (
|
|
38
|
-
!user &&
|
|
39
|
-
(request.nextUrl.pathname.startsWith('/dashboard') ||
|
|
40
|
-
request.nextUrl.pathname.startsWith('/products/new') ||
|
|
41
|
-
request.nextUrl.pathname.startsWith('/orders') ||
|
|
42
|
-
request.nextUrl.pathname.startsWith('/payouts'))
|
|
43
|
-
) {
|
|
44
|
-
const url = request.nextUrl.clone()
|
|
45
|
-
url.pathname = '/login'
|
|
46
|
-
return NextResponse.redirect(url)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return supabaseResponse
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export const config = {
|
|
53
|
-
matcher: [
|
|
54
|
-
'/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)',
|
|
55
|
-
],
|
|
56
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { createServerClient } from '@supabase/ssr'
|
|
2
|
-
import { cookies } from 'next/headers'
|
|
3
|
-
|
|
4
|
-
export async function createClient() {
|
|
5
|
-
const cookieStore = await cookies()
|
|
6
|
-
|
|
7
|
-
return createServerClient(
|
|
8
|
-
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
|
9
|
-
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
|
|
10
|
-
{
|
|
11
|
-
cookies: {
|
|
12
|
-
getAll() {
|
|
13
|
-
return cookieStore.getAll()
|
|
14
|
-
},
|
|
15
|
-
setAll(cookiesToSet: Array<{ name: string; value: string; options?: Record<string, unknown> }>) {
|
|
16
|
-
try {
|
|
17
|
-
cookiesToSet.forEach(({ name, value, options }) =>
|
|
18
|
-
cookieStore.set(name, value, options)
|
|
19
|
-
)
|
|
20
|
-
} catch {
|
|
21
|
-
// Server Component context
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
}
|
|
26
|
-
)
|
|
27
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { createServerClient } from '@supabase/ssr'
|
|
2
|
-
import { NextResponse, type NextRequest } from 'next/server'
|
|
3
|
-
|
|
4
|
-
export async function middleware(request: NextRequest) {
|
|
5
|
-
let supabaseResponse = NextResponse.next({
|
|
6
|
-
request,
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
const supabase = createServerClient(
|
|
10
|
-
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
|
11
|
-
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
|
|
12
|
-
{
|
|
13
|
-
cookies: {
|
|
14
|
-
getAll() {
|
|
15
|
-
return request.cookies.getAll()
|
|
16
|
-
},
|
|
17
|
-
setAll(cookiesToSet: Array<{ name: string; value: string; options?: Record<string, unknown> }>) {
|
|
18
|
-
cookiesToSet.forEach(({ name, value }) =>
|
|
19
|
-
request.cookies.set(name, value)
|
|
20
|
-
)
|
|
21
|
-
supabaseResponse = NextResponse.next({
|
|
22
|
-
request,
|
|
23
|
-
})
|
|
24
|
-
cookiesToSet.forEach(({ name, value, options }) =>
|
|
25
|
-
supabaseResponse.cookies.set(name, value, options)
|
|
26
|
-
)
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
}
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
const {
|
|
33
|
-
data: { user },
|
|
34
|
-
} = await supabase.auth.getUser()
|
|
35
|
-
|
|
36
|
-
// Redirect to login if accessing protected route without auth
|
|
37
|
-
if (
|
|
38
|
-
!user &&
|
|
39
|
-
request.nextUrl.pathname.startsWith('/dashboard')
|
|
40
|
-
) {
|
|
41
|
-
const url = request.nextUrl.clone()
|
|
42
|
-
url.pathname = '/login'
|
|
43
|
-
return NextResponse.redirect(url)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return supabaseResponse
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export const config = {
|
|
50
|
-
matcher: [
|
|
51
|
-
'/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)',
|
|
52
|
-
],
|
|
53
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { createServerClient } from '@supabase/ssr'
|
|
2
|
-
import { cookies } from 'next/headers'
|
|
3
|
-
|
|
4
|
-
export async function createClient() {
|
|
5
|
-
const cookieStore = await cookies()
|
|
6
|
-
|
|
7
|
-
return createServerClient(
|
|
8
|
-
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
|
9
|
-
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
|
|
10
|
-
{
|
|
11
|
-
cookies: {
|
|
12
|
-
getAll() {
|
|
13
|
-
return cookieStore.getAll()
|
|
14
|
-
},
|
|
15
|
-
setAll(cookiesToSet: Array<{ name: string; value: string; options?: Record<string, unknown> }>) {
|
|
16
|
-
try {
|
|
17
|
-
cookiesToSet.forEach(({ name, value, options }) =>
|
|
18
|
-
cookieStore.set(name, value, options)
|
|
19
|
-
)
|
|
20
|
-
} catch {
|
|
21
|
-
// The `setAll` method was called from a Server Component.
|
|
22
|
-
// This can be ignored if you have middleware refreshing
|
|
23
|
-
// user sessions.
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
}
|
|
28
|
-
)
|
|
29
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "{{projectName}}",
|
|
3
|
-
"description": "{{description}} - Authentication Platform built with Digi Logic Labs packages",
|
|
4
|
-
"include": [
|
|
5
|
-
"src/**/*",
|
|
6
|
-
"*.md",
|
|
7
|
-
"*.json",
|
|
8
|
-
"*.js",
|
|
9
|
-
"*.ts",
|
|
10
|
-
".env.example"
|
|
11
|
-
],
|
|
12
|
-
"exclude": [
|
|
13
|
-
"node_modules/**/*",
|
|
14
|
-
".next/**/*",
|
|
15
|
-
"dist/**/*",
|
|
16
|
-
"build/**/*",
|
|
17
|
-
"*.log",
|
|
18
|
-
".claude"
|
|
19
|
-
],
|
|
20
|
-
"instructions": "You are helping develop an Authentication Platform using Next.js 15, TypeScript, and Digi Logic Labs packages.\n\n## Project Architecture\n- **Framework**: Next.js 15.3 with App Router\n- **Database**: Supabase (PostgreSQL with real-time features)\n- **Styling**: Tailwind CSS v4 with glassmorphism design system\n- **Authentication**: Supabase Auth with @digilogiclabs/app-sdk\n\n## Key Packages\n- **@digilogiclabs/app-sdk**: Authentication components and hooks with Supabase integration\n- **@digilogiclabs/saas-factory-ui**: Modern UI components with glassmorphism and responsive design\n\n## Development Guidelines\n1. Follow Next.js 15 best practices with Server Components by default\n2. Use TypeScript strictly - all components should be typed\n3. Implement proper error boundaries and loading states\n4. Follow the glassmorphism design system from saas-factory-ui\n5. Use Server Actions for mutations and API routes for complex logic\n6. Always check authentication state with useAuth hook\n\n## File Organization\n- Components in /src/components with feature-based folders\n- Server actions in /src/server/actions\n- API routes in /src/app/api\n- Database queries in /src/server/queries\n- Types in /src/types\n\n## Testing\n- Use Vitest for unit tests\n- Test business logic and error states\n- Mock external services (Supabase)\n\nRemember to consult the context.md file for detailed package documentation and examples."
|
|
21
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# {{projectName}} - Development Context
|
|
2
|
-
|
|
3
|
-
This project is an Authentication Platform built with modern technologies and Digi Logic Labs packages.
|
|
4
|
-
|
|
5
|
-
## Architecture Overview
|
|
6
|
-
|
|
7
|
-
### Core Technologies
|
|
8
|
-
- **Next.js 15.3**: App Router, Server Components, Server Actions
|
|
9
|
-
- **TypeScript**: Strict typing throughout
|
|
10
|
-
- **Tailwind CSS v4**: Design tokens, glassmorphism system
|
|
11
|
-
- **Supabase**: Database, authentication, real-time features
|
|
12
|
-
|
|
13
|
-
### Package Integration
|
|
14
|
-
|
|
15
|
-
#### @digilogiclabs/app-sdk
|
|
16
|
-
Unified application SDK with auth and payments hooks
|
|
17
|
-
|
|
18
|
-
**Key Exports**: useAuth, usePayments, DLLProvider, usePlatform
|
|
19
|
-
**Documentation**: https://docs.digilogiclabs.com/packages/app-sdk
|
|
20
|
-
|
|
21
|
-
#### @digilogiclabs/saas-factory-ui
|
|
22
|
-
Modern UI components with glassmorphism and responsive design
|
|
23
|
-
|
|
24
|
-
**Key Exports**: Button, Card, MobileContainer, PageTransition, ResponsiveGrid
|
|
25
|
-
**Documentation**: https://docs.digilogiclabs.com/packages/ui
|
|
26
|
-
|
|
27
|
-
## Environment Configuration
|
|
28
|
-
|
|
29
|
-
Required environment variables:
|
|
30
|
-
```bash
|
|
31
|
-
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
|
|
32
|
-
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
|
|
33
|
-
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_key
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Database Schema
|
|
37
|
-
|
|
38
|
-
Key tables:
|
|
39
|
-
- **profiles**: User profile information
|
|
40
|
-
|
|
41
|
-
## Common Patterns
|
|
42
|
-
|
|
43
|
-
### Authentication Flow
|
|
44
|
-
```typescript
|
|
45
|
-
import { useAuth } from '@digilogiclabs/app-sdk'
|
|
46
|
-
|
|
47
|
-
export function ProtectedComponent() {
|
|
48
|
-
const { user, loading } = useAuth()
|
|
49
|
-
|
|
50
|
-
if (loading) return <LoadingSpinner />
|
|
51
|
-
if (!user) return <LoginPrompt />
|
|
52
|
-
|
|
53
|
-
return <UserContent user={user} />
|
|
54
|
-
}
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### UI Components
|
|
58
|
-
```typescript
|
|
59
|
-
import {
|
|
60
|
-
Card,
|
|
61
|
-
Button,
|
|
62
|
-
PageTransition,
|
|
63
|
-
useGlassmorphism
|
|
64
|
-
} from '@digilogiclabs/saas-factory-ui'
|
|
65
|
-
|
|
66
|
-
export function ExampleComponent() {
|
|
67
|
-
const glass = useGlassmorphism()
|
|
68
|
-
|
|
69
|
-
return (
|
|
70
|
-
<PageTransition type="fade">
|
|
71
|
-
<Card className={`${glass.card} ${glass.border}`}>
|
|
72
|
-
<Button variant="default">Action</Button>
|
|
73
|
-
</Card>
|
|
74
|
-
</PageTransition>
|
|
75
|
-
)
|
|
76
|
-
}
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Development Workflow
|
|
80
|
-
|
|
81
|
-
1. **Setup**: Run setup guide at /setup
|
|
82
|
-
2. **Development**: `npm run dev` with hot reload
|
|
83
|
-
3. **Testing**: `npm run test` with Vitest
|
|
84
|
-
4. **Building**: `npm run build` for production
|
|
85
|
-
5. **Deployment**: See deployment guide at /dev-setup
|
|
86
|
-
|
|
87
|
-
## Troubleshooting
|
|
88
|
-
|
|
89
|
-
### Common Issues
|
|
90
|
-
- **Environment Variables**: Check .env.local file exists and variables are correct
|
|
91
|
-
- **Database Connection**: Verify Supabase project settings and RLS policies
|
|
92
|
-
|
|
93
|
-
### Debug Commands
|
|
94
|
-
```bash
|
|
95
|
-
npm run type-check # TypeScript validation
|
|
96
|
-
npm run lint # ESLint validation
|
|
97
|
-
npm run test # Run test suite
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Resources
|
|
101
|
-
|
|
102
|
-
- **Package Documentation**: https://docs.digilogiclabs.com
|
|
103
|
-
- **Support Discord**: https://discord.gg/digilogiclabs
|
|
104
|
-
- **Example Projects**: https://github.com/digilogiclabs/examples
|
|
105
|
-
- **Setup Guide**: /setup page in this application
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/** @type {import('tailwindcss').Config} */
|
|
2
|
-
module.exports = {
|
|
3
|
-
darkMode: ["class"],
|
|
4
|
-
content: [
|
|
5
|
-
'./pages/**/*.{ts,tsx}',
|
|
6
|
-
'./components/**/*.{ts,tsx}',
|
|
7
|
-
'./app/**/*.{ts,tsx}',
|
|
8
|
-
'./src/**/*.{ts,tsx}',
|
|
9
|
-
'../../node_modules/@digilogiclabs/saas-factory-ui/dist/**/*.{js,ts,jsx,tsx}',
|
|
10
|
-
],
|
|
11
|
-
theme: {
|
|
12
|
-
container: {
|
|
13
|
-
center: true,
|
|
14
|
-
padding: "2rem",
|
|
15
|
-
screens: {
|
|
16
|
-
"2xl": "1400px",
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
extend: {
|
|
20
|
-
colors: {
|
|
21
|
-
border: "hsl(var(--border))",
|
|
22
|
-
input: "hsl(var(--input))",
|
|
23
|
-
ring: "hsl(var(--ring))",
|
|
24
|
-
background: "hsl(var(--background))",
|
|
25
|
-
foreground: "hsl(var(--foreground))",
|
|
26
|
-
primary: {
|
|
27
|
-
DEFAULT: "hsl(var(--primary))",
|
|
28
|
-
foreground: "hsl(var(--primary-foreground))",
|
|
29
|
-
},
|
|
30
|
-
secondary: {
|
|
31
|
-
DEFAULT: "hsl(var(--secondary))",
|
|
32
|
-
foreground: "hsl(var(--secondary-foreground))",
|
|
33
|
-
},
|
|
34
|
-
destructive: {
|
|
35
|
-
DEFAULT: "hsl(var(--destructive))",
|
|
36
|
-
foreground: "hsl(var(--destructive-foreground))",
|
|
37
|
-
},
|
|
38
|
-
muted: {
|
|
39
|
-
DEFAULT: "hsl(var(--muted))",
|
|
40
|
-
foreground: "hsl(var(--muted-foreground))",
|
|
41
|
-
},
|
|
42
|
-
accent: {
|
|
43
|
-
DEFAULT: "hsl(var(--accent))",
|
|
44
|
-
foreground: "hsl(var(--accent-foreground))",
|
|
45
|
-
},
|
|
46
|
-
popover: {
|
|
47
|
-
DEFAULT: "hsl(var(--popover))",
|
|
48
|
-
foreground: "hsl(var(--popover-foreground))",
|
|
49
|
-
},
|
|
50
|
-
card: {
|
|
51
|
-
DEFAULT: "hsl(var(--card))",
|
|
52
|
-
foreground: "hsl(var(--card-foreground))",
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
borderRadius: {
|
|
56
|
-
lg: "var(--radius)",
|
|
57
|
-
md: "calc(var(--radius) - 2px)",
|
|
58
|
-
sm: "calc(var(--radius) - 4px)",
|
|
59
|
-
},
|
|
60
|
-
keyframes: {
|
|
61
|
-
"accordion-down": {
|
|
62
|
-
from: { height: 0 },
|
|
63
|
-
to: { height: "var(--radix-accordion-content-height)" },
|
|
64
|
-
},
|
|
65
|
-
"accordion-up": {
|
|
66
|
-
from: { height: "var(--radix-accordion-content-height)" },
|
|
67
|
-
to: { height: 0 },
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
animation: {
|
|
71
|
-
"accordion-down": "accordion-down 0.2s ease-out",
|
|
72
|
-
"accordion-up": "accordion-up 0.2s ease-out",
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
plugins: [],
|
|
77
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/** @type {import('tailwindcss').Config} */
|
|
2
|
-
module.exports = {
|
|
3
|
-
content: [
|
|
4
|
-
'./pages/**/*.{js,ts,jsx,tsx,mdx}',
|
|
5
|
-
'./components/**/*.{js,ts,jsx,tsx,mdx}',
|
|
6
|
-
'./app/**/*.{js,ts,jsx,tsx,mdx}',
|
|
7
|
-
'./src/**/*.{js,ts,jsx,tsx,mdx}',
|
|
8
|
-
],
|
|
9
|
-
theme: {
|
|
10
|
-
extend: {
|
|
11
|
-
colors: {
|
|
12
|
-
primary: {
|
|
13
|
-
50: '#eff6ff',
|
|
14
|
-
500: '#3b82f6',
|
|
15
|
-
600: '#2563eb',
|
|
16
|
-
700: '#1d4ed8',
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
plugins: [],
|
|
22
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { NextRequest, NextResponse } from 'next/server'
|
|
2
|
-
import { env } from './src/lib/env'
|
|
3
|
-
|
|
4
|
-
export async function middleware(request: NextRequest) {
|
|
5
|
-
// Get auth token from cookies
|
|
6
|
-
const authToken = request.cookies.get('saas-factory-auth-token')?.value
|
|
7
|
-
const user = request.cookies.get('saas-factory-auth-user')?.value
|
|
8
|
-
|
|
9
|
-
const isAuthenticated = !!(authToken && user)
|
|
10
|
-
const { pathname } = request.nextUrl
|
|
11
|
-
|
|
12
|
-
// Define protected routes
|
|
13
|
-
const protectedRoutes = ['/dashboard', '/profile', '/settings']
|
|
14
|
-
const authRoutes = ['/login', '/signup']
|
|
15
|
-
|
|
16
|
-
// Check if the current path is protected
|
|
17
|
-
const isProtectedRoute = protectedRoutes.some(route =>
|
|
18
|
-
pathname.startsWith(route)
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
// Check if the current path is an auth route
|
|
22
|
-
const isAuthRoute = authRoutes.some(route =>
|
|
23
|
-
pathname.startsWith(route)
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
// Redirect unauthenticated users from protected routes
|
|
27
|
-
if (isProtectedRoute && !isAuthenticated) {
|
|
28
|
-
const loginUrl = new URL('/login', request.url)
|
|
29
|
-
loginUrl.searchParams.set('from', pathname)
|
|
30
|
-
return NextResponse.redirect(loginUrl)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Redirect authenticated users from auth routes
|
|
34
|
-
if (isAuthRoute && isAuthenticated) {
|
|
35
|
-
const redirectUrl = request.nextUrl.searchParams.get('from') || '/'
|
|
36
|
-
return NextResponse.redirect(new URL(redirectUrl, request.url))
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Add security headers
|
|
40
|
-
const response = NextResponse.next()
|
|
41
|
-
|
|
42
|
-
// Add CSRF protection headers
|
|
43
|
-
response.headers.set('X-Frame-Options', 'DENY')
|
|
44
|
-
response.headers.set('X-Content-Type-Options', 'nosniff')
|
|
45
|
-
response.headers.set('Referrer-Policy', 'origin-when-cross-origin')
|
|
46
|
-
|
|
47
|
-
// Add CSP header for additional security
|
|
48
|
-
if (env.NODE_ENV === 'production') {
|
|
49
|
-
response.headers.set(
|
|
50
|
-
'Content-Security-Policy',
|
|
51
|
-
"default-src 'self'; script-src 'self' 'unsafe-eval' 'unsafe-inline' https://js.stripe.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https:; connect-src 'self' https://api.stripe.com"
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return response
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export const config = {
|
|
59
|
-
matcher: [
|
|
60
|
-
// Match all request paths except for the ones starting with:
|
|
61
|
-
// - api (API routes)
|
|
62
|
-
// - _next/static (static files)
|
|
63
|
-
// - _next/image (image optimization files)
|
|
64
|
-
// - favicon.ico (favicon file)
|
|
65
|
-
// - public folder files
|
|
66
|
-
'/((?!api|_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)',
|
|
67
|
-
],
|
|
68
|
-
}
|