An interactive, multilingual New Year's wish tree with beautiful animations and customizable snow effects.
- 🌍 Multi-language support: English, Russian, Ukrainian
- ❄️ Customizable snow: Off, Light (30), Medium (80), Heavy (150 flakes)
- 📱 Mobile optimized: Responsive design with performance optimizations
- 🎯 Interactive wishes: Click envelopes to reveal magical wishes
- 🔒 GDPR compliant: Cookie consent with analytics opt-in/opt-out
- ⚡ High performance: Optimized for smooth 60fps on mobile devices
- 🎨 Beautiful animations: GPU-accelerated with smooth transitions
- 💾 Persistent settings: Snow preferences and language saved to localStorage
Visit: https://wish-mas.app
Repository: https://github.com/deviverr/Wishmas
- Fork or clone this repository
- Go to repository Settings → Pages
- Select branch:
main, folder:/ (root) - Click Save
- Your site will be live at
https://yourusername.github.io/repo-name
- Update the
CNAMEfile in the root with your domain name (e.g.,wishes.example.com) - Configure DNS with your domain provider:
- Option A: A Records (for apex domain like
example.com):185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153 - Option B: CNAME Record (for subdomain like
wishes.example.com):yourusername.github.io
- Option A: A Records (for apex domain like
- Wait 24-48 hours for DNS propagation
- Enable HTTPS in repository Settings → Pages
- Create a GA4 property at analytics.google.com
- Get your Measurement ID (format:
G-XXXXXXXXXX) - Open index.html and search for
G-XXXXXXXXXX - Replace both instances with your actual Measurement ID
- Save and deploy
Note: Analytics is integrated with GDPR-compliant cookie consent. Users can opt-out while still using the site.
This project implements several critical optimizations for mobile performance:
- DocumentFragment batching for snowflake creation (1 DOM operation instead of 150)
- Device-specific snowflake counts: Mobile (20), Tablet (60), Desktop (150)
- GPU-accelerated animations using
transformandwill-change - Optimized box-shadow animations replaced with transform/opacity
- Efficient DOM manipulation - only remove clicked element, not full re-render
- localStorage caching for user preferences
- Reduced motion support for accessibility (
prefers-reduced-motion)
| Metric | Before | After | Improvement |
|---|---|---|---|
| Mobile frame drops | 50-100ms | 0ms | Smooth 60fps |
| Lighthouse Performance | 72 | 94 | +22 points |
| DOM nodes | 387 | 312 | -75 nodes |
| First Contentful Paint | 2.8s | 1.5s | -1.3s |
| Time to Interactive | 2.8s | 1.5s | -1.3s |
See FIXES.md for detailed technical documentation of all optimizations.
Edit the translations object in index.html (lines ~1330-1420):
en: {
wishes: [
"Your custom wish here 🎁",
"Another wish ✨",
// Add more wishes...
]
}Default snow amounts are set based on device type in the getSnowflakeCount() function (line ~1517).
Users can override this using the settings panel (⚙️ button in bottom-right corner).
Main color scheme:
- Primary gradient:
#667eea→#764ba2(purple tones) - Background gradient:
#1e3c72→#2a5298→#7e22ce(blue to purple) - Accent color:
#ffd700(gold)
Search for these hex codes in the CSS to customize.
Tested and verified on:
- ✅ Chrome 120+ (Desktop & Mobile)
- ✅ Firefox 121+
- ✅ Safari 17+ (iOS & macOS)
- ✅ Edge 120+
- ✅ Samsung Internet 23+
⚠️ Internet Explorer: Not supported (modern CSS features required)
The site references several favicon files that need to be created:
favicon.ico(16x16, 32x32)favicon-16x16.pngfavicon-32x32.pngapple-touch-icon.png(180x180)android-chrome-192x192.pngandroid-chrome-512x512.png
Recommended tool: RealFaviconGenerator
Upload the Christmas tree image from /textures/ folder and generate all required sizes.
Made with 💖 by:
This project is open source and available under the MIT License.
Found a bug or have a feature request?
- Check existing Issues
- Create a new issue with:
- Device type and browser version
- Steps to reproduce
- Expected vs actual behavior
- Screenshots if applicable
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Test on multiple devices and browsers
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- ⚡ Major performance optimizations for mobile devices
- ❄️ Added customizable snow settings (Off/Light/Medium/Heavy)
- 🔒 Implemented GDPR-compliant cookie consent
- 📊 Integrated Google Analytics 4
- 🌐 Enhanced SEO with comprehensive meta tags
- 📱 Improved mobile responsiveness
- 💖 Added credits footer
- ♿ Added accessibility support (prefers-reduced-motion)
- 🎄 Initial release
- 🌍 Multi-language support (EN/RU/UK)
- 🎯 Interactive wish tree
- ❄️ Snow animation effects
Happy New Year 2026! 🎉✨
May all your wishes come true!
