A Next.js-based website for managing event registrations and notifications, built with TypeScript, Tailwind CSS, and AWS services.
- 🎨 Modern UI with Tailwind CSS and Framer Motion animations
- 📱 Fully responsive design
- 🔐 Secure admin dashboard
- 📸 Image and video galleries with Google Drive integration
- 📝 User registration system
- 🔔 Notification management
- 💾 DynamoDB-based data persistence
- 🚀 Optimized for performance
- Framework: Next.js 14
- Language: TypeScript
- Styling: Tailwind CSS
- Animation: Framer Motion
- Database: AWS DynamoDB
- Authentication: JWT with jose
- Cloud Services: AWS, Vercel
- UI Components: Radix UI, shadcn/ui
- Media Storage: Google Drive API
- Node.js 18.x or later
- AWS Account
- Google Cloud Project (for Drive API)
- npm or yarn or pnpm or bun
- Clone the repository:
git clone https://github.com/yourusername/yashasvigiriraj.git
cd yashasvigiriraj
- Install dependencies:
npm install
- Generate API secret key and use it for API_SECRET_KEY in next step:
npm run generate-key
- Environment Variables
Create a
.env.local
file in the root directory with the following variables:
ACCESS_KEY_ID=<Replace with your_aws_access_key>
SECRET_ACCESS_KEY=<Replace with your_aws_secret_key>
REGION=<Replace with your_aws_region>
YOUTUBE_API_KEY=<Replace with your_google_api_key>
YOUTUBE_PLAYLIST_ID=<Replace with your youtube playlist id>
GOOGLE_DRIVE_FOLDER_ID=<Replace with your_drive_folder_id>
GOOGLE_API_KEY=<Replace with your_google_api_key>
API_SECRET_KEY=<Replace with your newly generated jwt_secret_key>
ADMIN_SECRET_KEY=<Replace with the password you want to use to login to admin dashboard>
NEXT_PUBLIC_SITE_URL=<http://localhost:3000 in local or your custom domain in production>
- Run the development server:
npm run dev
- Open http://localhost:3000 in your browser.
- Install AWS CLI and configure with your credentials:
aws configure
- Create the DynamoDB table:
aws dynamodb create-table \
--table-name registration_notifications \
--attribute-definitions \
AttributeName=recordType,AttributeType=S \
AttributeName=phoneNumber,AttributeType=S \
--key-schema \
AttributeName=recordType,KeyType=HASH \
AttributeName=phoneNumber,KeyType=RANGE \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--region your-region
- Install Vercel CLI:
npm i -g vercel
- Login to Vercel:
vercel login
- Deploy:
vercel
- For production deployment:
vercel --prod
- Go to your project settings in Vercel dashboard
- Navigate to "Domains" section
- Add your domain and follow DNS configuration instructions
- Wait for DNS propagation (usually 24-48 hours)
- Install Amplify CLI:
npm install -g @aws-amplify/cli
- Configure Amplify:
amplify configure
- Initialize Amplify in your project:
amplify init
- Add hosting:
amplify add hosting
- Push changes:
amplify push
- Publish:
amplify publish
- Go to AWS Amplify Console
- Select your app
- Go to "Domain Management"
- Click "Add Domain"
- Follow the domain verification process
- Update your domain's DNS settings as instructed
/app
: Next.js app router pages and API routes/components
: Reusable React components/lib
: Utility functions and configurations/public
: Static assets/styles
: Global styles and Tailwind configuration
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.