An elegant and interactive digital wedding invitation app built with Next.js, TypeScript, and Framer Motion. This application provides a beautiful experience for inviting guests to your wedding with captivating animations and responsive design.
- Interactive letter animation that opens when clicked
- 3D envelope effect with wax seal
- Floating hearts and sparkle effects
- Support for query parameter
?to=namefor personalization
- Responsive layout with perfect screen height (
h-screen) - Animated couple photos with emoji avatars
- Gradient backgrounds with floating decorations
- CTA buttons for navigation between sections
- Music player with auto-play detection
- Audio controls with progress bar
- Background music with fallback for browser restrictions
- Floating navigation bar with blur effect
- Mobile-friendly FAB (Floating Action Button)
- Scroll progress indicator
- Auto-detect active section with scroll spy
- Smooth scrolling between sections
- Couple Introduction: Couple presentation with animations
- Wedding Details: Date, time, and add to calendar
- Countdown Timer: Real-time countdown to wedding day
- Venue Information: Ceremony and reception locations with maps
- Event Schedule: Wedding event timeline
- Gallery Preview: Couple photos preview
- RSVP Form: Guest confirmation form
- Closing Message: Closing message from the couple
- Multi-language support (Indonesian & English)
- React i18next integration
- Dynamic language switching
- Locale-specific date/time formatting
- Modern gradient designs with rose/pink theme
- Framer Motion animations in every section
- Responsive design for mobile, tablet, and desktop
- Tailwind CSS for styling
- TypeScript for type safety
- Node.js 18+
- pnpm (recommended) or npm/yarn
# Clone repository
git clone <repository-url>
cd my-wedding-app
# Install dependencies
pnpm install
# Start development server
pnpm devOpen http://localhost:3000 to view the application.
# Test with guest name
http://localhost:3000?to=John%20Doesrc/
βββ app/ # Next.js App Router
βββ components/ # Reusable components
β βββ letter-animation.tsx
β βββ floating-particles.tsx
β βββ navigation-button.tsx
βββ sections/ # Page sections
β βββ home/
β βββ components/ # Section-specific components
β βββ view/ # Main page view
βββ constants/ # App constants & config
β βββ navigation.ts
β βββ wedding.ts # Wedding configuration
βββ hooks/ # Custom React hooks
βββ locales/ # Internationalization
β βββ langs/
β βββ en/ # English translations
β βββ id/ # Indonesian translations
βββ types/ # TypeScript type definitions
βββ utils/ # Utility functions
Edit src/constants/wedding.ts to configure wedding details:
export const WEDDING_CONFIG = {
bride: {
name: 'Sarah',
fullName: 'Sarah Johnson',
},
groom: {
name: 'Mike',
fullName: 'Michael Smith',
},
date: new Date('2024-12-25T15:30:00'),
venue: {
ceremony: {
name: 'Beautiful Garden',
address: 'Jl. Taman Indah No. 123',
},
reception: {
name: 'Grand Ballroom',
address: 'Jl. Kemewahan No. 456',
},
},
};Edit src/constants/navigation.ts to configure navigation menu:
export const NAVIGATION_SECTIONS = [
{ id: 'hero', label: 'Home', icon: 'π ' },
{ id: 'couple', label: 'Couple', icon: 'π' },
// ...
];Place audio files in public/assets/audio/ and update the path in the music player component.
The app uses Tailwind CSS with a rose/pink theme. To change colors:
- Edit
tailwind.config.jsfor custom colors - Update gradient classes in components
- Modify CSS variables in
globals.css
All animations use Framer Motion. Configuration is located in:
src/constants/navigation.ts- Navigation animations- Individual components - Component-specific animations
Breakpoints used:
sm: 640px (mobile landscape)md: 768px (tablet)lg: 1024px (desktop)xl: 1280px (large desktop)
# Development
pnpm dev # Start dev server
pnpm build # Build for production
pnpm start # Start production server
pnpm lint # Run ESLint
pnpm type-check # TypeScript type checking- Next.js 15: React framework dengan App Router
- React 18: UI library
- TypeScript: Type safety
- Tailwind CSS: Utility-first CSS framework
- Framer Motion: Animation library
- CSS Modules: Scoped styling
- react-i18next: i18n library
- i18next: Internationalization framework
- clsx: Conditional classnames
- date-fns: Date utilities
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel
# Production deployment
vercel --prodFor production, set environment variables:
NEXT_PUBLIC_SITE_URL=https://your-domain.comTo use a custom domain, follow the Vercel Custom Domain Guide.
- Fork repository
- Create feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Design inspiration from modern wedding invitation trends
- Icons and emojis from Unicode Consortium
- Background music support for wedding ambiance
Made with π for beautiful wedding memories