@digilogiclabs/create-saas-app 1.1.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -7
- package/README.md +5 -5
- package/bin/index.js +36 -36
- package/dist/.tsbuildinfo +1 -1
- package/dist/index.js +64 -20
- package/dist/index.js.map +1 -1
- package/dist/templates/mobile/base/template/.env.example +15 -15
- package/dist/templates/mobile/base/template/app/checkout.tsx +20 -20
- package/dist/templates/web/base/template/src/app/checkout/page.tsx +28 -28
- package/dist/templates/web/base/template/src/app/page.tsx +1 -1
- package/dist/templates/web/ui-auth/template/next.config.js +12 -0
- package/dist/templates/web/ui-auth/template/package.json +40 -0
- package/dist/templates/web/ui-auth/template/postcss.config.js +7 -0
- package/dist/templates/web/ui-auth/template/src/app/auth/callback/route.ts +12 -0
- package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth}/template/src/app/checkout/page.tsx +25 -28
- package/dist/templates/web/ui-auth/template/src/app/globals.css +42 -0
- package/dist/templates/web/ui-auth/template/src/app/layout.tsx +29 -0
- package/dist/templates/web/ui-auth/template/src/app/login/page.tsx +109 -0
- package/dist/templates/web/ui-auth/template/src/app/page.tsx +129 -0
- package/dist/templates/web/ui-auth/template/src/app/signup/page.tsx +128 -0
- package/dist/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +25 -0
- package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth}/template/src/components/shared/header.tsx +17 -8
- package/dist/templates/web/ui-auth/template/src/components/ui/badge.tsx +36 -0
- package/dist/templates/web/ui-auth/template/src/lib/utils.ts +7 -0
- package/dist/templates/web/ui-auth/template/tailwind.config.js +77 -0
- package/dist/templates/web/ui-auth/template/tsconfig.json +33 -0
- package/dist/templates/web/ui-auth-payments/template/README.md +165 -0
- package/dist/templates/web/ui-auth-payments/template/next.config.js +12 -0
- package/dist/templates/web/ui-auth-payments/template/package.json +42 -0
- package/dist/templates/web/ui-auth-payments/template/postcss.config.js +7 -0
- package/dist/templates/web/ui-auth-payments/template/src/app/auth/callback/route.ts +12 -0
- package/dist/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +211 -0
- package/dist/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +142 -0
- package/dist/templates/web/ui-auth-payments/template/src/app/globals.css +42 -0
- package/dist/templates/web/ui-auth-payments/template/src/app/layout.tsx +29 -0
- package/dist/templates/web/ui-auth-payments/template/src/app/login/page.tsx +109 -0
- package/dist/templates/web/ui-auth-payments/template/src/app/page.tsx +143 -0
- package/dist/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +128 -0
- package/dist/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +28 -0
- package/dist/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +60 -0
- package/dist/templates/web/ui-auth-payments/template/src/components/ui/badge.tsx +36 -0
- package/dist/templates/web/ui-auth-payments/template/src/lib/utils.ts +7 -0
- package/dist/templates/web/ui-auth-payments/template/tailwind.config.js +77 -0
- package/dist/templates/web/ui-auth-payments/template/tsconfig.json +33 -0
- package/dist/templates/web/ui-auth-payments-audio/template/README.md +187 -0
- package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-audio}/template/next.config.js +0 -3
- package/dist/templates/web/ui-auth-payments-audio/template/package.json +42 -0
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/auth/callback/route.ts +12 -0
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +211 -0
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +142 -0
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/login/page.tsx +109 -0
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +181 -0
- package/dist/templates/web/ui-auth-payments-audio/template/src/app/signup/page.tsx +128 -0
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +28 -0
- package/dist/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +60 -0
- package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-audio}/template/tailwind.config.js +1 -1
- package/dist/templates/web/ui-auth-payments-video/template/README.md +190 -0
- package/dist/templates/web/{web-ui-package → ui-auth-payments-video}/template/next.config.js +0 -3
- package/dist/templates/web/ui-auth-payments-video/template/package.json +42 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/app/auth/callback/route.ts +12 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +211 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +142 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +109 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/app/page.tsx +187 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +128 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +28 -0
- package/dist/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +60 -0
- package/dist/templates/web/{web-ui-package → ui-auth-payments-video}/template/tailwind.config.js +1 -1
- package/dist/templates/web/ui-only/template/next.config.js +12 -0
- package/dist/templates/web/{web-ui-package → ui-only}/template/package.json +3 -3
- package/dist/templates/web/ui-only/template/postcss.config.js +7 -0
- package/dist/templates/web/ui-only/template/src/app/auth/callback/route.ts +12 -0
- package/dist/templates/web/{web-ui-package → ui-only}/template/src/app/checkout/page.tsx +25 -28
- package/dist/templates/web/ui-only/template/src/app/globals.css +42 -0
- package/dist/templates/web/ui-only/template/src/app/layout.tsx +29 -0
- package/dist/templates/web/ui-only/template/src/app/login/page.tsx +63 -0
- package/dist/templates/web/ui-only/template/src/app/signup/page.tsx +79 -0
- package/dist/templates/web/ui-only/template/src/components/providers/app-providers.tsx +22 -0
- package/dist/templates/web/{web-ui-package → ui-only}/template/src/components/shared/header.tsx +17 -8
- package/dist/templates/web/ui-only/template/src/components/ui/badge.tsx +36 -0
- package/dist/templates/web/ui-only/template/src/lib/utils.ts +7 -0
- package/dist/templates/web/ui-only/template/tailwind.config.js +77 -0
- package/dist/templates/web/ui-only/template/tsconfig.json +33 -0
- package/dist/templates/web/ui-package-test/template/package.json +2 -2
- package/package.json +2 -2
- package/src/templates/mobile/base/template/.env.example +15 -15
- package/src/templates/mobile/base/template/app/checkout.tsx +20 -20
- package/src/templates/web/base/template/src/app/checkout/page.tsx +28 -28
- package/src/templates/web/base/template/src/app/page.tsx +1 -1
- package/src/templates/web/ui-auth/template/README.md +68 -0
- package/src/templates/web/ui-auth/template/next.config.js +12 -0
- package/src/templates/web/ui-auth/template/package.json +40 -0
- package/src/templates/web/ui-auth/template/postcss.config.js +7 -0
- package/src/templates/web/ui-auth/template/src/app/auth/callback/route.ts +12 -0
- package/src/templates/web/ui-auth/template/src/app/checkout/page.tsx +25 -0
- package/src/templates/web/ui-auth/template/src/app/globals.css +42 -0
- package/src/templates/web/ui-auth/template/src/app/layout.tsx +29 -0
- package/src/templates/web/ui-auth/template/src/app/login/page.tsx +109 -0
- package/src/templates/web/ui-auth/template/src/app/page.tsx +129 -0
- package/src/templates/web/ui-auth/template/src/app/signup/page.tsx +128 -0
- package/src/templates/web/ui-auth/template/src/components/providers/app-providers.tsx +25 -0
- package/src/templates/web/ui-auth/template/src/components/shared/header.tsx +51 -0
- package/src/templates/web/ui-auth/template/src/components/ui/badge.tsx +36 -0
- package/src/templates/web/ui-auth/template/src/lib/utils.ts +7 -0
- package/src/templates/web/ui-auth/template/tailwind.config.js +77 -0
- package/src/templates/web/ui-auth/template/tsconfig.json +33 -0
- package/src/templates/web/ui-auth-payments/template/README.md +165 -0
- package/src/templates/web/ui-auth-payments/template/next.config.js +12 -0
- package/src/templates/web/ui-auth-payments/template/package.json +42 -0
- package/src/templates/web/ui-auth-payments/template/postcss.config.js +7 -0
- package/src/templates/web/ui-auth-payments/template/src/app/auth/callback/route.ts +12 -0
- package/src/templates/web/ui-auth-payments/template/src/app/billing/page.tsx +211 -0
- package/src/templates/web/ui-auth-payments/template/src/app/checkout/page.tsx +142 -0
- package/src/templates/web/ui-auth-payments/template/src/app/globals.css +42 -0
- package/src/templates/web/ui-auth-payments/template/src/app/layout.tsx +29 -0
- package/src/templates/web/ui-auth-payments/template/src/app/login/page.tsx +109 -0
- package/src/templates/web/ui-auth-payments/template/src/app/page.tsx +143 -0
- package/src/templates/web/ui-auth-payments/template/src/app/signup/page.tsx +128 -0
- package/src/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx +28 -0
- package/src/templates/web/ui-auth-payments/template/src/components/shared/header.tsx +60 -0
- package/src/templates/web/ui-auth-payments/template/src/components/ui/badge.tsx +36 -0
- package/src/templates/web/ui-auth-payments/template/src/lib/utils.ts +7 -0
- package/src/templates/web/ui-auth-payments/template/tailwind.config.js +77 -0
- package/src/templates/web/ui-auth-payments/template/tsconfig.json +33 -0
- package/src/templates/web/ui-auth-payments-audio/template/README.md +187 -0
- package/src/templates/web/ui-auth-payments-audio/template/next.config.js +12 -0
- package/src/templates/web/ui-auth-payments-audio/template/package.json +42 -0
- package/src/templates/web/ui-auth-payments-audio/template/postcss.config.js +7 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/app/auth/callback/route.ts +12 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/app/billing/page.tsx +211 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/app/checkout/page.tsx +142 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/app/globals.css +42 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/app/layout.tsx +29 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/app/login/page.tsx +109 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/app/page.tsx +181 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/app/signup/page.tsx +128 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/components/providers/app-providers.tsx +28 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/components/shared/header.tsx +60 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/components/ui/badge.tsx +36 -0
- package/src/templates/web/ui-auth-payments-audio/template/src/lib/utils.ts +7 -0
- package/src/templates/web/ui-auth-payments-audio/template/tailwind.config.js +77 -0
- package/src/templates/web/ui-auth-payments-audio/template/tsconfig.json +33 -0
- package/src/templates/web/ui-auth-payments-video/template/README.md +190 -0
- package/src/templates/web/ui-auth-payments-video/template/next.config.js +12 -0
- package/src/templates/web/ui-auth-payments-video/template/package.json +42 -0
- package/src/templates/web/ui-auth-payments-video/template/postcss.config.js +7 -0
- package/src/templates/web/ui-auth-payments-video/template/src/app/auth/callback/route.ts +12 -0
- package/src/templates/web/ui-auth-payments-video/template/src/app/billing/page.tsx +211 -0
- package/src/templates/web/ui-auth-payments-video/template/src/app/checkout/page.tsx +142 -0
- package/src/templates/web/ui-auth-payments-video/template/src/app/globals.css +42 -0
- package/src/templates/web/ui-auth-payments-video/template/src/app/layout.tsx +29 -0
- package/src/templates/web/ui-auth-payments-video/template/src/app/login/page.tsx +109 -0
- package/src/templates/web/ui-auth-payments-video/template/src/app/page.tsx +187 -0
- package/src/templates/web/ui-auth-payments-video/template/src/app/signup/page.tsx +128 -0
- package/src/templates/web/ui-auth-payments-video/template/src/components/providers/app-providers.tsx +28 -0
- package/src/templates/web/ui-auth-payments-video/template/src/components/shared/header.tsx +60 -0
- package/src/templates/web/ui-auth-payments-video/template/src/components/ui/badge.tsx +36 -0
- package/src/templates/web/ui-auth-payments-video/template/src/lib/utils.ts +7 -0
- package/src/templates/web/ui-auth-payments-video/template/tailwind.config.js +77 -0
- package/src/templates/web/ui-auth-payments-video/template/tsconfig.json +33 -0
- package/src/templates/web/ui-only/template/.env.example +15 -0
- package/src/templates/web/ui-only/template/README.md +68 -0
- package/src/templates/web/ui-only/template/next.config.js +12 -0
- package/src/templates/web/{web-ui-package → ui-only}/template/package.json +3 -3
- package/src/templates/web/ui-only/template/postcss.config.js +7 -0
- package/src/templates/web/ui-only/template/src/app/auth/callback/route.ts +12 -0
- package/src/templates/web/ui-only/template/src/app/checkout/page.tsx +25 -0
- package/src/templates/web/ui-only/template/src/app/globals.css +42 -0
- package/src/templates/web/ui-only/template/src/app/layout.tsx +29 -0
- package/src/templates/web/ui-only/template/src/app/login/page.tsx +63 -0
- package/src/templates/web/ui-only/template/src/app/signup/page.tsx +79 -0
- package/src/templates/web/ui-only/template/src/components/providers/app-providers.tsx +22 -0
- package/src/templates/web/ui-only/template/src/components/shared/header.tsx +51 -0
- package/src/templates/web/ui-only/template/src/components/ui/badge.tsx +36 -0
- package/src/templates/web/ui-only/template/src/lib/utils.ts +7 -0
- package/src/templates/web/ui-only/template/tailwind.config.js +77 -0
- package/src/templates/web/ui-only/template/tsconfig.json +33 -0
- package/src/templates/web/ui-only/template.backup/.env.example +15 -0
- package/{dist/mobile/base/template → src/templates/web/ui-only/template.backup.20250817}/.env.example +15 -15
- package/src/templates/web/ui-package-test/template/package.json +2 -2
- package/dist/templates/web/web-ui-package/template/src/app/auth/callback/route.ts +0 -18
- package/dist/templates/web/web-ui-package/template/src/app/login/page.tsx +0 -39
- package/dist/templates/web/web-ui-package/template/src/app/signup/page.tsx +0 -39
- package/dist/templates/web/web-ui-package/template/src/components/providers/app-providers.tsx +0 -29
- package/src/templates/web/web-ui-package/template/.eslintrc.js +0 -8
- package/src/templates/web/web-ui-package/template/src/app/auth/callback/route.ts +0 -18
- package/src/templates/web/web-ui-package/template/src/app/login/page.tsx +0 -39
- package/src/templates/web/web-ui-package/template/src/app/signup/page.tsx +0 -39
- package/src/templates/web/web-ui-package/template/src/components/providers/app-providers.tsx +0 -29
- /package/dist/{web/base → templates/web/ui-auth}/template/.env.example +0 -0
- /package/dist/templates/web/{web-ui-package → ui-auth}/template/.eslintrc.js +0 -0
- /package/dist/templates/web/{web-ui-package → ui-auth}/template/README.md +0 -0
- /package/dist/{web/base → templates/web/ui-auth}/template.backup/.env.example +0 -0
- /package/dist/{web/base → templates/web/ui-auth}/template.backup.20250817/.env.example +0 -0
- /package/dist/templates/web/{web-ui-package → ui-auth-payments}/template/.env.example +0 -0
- /package/dist/templates/web/{web-ui-package/template.backup.20250817 → ui-auth-payments-audio/template}/.env.example +0 -0
- /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/postcss.config.js +0 -0
- /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/src/app/globals.css +0 -0
- /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/src/app/layout.tsx +0 -0
- /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/src/components/ui/badge.tsx +0 -0
- /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/src/lib/utils.ts +0 -0
- /package/dist/templates/web/{web-ui-package → ui-auth-payments-audio}/template/tsconfig.json +0 -0
- /package/dist/templates/web/{web-ui-package/template.backup → ui-auth-payments-video/template}/.env.example +0 -0
- /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/postcss.config.js +0 -0
- /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/src/app/globals.css +0 -0
- /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/src/app/layout.tsx +0 -0
- /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/src/components/ui/badge.tsx +0 -0
- /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/src/lib/utils.ts +0 -0
- /package/{src/templates/web/web-ui-package → dist/templates/web/ui-auth-payments-video}/template/tsconfig.json +0 -0
- /package/dist/{web/ui-package-test → templates/web/ui-only}/template/.env.example +0 -0
- /package/dist/{web/base → templates/web/ui-only}/template/.eslintrc.js +0 -0
- /package/{src/templates/web/web-ui-package → dist/templates/web/ui-only}/template/README.md +0 -0
- /package/dist/templates/web/{web-ui-package → ui-only}/template/src/app/page.tsx +0 -0
- /package/dist/{web/ui-package-test → templates/web/ui-only}/template.backup/.env.example +0 -0
- /package/dist/{web/ui-package-test → templates/web/ui-only}/template.backup.20250817/.env.example +0 -0
- /package/src/templates/web/{web-ui-package → ui-auth}/template/.env.example +0 -0
- /package/{dist/web/ui-package-test → src/templates/web/ui-auth}/template/.eslintrc.js +0 -0
- /package/src/templates/web/{web-ui-package → ui-auth}/template.backup/.env.example +0 -0
- /package/src/templates/web/{web-ui-package → ui-auth}/template.backup.20250817/.env.example +0 -0
- /package/{dist/web/web-ui-package → src/templates/web/ui-auth-payments}/template/.env.example +0 -0
- /package/{dist/web/web-ui-package/template.backup.20250817 → src/templates/web/ui-auth-payments-audio/template}/.env.example +0 -0
- /package/{dist/web/web-ui-package/template.backup → src/templates/web/ui-auth-payments-video/template}/.env.example +0 -0
- /package/{dist/web/web-ui-package → src/templates/web/ui-only}/template/.eslintrc.js +0 -0
- /package/src/templates/web/{web-ui-package → ui-only}/template/src/app/page.tsx +0 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import React, { useState } from 'react';
|
|
4
|
+
import { Button, Card, Input, Label } from '@digilogiclabs/saas-factory-ui';
|
|
5
|
+
import { useAuth } from '@digilogiclabs/saas-factory-auth';
|
|
6
|
+
import { useRouter } from 'next/navigation';
|
|
7
|
+
|
|
8
|
+
export default function SignupPage() {
|
|
9
|
+
const [email, setEmail] = useState('');
|
|
10
|
+
const [password, setPassword] = useState('');
|
|
11
|
+
const [confirmPassword, setConfirmPassword] = useState('');
|
|
12
|
+
const { signUp, signInWithOAuth, loading, error, user } = useAuth();
|
|
13
|
+
const router = useRouter();
|
|
14
|
+
|
|
15
|
+
// Redirect if already logged in
|
|
16
|
+
React.useEffect(() => {
|
|
17
|
+
if (user) {
|
|
18
|
+
router.push('/');
|
|
19
|
+
}
|
|
20
|
+
}, [user, router]);
|
|
21
|
+
|
|
22
|
+
const handleSignup = async (e: React.FormEvent) => {
|
|
23
|
+
e.preventDefault();
|
|
24
|
+
|
|
25
|
+
if (password !== confirmPassword) {
|
|
26
|
+
alert('Passwords do not match');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
try {
|
|
31
|
+
await signUp(email, password);
|
|
32
|
+
router.push('/');
|
|
33
|
+
} catch (err) {
|
|
34
|
+
console.error('Signup error:', err);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const handleGoogleSignup = async () => {
|
|
39
|
+
try {
|
|
40
|
+
await signInWithOAuth('google', window.location.origin);
|
|
41
|
+
} catch (err) {
|
|
42
|
+
console.error('Google signup error:', err);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
if (loading) {
|
|
47
|
+
return (
|
|
48
|
+
<div className="flex items-center justify-center min-h-screen bg-gray-100">
|
|
49
|
+
<div>Loading...</div>
|
|
50
|
+
</div>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<div className="flex items-center justify-center min-h-screen bg-gray-100">
|
|
56
|
+
<Card className="w-full max-w-md p-8">
|
|
57
|
+
<h1 className="text-2xl font-bold text-center mb-6">Sign Up</h1>
|
|
58
|
+
|
|
59
|
+
{error && (
|
|
60
|
+
<div className="mb-4 p-3 bg-red-100 border border-red-400 text-red-700 rounded">
|
|
61
|
+
{error.message}
|
|
62
|
+
</div>
|
|
63
|
+
)}
|
|
64
|
+
|
|
65
|
+
<form onSubmit={handleSignup} className="space-y-4">
|
|
66
|
+
<div>
|
|
67
|
+
<Label htmlFor="email">Email</Label>
|
|
68
|
+
<Input
|
|
69
|
+
id="email"
|
|
70
|
+
type="email"
|
|
71
|
+
value={email}
|
|
72
|
+
onChange={(e) => setEmail(e.target.value)}
|
|
73
|
+
placeholder="Enter your email"
|
|
74
|
+
required
|
|
75
|
+
disabled={loading}
|
|
76
|
+
/>
|
|
77
|
+
</div>
|
|
78
|
+
<div>
|
|
79
|
+
<Label htmlFor="password">Password</Label>
|
|
80
|
+
<Input
|
|
81
|
+
id="password"
|
|
82
|
+
type="password"
|
|
83
|
+
value={password}
|
|
84
|
+
onChange={(e) => setPassword(e.target.value)}
|
|
85
|
+
placeholder="Enter your password"
|
|
86
|
+
required
|
|
87
|
+
disabled={loading}
|
|
88
|
+
/>
|
|
89
|
+
</div>
|
|
90
|
+
<div>
|
|
91
|
+
<Label htmlFor="confirmPassword">Confirm Password</Label>
|
|
92
|
+
<Input
|
|
93
|
+
id="confirmPassword"
|
|
94
|
+
type="password"
|
|
95
|
+
value={confirmPassword}
|
|
96
|
+
onChange={(e) => setConfirmPassword(e.target.value)}
|
|
97
|
+
placeholder="Confirm your password"
|
|
98
|
+
required
|
|
99
|
+
disabled={loading}
|
|
100
|
+
/>
|
|
101
|
+
</div>
|
|
102
|
+
<Button type="submit" className="w-full" disabled={loading}>
|
|
103
|
+
{loading ? 'Signing Up...' : 'Sign Up'}
|
|
104
|
+
</Button>
|
|
105
|
+
<Button
|
|
106
|
+
type="button"
|
|
107
|
+
variant="outline"
|
|
108
|
+
className="w-full"
|
|
109
|
+
onClick={handleGoogleSignup}
|
|
110
|
+
disabled={loading}
|
|
111
|
+
>
|
|
112
|
+
Sign up with Google
|
|
113
|
+
</Button>
|
|
114
|
+
</form>
|
|
115
|
+
|
|
116
|
+
<div className="mt-4 text-center">
|
|
117
|
+
<p className="text-sm text-gray-600">
|
|
118
|
+
Already have an account?{' '}
|
|
119
|
+
<a href="/login" className="text-blue-600 hover:underline">
|
|
120
|
+
Sign in
|
|
121
|
+
</a>
|
|
122
|
+
</p>
|
|
123
|
+
</div>
|
|
124
|
+
</Card>
|
|
125
|
+
</div>
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
|
package/dist/templates/web/ui-auth-payments/template/src/components/providers/app-providers.tsx
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import React from 'react'
|
|
4
|
+
import { ThemeProvider } from 'next-themes'
|
|
5
|
+
import { AuthProvider } from '@digilogiclabs/saas-factory-auth'
|
|
6
|
+
import { PaymentsProvider } from '@digilogiclabs/saas-factory-payments'
|
|
7
|
+
|
|
8
|
+
interface AppProvidersProps {
|
|
9
|
+
children: React.ReactNode
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function AppProviders({ children }: AppProvidersProps) {
|
|
13
|
+
return (
|
|
14
|
+
<ThemeProvider
|
|
15
|
+
attribute="class"
|
|
16
|
+
defaultTheme="system"
|
|
17
|
+
enableSystem
|
|
18
|
+
disableTransitionOnChange
|
|
19
|
+
>
|
|
20
|
+
<AuthProvider>
|
|
21
|
+
<PaymentsProvider>
|
|
22
|
+
{children}
|
|
23
|
+
</PaymentsProvider>
|
|
24
|
+
</AuthProvider>
|
|
25
|
+
</ThemeProvider>
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import Link from 'next/link';
|
|
5
|
+
import { LogOut, CreditCard } from 'lucide-react';
|
|
6
|
+
import { useAuth } from '@digilogiclabs/saas-factory-auth';
|
|
7
|
+
|
|
8
|
+
export function Header() {
|
|
9
|
+
const { user, signOut } = useAuth();
|
|
10
|
+
|
|
11
|
+
const handleSignOut = async () => {
|
|
12
|
+
try {
|
|
13
|
+
await signOut();
|
|
14
|
+
} catch (error) {
|
|
15
|
+
console.error('Sign out error:', error);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<header className="bg-white dark:bg-gray-800 shadow-md">
|
|
21
|
+
<div className="container mx-auto px-4 py-4 flex justify-between items-center">
|
|
22
|
+
<Link href="/" className="text-2xl font-bold text-gray-900 dark:text-white">
|
|
23
|
+
{{titleCaseName}}
|
|
24
|
+
</Link>
|
|
25
|
+
<nav className="flex items-center gap-4">
|
|
26
|
+
{user ? (
|
|
27
|
+
<>
|
|
28
|
+
<Link href="/dashboard" className="text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white">
|
|
29
|
+
Dashboard
|
|
30
|
+
</Link>
|
|
31
|
+
<Link href="/billing" className="flex items-center gap-2 text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white">
|
|
32
|
+
<CreditCard className="h-4 w-4" />
|
|
33
|
+
Billing
|
|
34
|
+
</Link>
|
|
35
|
+
<button
|
|
36
|
+
onClick={handleSignOut}
|
|
37
|
+
className="p-2 text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white"
|
|
38
|
+
>
|
|
39
|
+
<LogOut className="h-5 w-5" />
|
|
40
|
+
</button>
|
|
41
|
+
</>
|
|
42
|
+
) : (
|
|
43
|
+
<>
|
|
44
|
+
<Link href="/login" className="text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white">
|
|
45
|
+
Login
|
|
46
|
+
</Link>
|
|
47
|
+
<Link
|
|
48
|
+
href="/signup"
|
|
49
|
+
className="px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700"
|
|
50
|
+
>
|
|
51
|
+
Sign Up
|
|
52
|
+
</Link>
|
|
53
|
+
</>
|
|
54
|
+
)}
|
|
55
|
+
</nav>
|
|
56
|
+
</div>
|
|
57
|
+
</header>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
3
|
+
import { cn } from "@/lib/utils"
|
|
4
|
+
|
|
5
|
+
const badgeVariants = cva(
|
|
6
|
+
"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
7
|
+
{
|
|
8
|
+
variants: {
|
|
9
|
+
variant: {
|
|
10
|
+
default:
|
|
11
|
+
"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
|
|
12
|
+
secondary:
|
|
13
|
+
"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
14
|
+
destructive:
|
|
15
|
+
"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
|
|
16
|
+
outline: "text-foreground",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
variant: "default",
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
export interface BadgeProps
|
|
26
|
+
extends React.HTMLAttributes<HTMLDivElement>,
|
|
27
|
+
VariantProps<typeof badgeVariants> {}
|
|
28
|
+
|
|
29
|
+
function Badge({ className, variant, ...props }: BadgeProps) {
|
|
30
|
+
return (
|
|
31
|
+
<div className={cn(badgeVariants({ variant }), className)} {...props} />
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { Badge, badgeVariants }
|
|
36
|
+
|
|
@@ -0,0 +1,77 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "es5",
|
|
4
|
+
"lib": ["dom", "dom.iterable", "es6"],
|
|
5
|
+
"allowJs": true,
|
|
6
|
+
"skipLibCheck": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"noEmit": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"module": "esnext",
|
|
11
|
+
"moduleResolution": "bundler",
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"isolatedModules": true,
|
|
14
|
+
"jsx": "preserve",
|
|
15
|
+
"incremental": true,
|
|
16
|
+
"plugins": [
|
|
17
|
+
{
|
|
18
|
+
"name": "next"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"baseUrl": ".",
|
|
22
|
+
"paths": {
|
|
23
|
+
"@/*": ["./src/*"],
|
|
24
|
+
"@/components/*": ["./src/components/*"],
|
|
25
|
+
"@/lib/*": ["./src/lib/*"],
|
|
26
|
+
"@/hooks/*": ["./src/hooks/*"],
|
|
27
|
+
"@/types/*": ["./src/types/*"]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
|
|
31
|
+
"exclude": ["node_modules"]
|
|
32
|
+
}
|
|
33
|
+
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# {{titleCaseName}}
|
|
2
|
+
|
|
3
|
+
{{description}}
|
|
4
|
+
|
|
5
|
+
This is a Next.js 15 project created with the **Audio Player App** template from `@digilogiclabs/create-saas-app`. It includes:
|
|
6
|
+
|
|
7
|
+
- 🎵 **Audio Player** - Advanced audio streaming capabilities
|
|
8
|
+
- 🎨 **UI Components** - @digilogiclabs/saas-factory-ui v0.10.0 with audio player
|
|
9
|
+
- 🔐 **Authentication** - @digilogiclabs/saas-factory-auth v0.4.4
|
|
10
|
+
- 💳 **Payments** - @digilogiclabs/saas-factory-payments v0.3.0
|
|
11
|
+
- ⚡ **Next.js 15** - Latest React framework
|
|
12
|
+
- 🎯 **TypeScript** - Full type safety
|
|
13
|
+
- 🎨 **Tailwind CSS** - Utility-first styling
|
|
14
|
+
- 🌙 **Dark Mode** - Built-in theme support
|
|
15
|
+
|
|
16
|
+
## Features
|
|
17
|
+
|
|
18
|
+
### Audio Player
|
|
19
|
+
- Full-featured audio player with playlist support
|
|
20
|
+
- Play/pause, skip, shuffle, repeat controls
|
|
21
|
+
- Volume control and mute functionality
|
|
22
|
+
- Progress bar with seeking capability
|
|
23
|
+
- Track information display with cover art
|
|
24
|
+
- Cross-platform support (Web + React Native)
|
|
25
|
+
|
|
26
|
+
### Authentication
|
|
27
|
+
- User registration and login
|
|
28
|
+
- Protected routes
|
|
29
|
+
- Session management
|
|
30
|
+
- Sign out functionality
|
|
31
|
+
|
|
32
|
+
### Payments Integration
|
|
33
|
+
- Subscription plans display
|
|
34
|
+
- Payment form with Stripe integration
|
|
35
|
+
- Billing history
|
|
36
|
+
- Payment method management
|
|
37
|
+
- Subscription management
|
|
38
|
+
|
|
39
|
+
### UI Components
|
|
40
|
+
- Modern, accessible components including AudioPlayer
|
|
41
|
+
- Dark/light theme support
|
|
42
|
+
- Responsive design
|
|
43
|
+
- TypeScript definitions
|
|
44
|
+
|
|
45
|
+
## Getting Started
|
|
46
|
+
|
|
47
|
+
### Prerequisites
|
|
48
|
+
- Node.js 18+
|
|
49
|
+
- npm, yarn, or pnpm
|
|
50
|
+
|
|
51
|
+
### Installation
|
|
52
|
+
|
|
53
|
+
1. Install dependencies:
|
|
54
|
+
```bash
|
|
55
|
+
npm install
|
|
56
|
+
# or
|
|
57
|
+
yarn install
|
|
58
|
+
# or
|
|
59
|
+
pnpm install
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
2. Set up environment variables:
|
|
63
|
+
```bash
|
|
64
|
+
cp .env.example .env.local
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Edit `.env.local` with your configuration:
|
|
68
|
+
```env
|
|
69
|
+
# Authentication (choose one)
|
|
70
|
+
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
|
|
71
|
+
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
|
|
72
|
+
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
|
|
73
|
+
|
|
74
|
+
# OR
|
|
75
|
+
|
|
76
|
+
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
|
|
77
|
+
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
|
|
78
|
+
|
|
79
|
+
# Payments
|
|
80
|
+
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
|
|
81
|
+
STRIPE_SECRET_KEY=your_stripe_secret_key
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
3. Run the development server:
|
|
85
|
+
```bash
|
|
86
|
+
npm run dev
|
|
87
|
+
# or
|
|
88
|
+
yarn dev
|
|
89
|
+
# or
|
|
90
|
+
pnpm dev
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
|
94
|
+
|
|
95
|
+
## Available Pages
|
|
96
|
+
|
|
97
|
+
- `/` - Home page with feature showcase
|
|
98
|
+
- `/login` - User authentication
|
|
99
|
+
- `/signup` - User registration
|
|
100
|
+
- `/checkout` - Subscription plans and payment
|
|
101
|
+
- `/billing` - Subscription and billing management
|
|
102
|
+
|
|
103
|
+
## Package Integration
|
|
104
|
+
|
|
105
|
+
### UI Package (@digilogiclabs/saas-factory-ui)
|
|
106
|
+
```tsx
|
|
107
|
+
import { Button, Card, AudioPlayer } from '@digilogiclabs/saas-factory-ui'
|
|
108
|
+
|
|
109
|
+
<Button variant="primary">Click me</Button>
|
|
110
|
+
<Card>Content here</Card>
|
|
111
|
+
<AudioPlayer
|
|
112
|
+
tracks={[
|
|
113
|
+
{
|
|
114
|
+
id: '1',
|
|
115
|
+
title: 'Song Title',
|
|
116
|
+
artist: 'Artist Name',
|
|
117
|
+
album: 'Album Name',
|
|
118
|
+
duration: 180,
|
|
119
|
+
src: '/path/to/audio.mp3',
|
|
120
|
+
coverArt: '/path/to/cover.jpg'
|
|
121
|
+
}
|
|
122
|
+
]}
|
|
123
|
+
/>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Auth Package (@digilogiclabs/saas-factory-auth)
|
|
127
|
+
```tsx
|
|
128
|
+
import { useAuth } from '@digilogiclabs/saas-factory-auth'
|
|
129
|
+
|
|
130
|
+
const { user, signIn, signOut, loading } = useAuth()
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Payments Package (@digilogiclabs/saas-factory-payments)
|
|
134
|
+
```tsx
|
|
135
|
+
import {
|
|
136
|
+
PaymentForm,
|
|
137
|
+
SubscriptionPlans,
|
|
138
|
+
SubscriptionManager
|
|
139
|
+
} from '@digilogiclabs/saas-factory-payments'
|
|
140
|
+
|
|
141
|
+
<SubscriptionPlans onPlanSelect={handlePlanSelect} />
|
|
142
|
+
<PaymentForm onSuccess={handleSuccess} onError={handleError} />
|
|
143
|
+
<SubscriptionManager onSubscriptionChange={handleChange} />
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Project Structure
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
src/
|
|
150
|
+
├── app/ # Next.js 15 app directory
|
|
151
|
+
│ ├── billing/ # Billing and subscription management
|
|
152
|
+
│ ├── checkout/ # Payment and subscription selection
|
|
153
|
+
│ ├── login/ # Authentication pages
|
|
154
|
+
│ ├── signup/
|
|
155
|
+
│ └── layout.tsx # Root layout with providers
|
|
156
|
+
├── components/
|
|
157
|
+
│ ├── providers/ # App-wide providers (Auth, Payments, Theme)
|
|
158
|
+
│ ├── shared/ # Shared components (Header, etc.)
|
|
159
|
+
│ └── ui/ # UI components
|
|
160
|
+
└── lib/ # Utilities and configurations
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Deployment
|
|
164
|
+
|
|
165
|
+
### Vercel (Recommended)
|
|
166
|
+
1. Push your code to GitHub
|
|
167
|
+
2. Connect your repository to Vercel
|
|
168
|
+
3. Add environment variables in Vercel dashboard
|
|
169
|
+
4. Deploy
|
|
170
|
+
|
|
171
|
+
### Other Platforms
|
|
172
|
+
This is a standard Next.js application and can be deployed to any platform that supports Node.js.
|
|
173
|
+
|
|
174
|
+
## Learn More
|
|
175
|
+
|
|
176
|
+
- [Next.js Documentation](https://nextjs.org/docs)
|
|
177
|
+
- [Digi Logic Labs Documentation](https://docs.digilogiclabs.com)
|
|
178
|
+
- [SaaS Factory UI Components](https://ui.digilogiclabs.com)
|
|
179
|
+
- [SaaS Factory Auth Guide](https://auth.digilogiclabs.com)
|
|
180
|
+
- [SaaS Factory Payments Guide](https://payments.digilogiclabs.com)
|
|
181
|
+
|
|
182
|
+
## Support
|
|
183
|
+
|
|
184
|
+
- 📚 [Documentation](https://docs.digilogiclabs.com)
|
|
185
|
+
- 💬 [Discord Community](https://discord.gg/digilogiclabs)
|
|
186
|
+
- 🐛 [Report Issues](https://github.com/DigiLogicLabs/create-saas-app/issues)
|
|
187
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{packageName}}",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "{{description}} - Audio Player App (with UI Package v0.11.1 + Auth v1.0.0 + Payments)",
|
|
5
|
+
"private": true,
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "next dev",
|
|
8
|
+
"build": "next build",
|
|
9
|
+
"start": "next start",
|
|
10
|
+
"lint": "next lint",
|
|
11
|
+
"type-check": "tsc --noEmit"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"next": "^15.0.0",
|
|
15
|
+
"react": "^19.0.0",
|
|
16
|
+
"react-dom": "^19.0.0",
|
|
17
|
+
"@digilogiclabs/saas-factory-ui": "^0.11.1",
|
|
18
|
+
"@digilogiclabs/saas-factory-auth": "^1.0.0",
|
|
19
|
+
"@digilogiclabs/saas-factory-payments": "^1.0.0",
|
|
20
|
+
"stripe": "^14.0.0",
|
|
21
|
+
"tailwindcss": "^3.3.0",
|
|
22
|
+
"autoprefixer": "^10.4.16",
|
|
23
|
+
"postcss": "^8.4.31",
|
|
24
|
+
"clsx": "^2.0.0",
|
|
25
|
+
"class-variance-authority": "^0.7.0",
|
|
26
|
+
"tailwind-merge": "^2.0.0",
|
|
27
|
+
"next-themes": "^0.2.1",
|
|
28
|
+
"lucide-react": "^0.542.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"typescript": "^5.0.0",
|
|
32
|
+
"@types/node": "^20.0.0",
|
|
33
|
+
"@types/react": "^19.0.0",
|
|
34
|
+
"@types/react-dom": "^19.0.0",
|
|
35
|
+
"eslint": "^8.0.0",
|
|
36
|
+
"eslint-config-next": "^15.0.0",
|
|
37
|
+
"prettier": "^3.0.0"
|
|
38
|
+
},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=18.0.0"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
import type { NextRequest } from 'next/server';
|
|
3
|
+
|
|
4
|
+
export async function GET(request: NextRequest) {
|
|
5
|
+
const requestUrl = new URL(request.url);
|
|
6
|
+
|
|
7
|
+
// Placeholder auth callback - requires @digilogiclabs/saas-factory-auth package
|
|
8
|
+
console.log('Auth callback triggered - requires auth package for full functionality');
|
|
9
|
+
|
|
10
|
+
// URL to redirect to after sign in process completes
|
|
11
|
+
return NextResponse.redirect(requestUrl.origin);
|
|
12
|
+
}
|