From 06152be537173f8b8adccae2a432bdfc39da6028 Mon Sep 17 00:00:00 2001 From: ridwan Date: Mon, 6 Oct 2025 08:10:23 +0100 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20add=20authentication=20pages=20with?= =?UTF-8?q?=20login=20form=20and=20social=20login=20options=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=E2=96=88=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=E2=96=88=20=20?= =?UTF-8?q?=20=20=20=20=20-=20Create=20login=20and=20register=20page=20rou?= =?UTF-8?q?tes=20under=20(auth)=20group=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=E2=96=88=20=20=20=20?= =?UTF-8?q?=20=20=20-=20Implement=20LoginForm=20component=20with=20form=20?= =?UTF-8?q?validation=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=E2=96=88=20=20=20=20?= =?UTF-8?q?=20=20=20-=20Add=20reusable=20Input=20component=20for=20form=20?= =?UTF-8?q?fields=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=E2=96=88?= =?UTF-8?q?=20=20=20=20=20=20=20-=20Add=20btn-social=20utility=20styles=20?= =?UTF-8?q?for=20OAuth=20buttons=20=20=20=20=20=20=20-=20Add=20social=20lo?= =?UTF-8?q?gin=20buttons=20for=20GitHub=20and=20Google=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=E2=96=88=20=20=20=20=20=20=20-=20Inclu?= =?UTF-8?q?de=20social=20login=20assets=20(GitHub=20and=20Google=20icons)?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=E2=96=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(auth)/login/page.tsx | 7 + src/app/(auth)/register/page.tsx | 0 src/app/globals.css | 38 +++-- src/assets/github.png | Bin 0 -> 4519 bytes src/assets/google.png | Bin 0 -> 75345 bytes src/components/ui/Input.tsx | 51 +++++++ src/components/ui/features/auth/LoginForm.tsx | 131 ++++++++++++++++++ 7 files changed, 219 insertions(+), 8 deletions(-) create mode 100644 src/app/(auth)/login/page.tsx create mode 100644 src/app/(auth)/register/page.tsx create mode 100644 src/assets/github.png create mode 100644 src/assets/google.png create mode 100644 src/components/ui/Input.tsx create mode 100644 src/components/ui/features/auth/LoginForm.tsx diff --git a/src/app/(auth)/login/page.tsx b/src/app/(auth)/login/page.tsx new file mode 100644 index 0000000..8670b66 --- /dev/null +++ b/src/app/(auth)/login/page.tsx @@ -0,0 +1,7 @@ +import LoginForm from "@/components/ui/features/auth/LoginForm"; + +const page = () => { + return ; +}; + +export default page; diff --git a/src/app/(auth)/register/page.tsx b/src/app/(auth)/register/page.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/app/globals.css b/src/app/globals.css index b3e7a88..50008eb 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,15 +1,37 @@ @import "tailwindcss"; body { - margin: 0; - font-family: var(--font-inter), ui-sans-serif, system-ui, sans-serif; + margin: 0; + font-family: var(--font-inter), ui-sans-serif, system-ui, sans-serif; } @theme { - --color-background: var(--background); - --color-foreground: var(--foreground); - --background: #ffffff; - --foreground: #171717; - --secondary: #999999; - --font-sans: var(--font-inter), ui-sans-serif, system-ui, sans-serif; + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-secondary: var(--secondary); + --background: #ffffff; + --foreground: #171717; + --secondary: #999999; + --font-sans: var(--font-inter), ui-sans-serif, system-ui, sans-serif; +} + +.btn-social { + @apply flex items-center justify-center gap-2 + w-[309px] h-9 min-h-10 p-3 mt-4 + rounded-lg border border-[#222] + bg-white font-semibold text-center + transition-all duration-300 ease-in-out + cursor-pointer; +} + +.btn-social:hover { + @apply bg-[#f5f5f5] border-black; +} + +.btn-social:active { + @apply scale-95 bg-[#e5e5e5]; +} + +.btn-social:focus { + @apply outline-none ring-2 ring-offset-2 ring-[#222]; } diff --git a/src/assets/github.png b/src/assets/github.png new file mode 100644 index 0000000000000000000000000000000000000000..c39003ca4c0f2ef8c0090238271161f189450a83 GIT binary patch literal 4519 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 V;@>oDF{6nnJ}R5*X66cr`XBUEUC96d literal 0 HcmV?d00001 diff --git a/src/assets/google.png b/src/assets/google.png new file mode 100644 index 0000000000000000000000000000000000000000..ce348160fdade2f896593eec25a38e67eb4b1396 GIT binary patch literal 75345 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 |K$6V^WCt(*c!^)=Q*W+0-C2F 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 literal 0 HcmV?d00001 diff --git a/src/components/ui/Input.tsx b/src/components/ui/Input.tsx new file mode 100644 index 0000000..99ca0db --- /dev/null +++ b/src/components/ui/Input.tsx @@ -0,0 +1,51 @@ +import type { ChangeEvent, FocusEvent } from "react"; + +interface InputProps { + type: "text" | "number" | "email" | "password"; + label: string; + id: string; + value: string | number; + name: string; + placeholder: string; + error: string | undefined; + onChange: (e: ChangeEvent) => void; + onBlur: (e: FocusEvent) => void; +} + +const Input = ({ + type, + label, + id, + value, + name, + placeholder, + error, + onChange, + onBlur, +}: InputProps) => { + return ( +
+ + + {error &&

{error}

} +
+ ); +}; + +export default Input; diff --git a/src/components/ui/features/auth/LoginForm.tsx b/src/components/ui/features/auth/LoginForm.tsx new file mode 100644 index 0000000..e90ca03 --- /dev/null +++ b/src/components/ui/features/auth/LoginForm.tsx @@ -0,0 +1,131 @@ +"use client"; +import Image from "next/image"; +import { type ChangeEvent, type FormEvent, useId, useState } from "react"; +import github from "@/assets/github.png"; +import google from "@/assets/google.png"; +import Input from "@/components/ui/Input"; + +interface LoginValues { + name: string; + email: string; +} + +const LoginForm = () => { + const [values, setValues] = useState({ name: "", email: "" }); + const [errors, setErrors] = useState< + Partial> + >({}); + const nameId = useId(); + const emailId = useId(); + + const handleChange = (e: ChangeEvent) => { + const { name, value } = e.target; + setValues((prev) => ({ ...prev, [name]: value })); + }; + + const validate = (values: LoginValues) => { + const errors: Partial> = {}; + + if (!values.name) { + errors.name = "Name is required"; + } else if (values.name.length < 2) { + errors.name = "Name must be at least 2 characters long"; + } + if (!values.email) errors.email = "Email is required"; + else if (!/\S+@\S+\.\S+/.test(values.email)) + errors.email = + "Please enter a valid email address using the following format: name@example.com"; + + return errors; + }; + + const handleBlur = (e: FormEvent) => { + e.preventDefault(); + + const newErrors = validate(values); + setErrors(newErrors); + }; + + const handleSubmit = (e: FormEvent) => { + e.preventDefault(); + + const newErrors = validate(values); + setErrors(newErrors); + + if (Object.keys(newErrors).length === 0) { + console.log("login successful", values); + } + }; + + return ( +
+
+
+

+ Sign in to your account +

+

+ Access exclusive content below. +

+
+ +
+ + + + +
+ +
+
+ + or + +
+
+ +
+ + +
+
+ +
+
+
+
+ ); +}; + +export default LoginForm; From 50ade817504e68ee17f89d93297fd9a41cce5b60 Mon Sep 17 00:00:00 2001 From: NavidReza Date: Wed, 8 Oct 2025 09:30:53 +0330 Subject: [PATCH 2/6] feat: add ci/cd --- .github/workflows/ci-cd.yml | 37 +++++++++++++++++++++++++++++++++++ .github/workflows/deploy.yml | 35 +++++++++++++++++++++++++++++++++ src/app/(auth)/login/page.tsx | 2 +- 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci-cd.yml create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml new file mode 100644 index 0000000..894d762 --- /dev/null +++ b/.github/workflows/ci-cd.yml @@ -0,0 +1,37 @@ +name: CI for Next.js + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + name: Check Build & Types + runs-on: ubuntu-latest + + env: + DATABASE_URL: ${{ secrets.DATABASE_URL }} + + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 18 + cache: 'npm' + + - name: Install dependencies + run: npm install + + - name: Type check + run: npm run typecheck + + - name: Build Next.js app + run: npm run build diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..fc0e569 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,35 @@ +name: Deploy to Netlify + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Install dependencies + run: npm install + + - name: Build Next.js app + run: npm run build + + - name: Deploy to Netlify + uses: nwtgck/actions-netlify@v2 + with: + publish-dir: .next + production-branch: main + github-token: ${{ secrets.GITHUB_TOKEN }} + deploy-message: "Deploy from GitHub Actions" + netlify-auth-token: ${{ secrets.NETLIFY_AUTH_TOKEN }} + netlify-site-id: ${{ secrets.NETLIFY_SITE_ID }} diff --git a/src/app/(auth)/login/page.tsx b/src/app/(auth)/login/page.tsx index 8670b66..c37cc08 100644 --- a/src/app/(auth)/login/page.tsx +++ b/src/app/(auth)/login/page.tsx @@ -1,7 +1,7 @@ import LoginForm from "@/components/ui/features/auth/LoginForm"; const page = () => { - return ; + return ; }; export default page; From 61e0046f12e57a3697a3b8eee04b8489b5dc200f Mon Sep 17 00:00:00 2001 From: NavidReza Date: Mon, 13 Oct 2025 18:55:25 +0330 Subject: [PATCH 3/6] Add prisma & prisma client --- package-lock.json | 411 +++++++++++++++++++++++++++++++++++++++++++++- package.json | 2 + 2 files changed, 411 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index efde1ba..1c9a042 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "frontend-advanced", "version": "0.1.0", "dependencies": { + "@prisma/client": "^6.17.1", "lucide-react": "^0.542.0", "next": "15.5.2", "react": "19.1.0", @@ -21,6 +22,7 @@ "@types/react-dom": "^19", "eslint": "^9", "eslint-config-next": "15.5.2", + "prisma": "^6.17.1", "tailwindcss": "^4", "typescript": "^5" } @@ -960,6 +962,91 @@ "node": ">=12.4.0" } }, + "node_modules/@prisma/client": { + "version": "6.17.1", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.17.1.tgz", + "integrity": "sha512-zL58jbLzYamjnNnmNA51IOZdbk5ci03KviXCuB0Tydc9btH2kDWsi1pQm2VecviRTM7jGia0OPPkgpGnT3nKvw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "peerDependencies": { + "prisma": "*", + "typescript": ">=5.1.0" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@prisma/config": { + "version": "6.17.1", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.17.1.tgz", + "integrity": "sha512-fs8wY6DsvOCzuiyWVckrVs1LOcbY4LZNz8ki4uUIQ28jCCzojTGqdLhN2Jl5lDnC1yI8/gNIKpsWDM8pLhOdwA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "c12": "3.1.0", + "deepmerge-ts": "7.1.5", + "effect": "3.16.12", + "empathic": "2.0.0" + } + }, + "node_modules/@prisma/debug": { + "version": "6.17.1", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.17.1.tgz", + "integrity": "sha512-Vf7Tt5Wh9XcndpbmeotuqOMLWPTjEKCsgojxXP2oxE1/xYe7PtnP76hsouG9vis6fctX+TxgmwxTuYi/+xc7dQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/engines": { + "version": "6.17.1", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.17.1.tgz", + "integrity": "sha512-D95Ik3GYZkqZ8lSR4EyFOJ/tR33FcYRP8kK61o+WMsyD10UfJwd7+YielflHfKwiGodcqKqoraWw8ElAgMDbPw==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "6.17.1", + "@prisma/engines-version": "6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac", + "@prisma/fetch-engine": "6.17.1", + "@prisma/get-platform": "6.17.1" + } + }, + "node_modules/@prisma/engines-version": { + "version": "6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac.tgz", + "integrity": "sha512-17140E3huOuD9lMdJ9+SF/juOf3WR3sTJMVyyenzqUPbuH+89nPhSWcrY+Mf7tmSs6HvaO+7S+HkELinn6bhdg==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/fetch-engine": { + "version": "6.17.1", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.17.1.tgz", + "integrity": "sha512-AYZiHOs184qkDMiTeshyJCtyL4yERkjfTkJiSJdYuSfc24m94lTNL5+GFinZ6vVz+ktX4NJzHKn1zIFzGTWrWg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "6.17.1", + "@prisma/engines-version": "6.17.1-1.272a37d34178c2894197e17273bf937f25acdeac", + "@prisma/get-platform": "6.17.1" + } + }, + "node_modules/@prisma/get-platform": { + "version": "6.17.1", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.17.1.tgz", + "integrity": "sha512-AKEn6fsfz0r482S5KRDFlIGEaq9wLNcgalD1adL+fPcFFblIKs1sD81kY/utrHdqKuVC6E1XSRpegDK3ZLL4Qg==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/debug": "6.17.1" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -974,6 +1061,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "devOptional": true, + "license": "MIT" + }, "node_modules/@swc/helpers": { "version": "0.5.15", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", @@ -2195,6 +2289,35 @@ "node": ">=8" } }, + "node_modules/c12": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.1.0.tgz", + "integrity": "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.3", + "confbox": "^0.2.2", + "defu": "^6.1.4", + "dotenv": "^16.6.1", + "exsolve": "^1.0.7", + "giget": "^2.0.0", + "jiti": "^2.4.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^1.0.0", + "pkg-types": "^2.2.0", + "rc9": "^2.1.2" + }, + "peerDependencies": { + "magicast": "^0.3.5" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -2292,6 +2415,22 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/chownr": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", @@ -2302,6 +2441,16 @@ "node": ">=18" } }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -2335,6 +2484,23 @@ "dev": true, "license": "MIT" }, + "node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2443,6 +2609,16 @@ "dev": true, "license": "MIT" }, + "node_modules/deepmerge-ts": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", + "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -2479,6 +2655,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "devOptional": true, + "license": "MIT" + }, "node_modules/detect-libc": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.0.tgz", @@ -2502,6 +2692,19 @@ "node": ">=0.10.0" } }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "devOptional": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -2517,6 +2720,17 @@ "node": ">= 0.4" } }, + "node_modules/effect": { + "version": "3.16.12", + "resolved": "https://registry.npmjs.org/effect/-/effect-3.16.12.tgz", + "integrity": "sha512-N39iBk0K71F9nb442TLbTkjl24FLUzuvx2i1I2RsEAQsdAdUTuUoW0vlfUXgkMTUOnYqKnWcFfqw4hK4Pw27hg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "fast-check": "^3.23.1" + } + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -2524,6 +2738,16 @@ "dev": true, "license": "MIT" }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/enhanced-resolve": { "version": "5.18.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", @@ -3154,6 +3378,36 @@ "node": ">=0.10.0" } }, + "node_modules/exsolve": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", + "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/fast-check": { + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz", + "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT", + "dependencies": { + "pure-rand": "^6.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3406,6 +3660,24 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, + "node_modules/giget": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz", + "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.0", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.6", + "nypm": "^0.6.0", + "pathe": "^2.0.3" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -4059,7 +4331,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" @@ -4697,6 +4969,33 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/nypm": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.2.tgz", + "integrity": "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.2", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "tinyexec": "^1.0.1" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -4820,6 +5119,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "devOptional": true, + "license": "MIT" + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -4928,6 +5234,20 @@ "dev": true, "license": "MIT" }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "devOptional": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4947,6 +5267,18 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -4996,6 +5328,32 @@ "node": ">= 0.8.0" } }, + "node_modules/prisma": { + "version": "6.17.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.17.1.tgz", + "integrity": "sha512-ac6h0sM1Tg3zu8NInY+qhP/S9KhENVaw9n1BrGKQVFu05JT5yT5Qqqmb8tMRIE3ZXvVj4xcRA5yfrsy4X7Yy5g==", + "devOptional": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/config": "6.17.1", + "@prisma/engines": "6.17.1" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=18.18" + }, + "peerDependencies": { + "typescript": ">=5.1.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -5018,6 +5376,23 @@ "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5039,6 +5414,17 @@ ], "license": "MIT" }, + "node_modules/rc9": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "defu": "^6.1.4", + "destr": "^2.0.3" + } + }, "node_modules/react": { "version": "19.1.0", "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", @@ -5067,6 +5453,20 @@ "dev": true, "license": "MIT" }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", @@ -5706,6 +6106,13 @@ "node": ">=18" } }, + "node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "devOptional": true, + "license": "MIT" + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -5894,7 +6301,7 @@ "version": "5.9.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", diff --git a/package.json b/package.json index 88be7a2..ee3ae2c 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "lint": "eslint" }, "dependencies": { + "@prisma/client": "^6.17.1", "lucide-react": "^0.542.0", "next": "15.5.2", "react": "19.1.0", @@ -22,6 +23,7 @@ "@types/react-dom": "^19", "eslint": "^9", "eslint-config-next": "15.5.2", + "prisma": "^6.17.1", "tailwindcss": "^4", "typescript": "^5" } From 59c509267902f869bffd05a8cb52a95a82c3204c Mon Sep 17 00:00:00 2001 From: NavidReza Date: Mon, 13 Oct 2025 19:36:32 +0330 Subject: [PATCH 4/6] Fix: Add typecheck script --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 8c582ed..e907fe4 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "dev": "next dev --turbopack", "build": "next build --turbopack", "start": "next start", + "typecheck": "tsc --noEmit", "lint": "eslint" }, "dependencies": { From bbfb41a29798f198e61cea010c3eecff24438b25 Mon Sep 17 00:00:00 2001 From: NavidReza Date: Mon, 13 Oct 2025 19:39:11 +0330 Subject: [PATCH 5/6] Fix: Move icons from assets to public --- {src/assets => public}/github.png | Bin {src/assets => public}/google.png | Bin src/components/ui/features/auth/LoginForm.tsx | 238 +++++++++--------- 3 files changed, 118 insertions(+), 120 deletions(-) rename {src/assets => public}/github.png (100%) rename {src/assets => public}/google.png (100%) diff --git a/src/assets/github.png b/public/github.png similarity index 100% rename from src/assets/github.png rename to public/github.png diff --git a/src/assets/google.png b/public/google.png similarity index 100% rename from src/assets/google.png rename to public/google.png diff --git a/src/components/ui/features/auth/LoginForm.tsx b/src/components/ui/features/auth/LoginForm.tsx index e90ca03..ae701b5 100644 --- a/src/components/ui/features/auth/LoginForm.tsx +++ b/src/components/ui/features/auth/LoginForm.tsx @@ -1,131 +1,129 @@ "use client"; +import Input from "@/components/ui/Input"; import Image from "next/image"; import { type ChangeEvent, type FormEvent, useId, useState } from "react"; -import github from "@/assets/github.png"; -import google from "@/assets/google.png"; -import Input from "@/components/ui/Input"; interface LoginValues { - name: string; - email: string; + name: string; + email: string; } const LoginForm = () => { - const [values, setValues] = useState({ name: "", email: "" }); - const [errors, setErrors] = useState< - Partial> - >({}); - const nameId = useId(); - const emailId = useId(); - - const handleChange = (e: ChangeEvent) => { - const { name, value } = e.target; - setValues((prev) => ({ ...prev, [name]: value })); - }; - - const validate = (values: LoginValues) => { - const errors: Partial> = {}; - - if (!values.name) { - errors.name = "Name is required"; - } else if (values.name.length < 2) { - errors.name = "Name must be at least 2 characters long"; - } - if (!values.email) errors.email = "Email is required"; - else if (!/\S+@\S+\.\S+/.test(values.email)) - errors.email = - "Please enter a valid email address using the following format: name@example.com"; - - return errors; - }; - - const handleBlur = (e: FormEvent) => { - e.preventDefault(); - - const newErrors = validate(values); - setErrors(newErrors); - }; - - const handleSubmit = (e: FormEvent) => { - e.preventDefault(); - - const newErrors = validate(values); - setErrors(newErrors); - - if (Object.keys(newErrors).length === 0) { - console.log("login successful", values); - } - }; - - return ( -
-
-
-

