A comprehensive, bilingual (English & Bengali) wedding website serving as the digital hub for a multi-day wedding celebration. This modern web application provides guests with event information, RSVP management, photo galleries, live streaming, and more.
- Event Information: Complete wedding schedule with dates, times, and venue details
- Interactive Maps: Google Maps integration for all venues
- RSVP System: Secure token-based RSVP with dietary preferences and guest count
- Photo & Video Galleries: Categorized media albums with guest upload capabilities
- Live Streaming: Real-time streaming for each event with countdown timers
- Travel & Accommodation: Hotel information, shuttle schedules, and airport pickup details
- Local Guide: Travel tips, local customs, dress codes, and emergency contacts
- Multilingual Support: English and Bengali language options
- Contact & Support: Guest contact forms and FAQ section
- Secure Dashboard: Authentication-protected admin panel
- Content Management: Upload, edit, and manage photos/videos with moderation
- RSVP Management: Track and manage guest responses
- Event Management: Add/edit event schedules and venue information
- Guest Management: View guest details, countries, and accommodation info
- Media Moderation: Approve/reject guest-uploaded content
- Fully Responsive: Optimized for desktop, tablet, and mobile devices
- Dark Mode: Optional dark theme toggle
- Social Sharing: Integration with Instagram, Facebook, and other platforms
- Performance Optimized: Fast loading with image optimization
- SEO Friendly: Optimized for search engines
- Frontend: Next.js 15.4.5, React 19.1.0, TypeScript
- Styling: Tailwind CSS 4, Headless UI, Heroicons
- Backend: Next.js API Routes
- Database: MySQL with Prisma ORM
- Authentication: NextAuth.js with JWT tokens
- File Storage: Open-Source and Free provider for media management
- Email Service: NodeMailer and Gmail
- Forms: React Hook Form with Zod validation
- State Management: Zustand
- Testing: Jest with React Testing Library
- Deployment: Hostinger VPS
- Node.js 18+
- npm or yarn
- MySQL database
- Open-Source Free Provider account (for media storage)
- Gmail App Password and account (for emails)
-
Clone the repository
git clone https://github.com/syed-reza98/Sharothee-Wedding.git cd Sharothee-Wedding/client -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local
Configure the following variables:
# Database DATABASE_URL="mysql://username:password@localhost:3306/wedding_db" # NextAuth NEXTAUTH_SECRET="your-secret-key" NEXTAUTH_URL="http://localhost:3000"
-
Set up the database
npm run db:migrate npm run db:generate
-
Run the development server
npm run dev
-
Open in browser Navigate to http://localhost:3000
npm run dev- Start development server with Turbopacknpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run type-check- Run TypeScript type checkingnpm run test- Run Jest testsnpm run test:watch- Run tests in watch modenpm run test:coverage- Run tests with coveragenpm run db:generate- Generate Prisma clientnpm run db:push- Push schema changes to databasenpm run db:migrate- Run database migrationsnpm run db:studio- Open Prisma Studio
-
Server Setup
- Ubuntu 20.04+ VPS
- Node.js 18+ installed
- MySQL database setup
- Nginx as reverse proxy
- SSL certificate (Let's Encrypt)
-
Environment Configuration
# Set production environment variables export NODE_ENV=production export DATABASE_URL="mysql://username:password@hostname:3306/wedding_db" export NEXTAUTH_URL="https://yourdomain.com"
-
Build and Deploy
npm run build npm run start
-
Process Management Use PM2 for process management:
npm install -g pm2 pm2 start npm --name "wedding-website" -- start pm2 startup pm2 save
client/
├── src/
│ ├── app/ # Next.js app directory
│ ├── components/ # React components
│ ├── lib/ # Utility functions
│ ├── types/ # TypeScript type definitions
│ └── styles/ # Global styles
├── prisma/
│ └── schema.prisma # Database schema
├── public/ # Static assets
└── package.json
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For questions or support, please contact the development team or create an issue in the repository.