A delightful single-page Next.js site to celebrate National Princess Day with a special surprise message, beautiful animations, and confetti!
- 🎨 Beautiful pastel design with soft colors and rounded cards
- 🎭 Smooth animations using Framer Motion
- 🎊 Confetti celebration on gift reveal
- 📱 Fully responsive and mobile-first
- ♿ Accessible with keyboard navigation and ARIA labels
- 🔔 Toast notifications for user feedback
- 🖼️ Photo grid for memories
- 📋 Copy message functionality
- Node.js 18+ and npm/yarn/pnpm
# Install dependencies
npm install
# Run development server
npm run devOpen http://localhost:3000 in your browser.
# Create production build
npm run build
# Start production server
npm start# Run linter
npm run lint
# Format code
npm run format
# Run tests
npm testEdit the message content in data/message.ts:
export const messageData = {
title: 'Happy National Princess Day 👑',
subtitle: 'To my favorite princess — today, and every day.',
body: `Your custom message here...`,
// ...
};Update CSS variables in styles/globals.css:
:root {
--bg: #fff9ff;
--primary: #ffb6e6;
--accent: #ffd8a8;
--text: #2d2d2d;
}Add your own images to public/assets/ and update the image paths in the respective components:
- Hero images:
components/Hero.tsx - Letter images:
components/MessageCard.tsx - Music covers:
components/Playlist.tsx - Flip card images:
components/FlipCards.tsx
👉 View Live Site 👈
The site is currently deployed on Netlify and accessible at the URL above.
- Push your code to GitHub
- Go to netlify.com
- Click "New site from Git" and connect your repository
- Netlify will automatically detect Next.js and deploy
- Your site will be live with a custom domain or netlify.app subdomain
- Push your code to GitHub
- Go to vercel.com
- Click "New Project" and import your repository
- Vercel will automatically detect Next.js and deploy
- Create a new account at render.com
- Click "New +" → "Web Service"
- Connect your GitHub repository
- Use these settings:
- Build Command:
npm run build - Start Command:
npm start - Environment: Node
- Build Command:
princess-day/
├── components/
│ ├── Hero.tsx # Hero section with crown animation
│ ├── MessageCard.tsx # Animated message card with envelope
│ ├── Playlist.tsx # Music playlist with carousel
│ ├── FlipCards.tsx # 3D flip cards with messages
│ ├── FinalLetter.tsx # Final love letter page
│ ├── SealedLetter.tsx # Sealed letter confirmation page
│ ├── TypewriterText.tsx # Typewriter effect component
│ └── Confetti.tsx # Confetti animation
├── data/
│ └── message.ts # Message content (editable)
├── lib/
│ └── toast.ts # Toast notifications
├── pages/
│ ├── _app.tsx # App wrapper
│ └── index.tsx # Main page
├── public/
│ └── assets/
│ ├── crown.svg # Crown illustration
│ ├── intro-*.webp # Hero section images
│ ├── letter-*.webp # Letter decorative images
│ ├── music*.png # Music track cover images
│ ├── music*.mp3 # Audio files
│ └── pic*.png # Flip card images
├── styles/
│ └── globals.css # Global styles & CSS variables
└── package.json
- Next.js 14 - React framework
- TypeScript - Type safety
- Tailwind CSS - Utility-first styling
- Framer Motion - Smooth animations
- React Hot Toast - Toast notifications
Made with 💕 for National Princess Day