- Sign in to your account -

-

- Access exclusive content below. -

-
- -
- - - - -
- -
-
- - or - -
-
- -
- - -
-
- -
-
-
-
- ); + const [values, setValues] = useState({ name: "", email: "" }); + const [errors, setErrors] = useState< + Partial> + >({}); + const nameId = useId(); + const emailId = useId(); + + const handleChange = (e: ChangeEvent) => { + const { name, value } = e.target; + setValues((prev) => ({ ...prev, [name]: value })); + }; + + const validate = (values: LoginValues) => { + const errors: Partial> = {}; + + if (!values.name) { + errors.name = "Name is required"; + } else if (values.name.length < 2) { + errors.name = "Name must be at least 2 characters long"; + } + if (!values.email) errors.email = "Email is required"; + else if (!/\S+@\S+\.\S+/.test(values.email)) + errors.email = + "Please enter a valid email address using the following format: name@example.com"; + + return errors; + }; + + const handleBlur = (e: FormEvent) => { + e.preventDefault(); + + const newErrors = validate(values); + setErrors(newErrors); + }; + + const handleSubmit = (e: FormEvent) => { + e.preventDefault(); + + const newErrors = validate(values); + setErrors(newErrors); + + if (Object.keys(newErrors).length === 0) { + console.log("login successful", values); + } + }; + + return ( +
+
+
+

+ Sign in to your account +

+

+ Access exclusive content below. +

+
+ +
+ + + + +
+ +
+
+ + or + +
+
+ +
+ + +
+
+ +
+
+
+
+ ); }; export default LoginForm; From a66c6247b8731db3971be633d6116975dc1ce043 Mon Sep 17 00:00:00 2001 From: NavidReza Date: Mon, 13 Oct 2025 19:44:40 +0330 Subject: [PATCH 6/6] Fix: Replace img tag with next/image --- src/app/(auth)/register/page.tsx | 4 +++ src/components/common/Section.tsx | 43 +++++++++++++++++-------------- src/components/main/Hero.tsx | 8 +++--- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/app/(auth)/register/page.tsx b/src/app/(auth)/register/page.tsx index e69de29..2c525cc 100644 --- a/src/app/(auth)/register/page.tsx +++ b/src/app/(auth)/register/page.tsx @@ -0,0 +1,4 @@ +const Register = () => { + return
Register
; +}; +export default Register; diff --git a/src/components/common/Section.tsx b/src/components/common/Section.tsx index 3dae640..2e1baac 100644 --- a/src/components/common/Section.tsx +++ b/src/components/common/Section.tsx @@ -1,38 +1,41 @@ -import { SectionItem } from '@/constants/index'; +import { SectionItem } from "@/constants/index"; +import Image from "next/image"; interface SectionProps { - item: SectionItem; - className?: string; + item: SectionItem; + className?: string; } const Section: React.FC = ({ item, className }) => { + const defaultClasses = + "md:w-full flex flex-col flex-col-reverse md:flex-row "; - const defaultClasses = 'md:w-full flex flex-col flex-col-reverse md:flex-row '; - - const combinedClasses = `${defaultClasses} ${className || ''}`.trim(); + const combinedClasses = `${defaultClasses} ${className || ""}`.trim(); return (
- {/* Left part */} + {/* Left part */}
-

- {item.h1Content} -

-

- {item.pContent} -

-
+

+ {item.h1Content} +

+

+ {item.pContent} +

+ - {/* Right part */} + {/* Right part */}
- {item.alt}
); }; -export default Section; \ No newline at end of file +export default Section; diff --git a/src/components/main/Hero.tsx b/src/components/main/Hero.tsx index a513e9a..19a9d37 100644 --- a/src/components/main/Hero.tsx +++ b/src/components/main/Hero.tsx @@ -1,5 +1,5 @@ +import Image from "next/image"; import H1 from "../common/H1"; -// import HeroSectionImage from "../../assets/Hero-section-image.png"; const Hero = () => { return ( @@ -14,8 +14,10 @@ const Hero = () => {
- This img tag contain the image for Hero Section