Remove Firebase and Vercel deployment options
Some checks failed
CI / test (push) Has been cancelled
CI / test (pull_request) Successful in 14m18s

- Remove firebase package dependency
- Delete apphosting.yaml configuration file
- Update README.md to focus on AWS S3 deployment only
- Update CLAUDE.md documentation accordingly
- Clean up package-lock.json (removed 54 packages)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Derek Slenk 2025-07-17 23:50:39 -04:00
parent cdfc23e563
commit 2b74d15a4c
6 changed files with 57 additions and 659 deletions

View file

@ -17,7 +17,9 @@
"Bash(git reset:*)",
"Bash(git checkout:*)",
"WebFetch(domain:cheatingchelsea.com)",
"Bash(npm install:*)"
"Bash(npm install:*)",
"Bash(npm run typecheck:*)",
"Bash(rm:*)"
],
"deny": []
}

View file

@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Project Overview
This is a Next.js 15.3.3 application with TypeScript, React 18, and Firebase hosting. The app exposes harmful activities and supports Kristen Jacobs through a GoFundMe campaign.
This is a Next.js 15.3.3 application with TypeScript, React 18, and multiple deployment options. The app exposes harmful activities and supports Kristen Jacobs through a GoFundMe campaign.
## Essential Commands
@ -15,7 +15,8 @@ npm run genkit:dev # Start Genkit AI development server
npm run genkit:watch # Start Genkit with file watching
# Production
npm run build # Build the Next.js application
npm run build # Build with git commit hash injection
npm run build:static # Standard Next.js build
npm run start # Start production server
# Quality Checks
@ -23,8 +24,8 @@ npm run lint # Run Next.js linting
npm run typecheck # Run TypeScript type checking
# Deployment
npm run deploy:s3 # Deploy to AWS S3 bucket
npm run create-s3-bucket # Create S3 bucket for deployment
npm run deploy:s3 # Deploy to AWS S3 bucket (requires S3_BUCKET_NAME env var)
npm run create-s3-bucket # Interactive S3 bucket setup
```
## Architecture Overview
@ -32,24 +33,33 @@ npm run create-s3-bucket # Create S3 bucket for deployment
### App Structure
- **App Router**: Uses Next.js App Router in `src/app/`
- **Pages**: Homepage, Gallery (YouTube videos), Dadvocate (curated videos), Long Story
- **Static Generation**: Pages use static generation with ISR for external data
- **Deployment**: Supports Static hosting (S3), Firebase App Hosting, and Vercel
- **Static Export**: Configured with `output: 'export'` for static hosting
- **Deployment**: AWS S3 static hosting
### Key Patterns
1. **UI Components**: Full shadcn/ui component library in `src/components/ui/`
2. **Styling**: Tailwind CSS with custom theme, use `cn()` utility for class merging
3. **Data Fetching**: Server-side fetching in page components with fallback data
4. **Environment Variables**: Only `YOUTUBE_API_KEY` is used
3. **Data Fetching**: Server-side fetching with fallback data, 1-hour cache for YouTube API
4. **Environment Variables**: `YOUTUBE_API_KEY` (required), `S3_BUCKET_NAME` (for deployment)
5. **Path Alias**: Use `@/` for imports from `src/` directory
### Build & Deployment Details
- **Version Tracking**: Build process injects git commit hash into footer via `scripts/set-git-commit.js`
- **Static Files**: Build outputs to `out/` directory for S3 deployment
- **Build Errors**: TypeScript and ESLint errors are ignored (configured in next.config.ts)
- **S3 Deployment**: Uses dotenv-cli to load environment variables from `.env.local`
- **Pre-commit Hooks**: Husky installed for running lint checks before commits
### Development Notes
- **Build Configuration**: TypeScript and ESLint errors are ignored during builds
- **YouTube API**: Gallery and Dadvocate pages fetch video data with 1-hour cache
- **AI Integration**: Genkit setup exists but is minimally implemented
- **No Testing Framework**: Project currently has no test setup
- **AI Integration**: Genkit configured with Google AI (Gemini 2.0 Flash) but minimally implemented
- **Theme**: Dark/light mode support via next-themes
- **Pre-commit**: Husky runs linting before commits
- **Image Optimization**: Configured for YouTube thumbnails and placeholder images
### Adding Features
- New pages: Create directory in `src/app/` with `page.tsx` and metadata export
- New pages: Create directory in `src/app/` with `page.tsx` and export metadata
- New components: Add to `src/components/` or use existing shadcn/ui components
- API integration: Use server components with async/await and error handling
- YouTube videos: Update video IDs in gallery/page.tsx or dadvocate/page.tsx, then rebuild
## Code Style Guidelines
- Always use 'tea' instead of 'gh'

View file

@ -17,7 +17,7 @@ A Next.js application built to expose harmful activities and support Kristen Jac
- **Language**: TypeScript
- **UI Components**: shadcn/ui component library
- **Styling**: Tailwind CSS with custom theming
- **Hosting**: Supports Static hosting (S3), Firebase App Hosting, and Vercel
- **Hosting**: AWS S3 static hosting
- **AI Integration**: Google Genkit (minimal implementation)
## 📋 Prerequisites
@ -89,14 +89,6 @@ This application supports multiple deployment platforms:
### Static Hosting (AWS S3)
The project includes CI/CD workflow for automatic deployment to AWS S3.
### Firebase App Hosting
Deploy using Firebase CLI:
```bash
firebase deploy
```
### Vercel
Deploy directly from Git repository through Vercel dashboard or CLI.
## 📁 Project Structure

View file

@ -1,7 +0,0 @@
# Settings to manage and configure a Firebase App Hosting backend.
# https://firebase.google.com/docs/app-hosting/configure
runConfig:
# Increase this value if you'd like to automatically spin up
# more instances in response to increased traffic.
maxInstances: 1

653
package-lock.json generated
View file

@ -37,7 +37,6 @@
"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",
@ -59,6 +58,7 @@
"aws-cdk-lib": "^2.189.1",
"constructs": "^10.4.2",
"cross-env": "^7.0.3",
"dotenv-cli": "^8.0.0",
"esbuild": "^0.25.5",
"eslint": "^9.30.0",
"eslint-config-next": "15.3.4",
@ -381,538 +381,6 @@
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@firebase/ai": {
"version": "1.4.0",
"license": "Apache-2.0",
"dependencies": {
"@firebase/app-check-interop-types": "0.3.3",
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x",
"@firebase/app-types": "0.x"
}
},
"node_modules/@firebase/analytics": {
"version": "0.10.16",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/installations": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/analytics-compat": {
"version": "0.2.22",
"license": "Apache-2.0",
"dependencies": {
"@firebase/analytics": "0.10.16",
"@firebase/analytics-types": "0.8.3",
"@firebase/component": "0.6.17",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/analytics-types": {
"version": "0.8.3",
"license": "Apache-2.0"
},
"node_modules/@firebase/app": {
"version": "0.13.1",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"idb": "7.1.1",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@firebase/app-check": {
"version": "0.10.0",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/app-check-compat": {
"version": "0.3.25",
"license": "Apache-2.0",
"dependencies": {
"@firebase/app-check": "0.10.0",
"@firebase/app-check-types": "0.5.3",
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/app-check-interop-types": {
"version": "0.3.3",
"license": "Apache-2.0"
},
"node_modules/@firebase/app-check-types": {
"version": "0.5.3",
"license": "Apache-2.0"
},
"node_modules/@firebase/app-compat": {
"version": "0.4.1",
"license": "Apache-2.0",
"dependencies": {
"@firebase/app": "0.13.1",
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@firebase/app-types": {
"version": "0.9.3",
"license": "Apache-2.0"
},
"node_modules/@firebase/app/node_modules/idb": {
"version": "7.1.1",
"license": "ISC"
},
"node_modules/@firebase/auth-compat": {
"version": "0.5.27",
"license": "Apache-2.0",
"dependencies": {
"@firebase/auth": "1.10.7",
"@firebase/auth-types": "0.13.0",
"@firebase/component": "0.6.17",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/auth-compat/node_modules/@firebase/auth": {
"version": "1.10.7",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x",
"@react-native-async-storage/async-storage": "^1.18.1"
},
"peerDependenciesMeta": {
"@react-native-async-storage/async-storage": {
"optional": true
}
}
},
"node_modules/@firebase/auth-interop-types": {
"version": "0.2.4",
"license": "Apache-2.0"
},
"node_modules/@firebase/auth-types": {
"version": "0.13.0",
"license": "Apache-2.0",
"peerDependencies": {
"@firebase/app-types": "0.x",
"@firebase/util": "1.x"
}
},
"node_modules/@firebase/component": {
"version": "0.6.17",
"license": "Apache-2.0",
"dependencies": {
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@firebase/data-connect": {
"version": "0.3.9",
"license": "Apache-2.0",
"dependencies": {
"@firebase/auth-interop-types": "0.2.4",
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/database": {
"version": "1.0.19",
"license": "Apache-2.0",
"dependencies": {
"@firebase/app-check-interop-types": "0.3.3",
"@firebase/auth-interop-types": "0.2.4",
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"faye-websocket": "0.11.4",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@firebase/database-compat": {
"version": "2.0.10",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/database": "1.0.19",
"@firebase/database-types": "1.0.14",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@firebase/database-types": {
"version": "1.0.14",
"license": "Apache-2.0",
"dependencies": {
"@firebase/app-types": "0.9.3",
"@firebase/util": "1.12.0"
}
},
"node_modules/@firebase/firestore": {
"version": "4.7.17",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"@firebase/webchannel-wrapper": "1.0.3",
"@grpc/grpc-js": "~1.9.0",
"@grpc/proto-loader": "^0.7.8",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/firestore-compat": {
"version": "0.3.52",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/firestore": "4.7.17",
"@firebase/firestore-types": "3.0.3",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/firestore-types": {
"version": "3.0.3",
"license": "Apache-2.0",
"peerDependencies": {
"@firebase/app-types": "0.x",
"@firebase/util": "1.x"
}
},
"node_modules/@firebase/functions": {
"version": "0.12.8",
"license": "Apache-2.0",
"dependencies": {
"@firebase/app-check-interop-types": "0.3.3",
"@firebase/auth-interop-types": "0.2.4",
"@firebase/component": "0.6.17",
"@firebase/messaging-interop-types": "0.2.3",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/functions-compat": {
"version": "0.3.25",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/functions": "0.12.8",
"@firebase/functions-types": "0.6.3",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/functions-types": {
"version": "0.6.3",
"license": "Apache-2.0"
},
"node_modules/@firebase/installations": {
"version": "0.6.17",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/util": "1.12.0",
"idb": "7.1.1",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/installations-compat": {
"version": "0.2.17",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/installations": "0.6.17",
"@firebase/installations-types": "0.5.3",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/installations-types": {
"version": "0.5.3",
"license": "Apache-2.0",
"peerDependencies": {
"@firebase/app-types": "0.x"
}
},
"node_modules/@firebase/installations/node_modules/idb": {
"version": "7.1.1",
"license": "ISC"
},
"node_modules/@firebase/logger": {
"version": "0.4.4",
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@firebase/messaging": {
"version": "0.12.21",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/installations": "0.6.17",
"@firebase/messaging-interop-types": "0.2.3",
"@firebase/util": "1.12.0",
"idb": "7.1.1",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/messaging-compat": {
"version": "0.2.21",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/messaging": "0.12.21",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/messaging-interop-types": {
"version": "0.2.3",
"license": "Apache-2.0"
},
"node_modules/@firebase/messaging/node_modules/idb": {
"version": "7.1.1",
"license": "ISC"
},
"node_modules/@firebase/performance": {
"version": "0.7.6",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/installations": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0",
"web-vitals": "^4.2.4"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/performance-compat": {
"version": "0.2.19",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/performance": "0.7.6",
"@firebase/performance-types": "0.2.3",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/performance-types": {
"version": "0.2.3",
"license": "Apache-2.0"
},
"node_modules/@firebase/remote-config": {
"version": "0.6.4",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/installations": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/remote-config-compat": {
"version": "0.2.17",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/remote-config": "0.6.4",
"@firebase/remote-config-types": "0.4.0",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/remote-config-types": {
"version": "0.4.0",
"license": "Apache-2.0"
},
"node_modules/@firebase/storage": {
"version": "0.13.13",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x"
}
},
"node_modules/@firebase/storage-compat": {
"version": "0.3.23",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/storage": "0.13.13",
"@firebase/storage-types": "0.8.3",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app-compat": "0.x"
}
},
"node_modules/@firebase/storage-types": {
"version": "0.8.3",
"license": "Apache-2.0",
"peerDependencies": {
"@firebase/app-types": "0.x",
"@firebase/util": "1.x"
}
},
"node_modules/@firebase/util": {
"version": "1.12.0",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@firebase/webchannel-wrapper": {
"version": "1.0.3",
"license": "Apache-2.0"
},
"node_modules/@floating-ui/core": {
"version": "1.7.1",
"license": "MIT",
@ -6011,6 +5479,32 @@
"url": "https://dotenvx.com"
}
},
"node_modules/dotenv-cli": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/dotenv-cli/-/dotenv-cli-8.0.0.tgz",
"integrity": "sha512-aLqYbK7xKOiTMIRf1lDPbI+Y+Ip/wo5k3eyp6ePysVaSqbyxjyK3dK35BTxG+rmd7djf5q2UPs4noPNH+cj0Qw==",
"dev": true,
"license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.6",
"dotenv": "^16.3.0",
"dotenv-expand": "^10.0.0",
"minimist": "^1.2.6"
},
"bin": {
"dotenv": "cli.js"
}
},
"node_modules/dotenv-expand": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz",
"integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==",
"dev": true,
"license": "BSD-2-Clause",
"engines": {
"node": ">=12"
}
},
"node_modules/dotprompt": {
"version": "1.1.1",
"license": "ISC",
@ -7170,16 +6664,6 @@
"reusify": "^1.0.4"
}
},
"node_modules/faye-websocket": {
"version": "0.11.4",
"license": "Apache-2.0",
"dependencies": {
"websocket-driver": ">=0.5.1"
},
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/fd-slicer": {
"version": "1.1.0",
"dev": true,
@ -7269,62 +6753,6 @@
"micromatch": "^4.0.2"
}
},
"node_modules/firebase": {
"version": "11.9.1",
"license": "Apache-2.0",
"dependencies": {
"@firebase/ai": "1.4.0",
"@firebase/analytics": "0.10.16",
"@firebase/analytics-compat": "0.2.22",
"@firebase/app": "0.13.1",
"@firebase/app-check": "0.10.0",
"@firebase/app-check-compat": "0.3.25",
"@firebase/app-compat": "0.4.1",
"@firebase/app-types": "0.9.3",
"@firebase/auth": "1.10.7",
"@firebase/auth-compat": "0.5.27",
"@firebase/data-connect": "0.3.9",
"@firebase/database": "1.0.19",
"@firebase/database-compat": "2.0.10",
"@firebase/firestore": "4.7.17",
"@firebase/firestore-compat": "0.3.52",
"@firebase/functions": "0.12.8",
"@firebase/functions-compat": "0.3.25",
"@firebase/installations": "0.6.17",
"@firebase/installations-compat": "0.2.17",
"@firebase/messaging": "0.12.21",
"@firebase/messaging-compat": "0.2.21",
"@firebase/performance": "0.7.6",
"@firebase/performance-compat": "0.2.19",
"@firebase/remote-config": "0.6.4",
"@firebase/remote-config-compat": "0.2.17",
"@firebase/storage": "0.13.13",
"@firebase/storage-compat": "0.3.23",
"@firebase/util": "1.12.0"
}
},
"node_modules/firebase/node_modules/@firebase/auth": {
"version": "1.10.7",
"license": "Apache-2.0",
"dependencies": {
"@firebase/component": "0.6.17",
"@firebase/logger": "0.4.4",
"@firebase/util": "1.12.0",
"tslib": "^2.1.0"
},
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
"@firebase/app": "0.x",
"@react-native-async-storage/async-storage": "^1.18.1"
},
"peerDependenciesMeta": {
"@react-native-async-storage/async-storage": {
"optional": true
}
}
},
"node_modules/flat-cache": {
"version": "4.0.1",
"dev": true,
@ -8028,10 +7456,6 @@
"node": ">= 0.8"
}
},
"node_modules/http-parser-js": {
"version": "0.5.10",
"license": "MIT"
},
"node_modules/http-proxy-agent": {
"version": "5.0.0",
"dev": true,
@ -11923,33 +11347,10 @@
"node": ">= 8"
}
},
"node_modules/web-vitals": {
"version": "4.2.4",
"license": "Apache-2.0"
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
"license": "BSD-2-Clause"
},
"node_modules/websocket-driver": {
"version": "0.7.4",
"license": "Apache-2.0",
"dependencies": {
"http-parser-js": ">=0.5.1",
"safe-buffer": ">=5.1.0",
"websocket-extensions": ">=0.1.1"
},
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/websocket-extensions": {
"version": "0.1.4",
"license": "Apache-2.0",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/whatwg-url": {
"version": "5.0.0",
"license": "MIT",

View file

@ -11,7 +11,7 @@
"start": "next start",
"lint": "next lint",
"typecheck": "tsc --noEmit",
"deploy:s3": "npm run build && aws s3 sync out/ s3://$S3_BUCKET_NAME --delete",
"deploy:s3": "npm run build && dotenv -e .env.local -- aws s3 sync out/ s3://$S3_BUCKET_NAME --delete",
"create-s3-bucket": "node scripts/create-s3-bucket.js",
"prepare": "husky install"
},
@ -45,7 +45,6 @@
"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",
@ -67,6 +66,7 @@
"aws-cdk-lib": "^2.189.1",
"constructs": "^10.4.2",
"cross-env": "^7.0.3",
"dotenv-cli": "^8.0.0",
"esbuild": "^0.25.5",
"eslint": "^9.30.0",
"eslint-config-next": "15.3.4",