diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..3867a0f --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npm run lint diff --git a/package-lock.json b/package-lock.json index 9dcbf23..2313aca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,9 +59,10 @@ "aws-cdk-lib": "^2.189.1", "constructs": "^10.4.2", "esbuild": "^0.25.5", - "eslint": "9.30.0", + "eslint": "^9.30.0", "eslint-config-next": "15.3.4", "genkit-cli": "^1.13.0", + "husky": "^9.1.7", "postcss": "^8", "tailwindcss": "^3.4.1", "tsx": "^4.20.3", @@ -6355,6 +6356,8 @@ }, "node_modules/eslint": { "version": "9.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.30.0.tgz", + "integrity": "sha512-iN/SiPxmQu6EVkf+m1qpBxzUhE12YqFLOSySuOyVLJLEF9nzTf+h/1AJYc1JWzCnktggeNrjvQGLngDzXirU6g==", "dev": true, "license": "MIT", "dependencies": { @@ -8044,6 +8047,22 @@ "node": ">= 14" } }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "license": "MIT", diff --git a/package.json b/package.json index 9926325..7b72e0b 100644 --- a/package.json +++ b/package.json @@ -1,77 +1,79 @@ -{ - "name": "nextn", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev --turbopack -p 9002", - "genkit:dev": "genkit start -- tsx src/ai/dev.ts", - "genkit:watch": "genkit start -- tsx --watch src/ai/dev.ts", - "build": "next build", - "build:static": "next build", - "start": "next start", - "lint": "next lint", - "typecheck": "tsc --noEmit", - "deploy:s3": "npm run build:static && aws s3 sync out/ s3://$S3_BUCKET_NAME --delete --no-cli-pager", - "create-s3-bucket": "node scripts/create-s3-bucket.js" - }, - "dependencies": { - "@genkit-ai/googleai": "^1.13.0", - "@genkit-ai/next": "^1.13.0", - "@hookform/resolvers": "^4.1.3", - "@radix-ui/react-accordion": "^1.2.3", - "@radix-ui/react-alert-dialog": "^1.1.6", - "@radix-ui/react-avatar": "^1.1.3", - "@radix-ui/react-checkbox": "^1.1.4", - "@radix-ui/react-collapsible": "^1.1.11", - "@radix-ui/react-dialog": "^1.1.6", - "@radix-ui/react-dropdown-menu": "^2.1.6", - "@radix-ui/react-label": "^2.1.2", - "@radix-ui/react-menubar": "^1.1.6", - "@radix-ui/react-popover": "^1.1.6", - "@radix-ui/react-progress": "^1.1.2", - "@radix-ui/react-radio-group": "^1.2.3", - "@radix-ui/react-scroll-area": "^1.2.3", - "@radix-ui/react-select": "^2.1.6", - "@radix-ui/react-separator": "^1.1.2", - "@radix-ui/react-slider": "^1.2.3", - "@radix-ui/react-slot": "^1.2.3", - "@radix-ui/react-switch": "^1.1.3", - "@radix-ui/react-tabs": "^1.1.3", - "@radix-ui/react-toast": "^1.2.6", - "@radix-ui/react-tooltip": "^1.1.8", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "date-fns": "^3.6.0", - "dotenv": "^16.5.0", - "embla-carousel-react": "^8.6.0", - "firebase": "^11.9.1", - "genkit": "^1.13.0", - "lucide-react": "^0.475.0", - "next": "15.3.3", - "next-themes": "^0.3.0", - "patch-package": "^8.0.0", - "react": "^18.3.1", - "react-day-picker": "^8.10.1", - "react-dom": "^18.3.1", - "react-hook-form": "^7.54.2", - "recharts": "^2.15.1", - "tailwind-merge": "^3.0.1", - "tailwindcss-animate": "^1.0.7", - "zod": "^3.24.2" - }, - "devDependencies": { - "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "aws-cdk-lib": "^2.189.1", - "constructs": "^10.4.2", - "esbuild": "^0.25.5", - "eslint": "9.30.0", - "eslint-config-next": "15.3.4", - "genkit-cli": "^1.13.0", - "postcss": "^8", - "tailwindcss": "^3.4.1", - "tsx": "^4.20.3", - "typescript": "^5.8.3" - } -} +{ + "name": "nextn", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev --turbopack -p 9002", + "genkit:dev": "genkit start -- tsx src/ai/dev.ts", + "genkit:watch": "genkit start -- tsx --watch src/ai/dev.ts", + "build": "next build", + "build:static": "next build", + "start": "next start", + "lint": "next lint", + "typecheck": "tsc --noEmit", + "deploy:s3": "npm run build:static && aws s3 sync out/ s3://$S3_BUCKET_NAME --delete --no-cli-pager", + "create-s3-bucket": "node scripts/create-s3-bucket.js", + "prepare": "husky" + }, + "dependencies": { + "@genkit-ai/googleai": "^1.13.0", + "@genkit-ai/next": "^1.13.0", + "@hookform/resolvers": "^4.1.3", + "@radix-ui/react-accordion": "^1.2.3", + "@radix-ui/react-alert-dialog": "^1.1.6", + "@radix-ui/react-avatar": "^1.1.3", + "@radix-ui/react-checkbox": "^1.1.4", + "@radix-ui/react-collapsible": "^1.1.11", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-dropdown-menu": "^2.1.6", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-menubar": "^1.1.6", + "@radix-ui/react-popover": "^1.1.6", + "@radix-ui/react-progress": "^1.1.2", + "@radix-ui/react-radio-group": "^1.2.3", + "@radix-ui/react-scroll-area": "^1.2.3", + "@radix-ui/react-select": "^2.1.6", + "@radix-ui/react-separator": "^1.1.2", + "@radix-ui/react-slider": "^1.2.3", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.1.3", + "@radix-ui/react-tabs": "^1.1.3", + "@radix-ui/react-toast": "^1.2.6", + "@radix-ui/react-tooltip": "^1.1.8", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "date-fns": "^3.6.0", + "dotenv": "^16.5.0", + "embla-carousel-react": "^8.6.0", + "firebase": "^11.9.1", + "genkit": "^1.13.0", + "lucide-react": "^0.475.0", + "next": "15.3.3", + "next-themes": "^0.3.0", + "patch-package": "^8.0.0", + "react": "^18.3.1", + "react-day-picker": "^8.10.1", + "react-dom": "^18.3.1", + "react-hook-form": "^7.54.2", + "recharts": "^2.15.1", + "tailwind-merge": "^3.0.1", + "tailwindcss-animate": "^1.0.7", + "zod": "^3.24.2" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "aws-cdk-lib": "^2.189.1", + "constructs": "^10.4.2", + "esbuild": "^0.25.5", + "eslint": "^9.30.0", + "eslint-config-next": "15.3.4", + "genkit-cli": "^1.13.0", + "husky": "^9.1.7", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "tsx": "^4.20.3", + "typescript": "^5.8.3" + } +}