Skip to content

A beautiful, simple, and efficient wedding website builder that allows couples to create stunning single-page wedding sites with RSVP management. Built with Astro, React, Tailwind CSS, and Prisma.

Notifications You must be signed in to change notification settings

dannycahyo/weddingly-builder

Repository files navigation

The Evermore - Wedding Website Builder

A beautiful, simple, and efficient wedding website builder that allows couples to create stunning single-page wedding sites with RSVP management. Built with Astro, React, Tailwind CSS, and Prisma.

✨ Features

For Couples (Admin Dashboard)

  • 🎨 Visual Builder - Single-page builder with intuitive section-based editing
  • 🎭 Customization - Global color palette and font selection
  • πŸ“Έ Media Management - Image and audio upload via Cloudinary
  • 🎡 Background Music - Upload custom music for guest pages
  • 🎫 RSVP Management - View, track, and export guest responses
  • πŸ”’ Password Protection - Optional password for guest access
  • 🌐 Unique URLs - Each wedding gets a custom shareable link

For Guests (Wedding Website)

  • πŸ“± Mobile-First Design - Optimized for all devices
  • πŸ’Œ Envelope Animation - Beautiful entrance with envelope opening
  • 🎡 Background Music - Automatic music playback on interaction
  • πŸ“… Event Details - Clear display of ceremony and reception info
  • πŸ“ Google Maps Integration - Easy location navigation
  • πŸ’ RSVP Form - Simple form with dietary restrictions
  • πŸ–ΌοΈ Photo Gallery - Carousel display of couple's photos
  • ❀️ Love Story - Share your journey with guests
  • 🎁 Gift Registry - Links to registries or bank details

πŸš€ Tech Stack

πŸ“‹ Prerequisites

  • Node.js 18+ or Bun
  • PostgreSQL database
  • Cloudinary account (for image/audio uploads)

πŸ› οΈ Installation

  1. Clone the repository
git clone https://github.com/dannycahyo/weddingly-builder.git
cd weddingly-builder
  1. Install dependencies
npm install
# or
bun install
  1. Set up environment variables

Create a .env file in the root directory:

# Database
DATABASE_URL="postgresql://user:password@localhost:5432/weddingly"

# Cloudinary
CLOUDINARY_CLOUD_NAME="your_cloud_name"
CLOUDINARY_API_KEY="your_api_key"
CLOUDINARY_API_SECRET="your_api_secret"
  1. Set up the database
npx prisma migrate dev
# or
bunx prisma migrate dev
  1. Seed the database (optional)
npx prisma db seed
# or
bunx prisma db seed

πŸƒ Development

Start the development server:

npm run dev
# or
bun run dev

The app will be available at http://localhost:4321

πŸ“¦ Build

Build for production:

npm run build
# or
bun run build

Preview the production build:

npm run preview
# or
bun run preview

πŸ—„οΈ Database Management

Run migrations

npx prisma migrate dev

Open Prisma Studio (Database GUI)

npx prisma studio

Generate Prisma Client

npx prisma generate

πŸ“ Project Structure

weddingly-builder/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ guest/              # Guest-facing components
β”‚   β”‚   β”‚   β”œβ”€β”€ EnvelopeInvitation.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ GuestPage.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ MusicPlayer.tsx
β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”œβ”€β”€ sections/           # Admin builder sections
β”‚   β”‚   β”‚   β”œβ”€β”€ HeroSection.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ MusicSection.tsx
β”‚   β”‚   β”‚   └── ...
β”‚   β”‚   β”œβ”€β”€ ui/                 # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ AudioUpload.tsx     # Audio file uploader
β”‚   β”‚   β”œβ”€β”€ BuilderForm.tsx     # Main admin form
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ layouts/
β”‚   β”‚   └── main.astro          # Main layout
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ prisma.ts           # Prisma client
β”‚   β”‚   β”œβ”€β”€ utils.ts            # Utility functions
β”‚   β”‚   └── validations.ts      # Zod schemas
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ api/                # API endpoints
β”‚   β”‚   β”‚   β”œβ”€β”€ upload.ts       # Cloudinary upload
β”‚   β”‚   β”‚   β”œβ”€β”€ wedding/        # Wedding CRUD
β”‚   β”‚   β”‚   └── rsvp.ts         # RSVP submission
β”‚   β”‚   β”œβ”€β”€ builder.astro       # Admin builder page
β”‚   β”‚   β”œβ”€β”€ [slug].astro        # Dynamic wedding pages
β”‚   β”‚   └── index.astro         # Landing page
β”‚   └── styles/
β”‚       └── global.css          # Global styles
β”œβ”€β”€ prisma/
β”‚   └── schema.prisma           # Database schema
β”œβ”€β”€ public/                     # Static assets
β”œβ”€β”€ docs/
β”‚   └── PRD.md                  # Product Requirements
β”œβ”€β”€ astro.config.mjs            # Astro configuration
β”œβ”€β”€ tailwind.config.js          # Tailwind configuration
└── package.json

🎨 Key Features Implementation

Background Music

  • Upload audio files (MP3, WAV, M4A, OGG) via Cloudinary
  • Automatic playback on user interaction (envelope opening)
  • Floating music player with play/pause and mute controls
  • Displays song title and artist

Envelope Animation

  • Beautiful entrance animation for guest pages
  • Personalized greeting with guest name
  • Smooth transition to main content
  • Framer Motion powered animations

RSVP Management

  • Guest form with name, attendance, and dietary restrictions
  • Admin dashboard to view all responses
  • Quick stats (attending, declined)
  • CSV export functionality

Customization

  • Choose from 10 color palettes
  • Select heading and body fonts
  • Toggle sections on/off
  • Upload unlimited photos to gallery

πŸ” Security

  • Password-protected wedding sites (optional)
  • Server-side validation with Zod
  • Secure file uploads via Cloudinary
  • PostgreSQL with Prisma for data safety

🌐 Deployment

This project can be deployed to any Node.js hosting platform:

  • Vercel (Recommended)
  • Netlify
  • Railway
  • Render

Make sure to:

  1. Set up environment variables
  2. Configure PostgreSQL database
  3. Run migrations before deployment

πŸ“– Documentation

For detailed product requirements, see PRD.md

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“ License

MIT License - feel free to use this project for your own wedding or commercial purposes.

πŸ’– Created with Love

Built with ❀️ for couples around the world.


The Evermore - Because every love story deserves a beautiful beginning.

About

A beautiful, simple, and efficient wedding website builder that allows couples to create stunning single-page wedding sites with RSVP management. Built with Astro, React, Tailwind CSS, and Prisma.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •