- Create Footer component with consistent styling and angrymichigander.com link
- Replace inline footers in all pages (home, long-story, gallery) with Footer component
- Ensure consistent footer content across the entire site
- Add proper link styling with hover effects and security attributes
- Add proper CSS classes for link visibility (text-primary hover:underline)
- Add target='_blank' to open in new tab
- Add security attributes for external link
- Fix spacing around the link text
## Overview
This PR adds the necessary secrets configuration and deployment
infrastructure to enable automated deployment of the Next.js application
to AWS.
## Changes Made
### GitHub Actions Configuration
- Updated to include environment variables and secrets for AWS
deployment
- Added proper secret references for AWS credentials and configuration
### Application Configuration
- **next.config.ts**: Added environment variable configuration for
production deployment
- **package.json**: Updated with deployment-related dependencies and
scripts
- **robots.ts**: Added SEO configuration for search engine crawlers
- **sitemap.ts**: Added sitemap generation for better SEO
### Deployment Scripts
- **scripts/create-s3-bucket.js**: Added utility script for S3 bucket
creation and management
## Benefits
- ✅ Automated deployment pipeline ready
- ✅ Proper secrets management in place
- ✅ SEO optimization with robots.txt and sitemap
- ✅ Production-ready configuration
- ✅ AWS infrastructure automation scripts
## Testing
- All configuration files have been validated
- Environment variables properly referenced
- Scripts are executable and ready for deployment
Ready for review and merge to enable automated deployments! 🚀
- Changed aws-region from us-east-2 to us-east-1 for correct deployment
- Updated S3 website URL to use us-east-1 endpoint
- Added note about CloudFlare proxy for production serving
- Replace 'any' types with proper TypeScript interfaces
- Fix unescaped apostrophe in not-found page
- Convert actionTypes constant to type definition to fix unused variable
- Optimize font loading using next/font instead of external links
- Improve type safety and remove linting warnings
- Replace hardcoded AWS role ARN with CC_OIDC_ROLE secret
- Improves security by not exposing AWS account details in workflow
- Makes the workflow more portable and configurable
- Runs on all pushes except to master branch
- Also runs on pull requests
- Performs linting, building, and optional testing
- Provides fast feedback for development branches
- Uses concurrency groups to cancel outdated runs
- Update amplify.yml to use Node.js 20 to resolve engine compatibility
warnings
- Add .nvmrc file to ensure consistent Node.js version across
environments
- Replace basic README with comprehensive project documentation
including features, setup instructions, and deployment options
🤖 Generated with [Claude Code](https://claude.ai/code)
- Update amplify.yml to use Node.js 20 to resolve engine compatibility warnings
- Add .nvmrc file to ensure consistent Node.js version across environments
- Replace basic README with comprehensive project documentation including features, setup instructions, and deployment options
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Try AWS Secrets Manager first with the Amplify secret path
- Fall back to SSM Parameter Store if Secrets Manager fails
- Fall back to environment variable if both fail
- Write retrieved secret to .env.production for Next.js to use
- Log the process but hide the actual secret value
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove unnecessary Lambda function and API route
- Remove backend deployment from amplify.yml
- Just use process.env.YOUTUBE_API_KEY directly
- Keep it simple - no need for complex secret management
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create Lambda function with secret environment variable
- Add YouTube API function to backend configuration
- Create Next.js API route to handle YouTube requests
- Update gallery page to use API route
- This follows the correct Amplify Gen 2 pattern for secrets
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove backend pipeline deployment that was causing IAM issues
- Remove complex secret configuration from backend.ts
- Use simple environment variable approach from Amplify Console
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add secret definition to backend.ts using proper Amplify Gen 2 syntax
- Update amplify.yml to include backend build phase
- This should properly expose secrets as environment variables
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove colon from echo command that was causing YAML parsing error
- Commands should now execute properly
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Echo the API key value to debug if it's actually set
- Write to .env.production file for Next.js to read
- Display contents of .env.production to verify
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Simplified amplify.yml to export env var during build
- Updated both gallery and dadvocate pages to check multiple env var names
- Added debugging to show available env vars
- Added publicRuntimeConfig and serverRuntimeConfig to next.config.ts
- Created config helper in lib/config.ts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Check multiple possible locations for the API key
- Add debugging to find available environment variables
- Try secrets object, AMPLIFY_ prefix, and standard env var
- Create placeholder .env.production file
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create .env.production file with YOUTUBE_API_KEY during build
- This ensures Next.js can access the environment variable
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add amplify.yml for proper build configuration
- Update next.config.ts to expose YOUTUBE_API_KEY env var
- This should fix the issue with secrets not being available in production
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added aws-amplify and related packages to dependencies.
- Updated TypeScript and added tsx to devDependencies.
- Modified gallery page to log the availability of the YouTube API key.