sapphire-idea

byOm Kalyankar

Build me a full-stack 3D birthday surprise website for my girlfriend with the following complete specification: ───────────────────────────────────────── 🎯 PROJECT GOAL ───────────────────────────────────────── A stunning, immersive birthday surprise website that she will open on her birthday. It should feel magical, personal, and emotional — with smooth 3D animations, music, photos, and videos of her/us together. ───────────────────────────────────────── 🎨 FRONTEND (React + Three.js or React Three Fiber) ───────────────────────────────────────── - Full-screen 3D landing scene with floating hearts, stars, and rose petals animated in 3D space using Three.js or React Three Fiber - A dramatic "Birthday Reveal" intro: the screen starts dark, then slowly illuminates with particle explosions and her name appearing in glowing 3D text - A 3D photo gallery: photos displayed on rotating 3D cards/frames floating in space, user can click/drag to browse - A video section: cinematic full-screen video player with fade-in animations - A "Our Journey" 3D timeline: scroll through milestones like "First date", "First trip together", etc. displayed on a 3D ribbon/road that the user walks through - A love letter section: text appears letter by letter with a typewriter animation, on a parchment-style card - A 3D cake with animated candles — clicking it triggers a confetti/fireworks explosion and plays "Happy Birthday" music - Smooth GSAP-powered page transitions between sections - Background: animated gradient aurora or starfield - Autoplay ambient romantic background music (soft piano/lo-fi) with a mute button - Mobile responsive with touch gestures for 3D gallery Tech stack: React, Three.js or @react-three/fiber, @react-three/drei, GSAP, Framer Motion, Tailwind CSS ───────────────────────────────────────── 🔧 BACKEND (Node.js + Express) ───────────────────────────────────────── - REST API with the following endpoints: - POST /api/upload — upload photos and videos (multipart/form-data) - GET /api/media — fetch all uploaded photos and videos - DELETE /api/media/:id — delete a specific media item - GET /api/messages — fetch love messages / timeline entries - POST /api/messages — add a new message or milestone - GET /api/settings — fetch site config (her name, birthday date, color theme) - POST /api/settings — update site config - JWT-based authentication so only the boyfriend (admin) can upload/manage content - An admin dashboard (separate /admin route) where the boyfriend can: - Upload photos and videos before her birthday - Write love letters and timeline entries - Set her name, birthday date, and site color theme - Preview the site as she will see it - Rate limiting and input validation on all routes Tech stack: Node.js, Express.js, Multer (file uploads), JWT, bcrypt, express-validator ───────────────────────────────────────── 🗄️ DATABASE (MongoDB or PostgreSQL) ───────────────────────────────────────── - Media table/collection: id, filename, url, type (photo/video), caption, uploadedAt, order - Messages table/collection: id, title, body, date, emoji, order - Settings table/collection: herName, birthdayDate, primaryColor, accentColor, sitePassword - Users table: id, username, hashedPassword, role - Use Mongoose (MongoDB) or Prisma ORM (PostgreSQL) - Store uploaded files in /uploads folder on server OR integrate with Cloudinary for cloud storage ───────────────────────────────────────── 🔐 ADMIN PANEL (React, separate route /admin) ───────────────────────────────────────── - Login page for boyfriend with username + password - Dashboard with tabs: Media Manager | Love Letters | Timeline | Settings | Preview - Drag-and-drop photo/video uploader with progress bars - Rich text editor for love letters (use Quill or TipTap) - Reorder media items with drag-and-drop - Toggle: "Site is live" / "Site is locked" (so she can't access it early) - One-click "Copy shareable link" button ───────────────────────────────────────── ✨ SPECIAL EFFECTS & ANIMATIONS ───────────────────────────────────────── - Fireworks explosion on page load using canvas-confetti - Floating 3D hearts using Three.js particle system - Parallax scrolling on all sections - Glitch/shimmer effect on her name in the hero - Photo cards flip on hover to reveal captions - 3D rotating globe/heart shape made of her photos - Countdown timer (if birthday is in the future): "X days until your special day" - On the actual birthday: automatic confetti rain all day ───────────────────────────────────────── 🌐 DEPLOYMENT ───────────────────────────────────────── - Frontend: Vercel or Netlify - Backend: Railway or Render - Database: MongoDB Atlas (free tier) or Supabase (PostgreSQL) - Provide a complete README with setup instructions, env variables, and deployment steps - Include a .env.example file ───────────────────────────────────────── 📁 FOLDER STRUCTURE ───────────────────────────────────────── Organize as a monorepo: /client → React frontend /server → Node.js backend /admin → Admin panel (can be part of /client with protected routes) README.md .env.example docker-compose.yml (optional) ───────────────────────────────────────── 🎁 FINAL NOTES ───────────────────────────────────────── - Make the code production-ready with error handling and loading states - Use placeholder content (sample photos, sample messages) so it works out of the box - Add comments in code explaining each major section - The site should work perfectly on both desktop and mobile - Performance: lazy load all images and videos, use suspense boundaries in React Generate the complete codebase with all files.

No preview

Comments (0)

No comments yet. Be the first!

System Requirements

System Requirement Document

sapphire-idea

Introduction

The sapphire-idea project is a unique and immersive 3D birthday surprise website designed to create a magical, personal, and emotional experience. The website will feature smooth 3D animations, music, photos, and videos, all tailored to celebrate a special birthday occasion.

System Overview

The sapphire-idea project aims to deliver a stunning and interactive birthday surprise website. It will leverage modern web technologies to create a full-screen 3D experience with various interactive elements, including a photo gallery, video player, timeline, and more. The backend will support media uploads, content management, and site configuration, ensuring a seamless and personalized experience.

Page 1 of 5

Functional Requirements

  • As a User, I should be able to experience a full-screen 3D landing scene with floating hearts, stars, and rose petals.
  • As a User, I should see a dramatic "Birthday Reveal" intro with particle explosions and glowing 3D text.
  • As a User, I should be able to browse a 3D photo gallery with rotating cards/frames.
  • As a User, I should be able to watch videos in a cinematic full-screen player.
  • As a User, I should be able to scroll through a 3D timeline of milestones.
  • As a User, I should see a love letter appear with a typewriter animation.
  • As a User, I should be able to interact with a 3D cake to trigger animations and music.
  • As a User, I should experience smooth page transitions powered by GSAP.
  • As a User, I should hear ambient romantic background music with the option to mute.
  • As an Admin, I should be able to upload photos and videos.
  • As an Admin, I should be able to manage love messages and timeline entries.
  • As an Admin, I should be able to configure site settings like name, birthday date, and color theme.
  • As an Admin, I should be able to preview the site as the User will see it.
  • As an Admin, I should have secure access to upload and manage content.
  • As an Admin, I should be able to toggle the site's live status.
  • As an Admin, I should be able to reorder media items.
  • As an Admin, I should be able to copy a shareable link with one click.
Page 2 of 5

User Personas

  • User: The recipient of the birthday surprise, experiencing the website's features.
  • Admin: The boyfriend managing the content and configuration of the website.

Core User Flows

  • User opens the website -> experiences the 3D landing scene -> interacts with the "Birthday Reveal" intro.
  • User browses the 3D photo gallery -> clicks/drag to view photos -> watches videos in the player.
  • User scrolls through the 3D timeline -> reads love letters -> interacts with the 3D cake.
  • Admin logs into the admin panel -> uploads media -> configures site settings -> previews the site.

Visuals Colors and Theme

  • primary: #FF69B4 (Hot Pink)
  • primary_light: #FFB6C1 (Light Pink)
  • secondary: #FFD700 (Gold)
  • accent: #FF4500 (Orange Red)
  • highlight: #FFA500 (Orange)
  • bg: #000000 (Black)
  • surface: rgba(255, 255, 255, 0.8)
  • text: #FFFFFF (White)
  • text_muted: #D3D3D3 (Light Gray)
  • border: rgba(255, 105, 180, 0.2)
Page 3 of 5

Signature Design Concept

The homepage will feature an interactive 3D floating island where each section of the website is represented as a building. Users can navigate between sections by "flying" over the island. The island will be surrounded by a dynamic sky with floating hearts and stars. Clicking on a building will zoom in to reveal the content, while hovering over elements will trigger subtle animations. This concept will be built using @react-three/fiber and gsap for animations.

Interaction Model & Motion Direction

The landing page will use a "parallax" interaction model, creating a layered depth effect as users scroll. Decorative elements like floating hearts and stars will move at different speeds, enhancing the immersive experience. Internal pages will maintain a "static" interaction model for clarity and ease of use.

Non-Functional Requirements

  • The website must be mobile responsive and support touch gestures.
  • The backend must ensure secure access control with JWT-based authentication.
  • The system should handle media uploads efficiently and support cloud storage integration.
  • The website should perform optimally with lazy loading and suspense boundaries.
Page 4 of 5

Tech Stack

  • Frontend: React, Three.js or @react-three/fiber, @react-three/drei, GSAP, Framer Motion, Tailwind CSS
  • Backend: Node.js, Express.js, Multer, JWT, bcrypt, express-validator
  • Database: MongoDB or PostgreSQL with Mongoose or Prisma ORM
  • Deployment: Vercel or Netlify for frontend, Railway or Render for backend, MongoDB Atlas or Supabase for database

Assumptions and Constraints

  • The website is intended for a single user experience on a specific date.
  • The admin panel is accessible only to the boyfriend for content management.
  • The system must handle a limited number of media uploads due to storage constraints.

Glossary

  • 3D Timeline: A visual representation of milestones in a 3D space.
  • GSAP: GreenSock Animation Platform, used for creating animations.
  • JWT: JSON Web Token, used for secure authentication.
  • Parallax: An effect where background images move slower than foreground images, creating a sense of depth.
Page 5 of 5

No completed page designs yet.

Completed design pages will appear here when they are ready to preview.

Login: Sign In
Dashboard: View Overview
MediaManager: Upload Photos Videos
MediaManager: Reorder Media
MediaManager: Delete Media
LoveLetters: Write Love Letter
Timeline: Add Milestone
Settings: Configure Site
Settings: Toggle Live Status
Settings: Copy Share Link
Preview: View As User

No completed page designs yet.

Completed design pages will appear here when they are ready to preview.

Login: Sign In
Dashboard: View Overview
MediaManager: Upload Photos Videos
MediaManager: Reorder Media
MediaManager: Delete Media
LoveLetters: Write Love Letter
Timeline: Add Milestone
Settings: Configure Site
Settings: Toggle Live Status
Settings: Copy Share Link
Preview: View As User