# Songs of Eden — Full Site Context for LLMs ## Who is Songs of Eden? Songs of Eden is a pianist, live performer, and multi-platinum music producer based in Stockholm, Sweden. The project blends cinematic, relaxing, and emotionally resonant piano compositions with modern production. Songs of Eden has collaborated with world-class artists and accumulated hundreds of millions of streams across platforms. ## Music & Catalog Songs of Eden releases original piano-led music across streaming platforms including Spotify, Apple Music, and YouTube. The catalog spans: - Solo piano compositions — meditative, ambient, and neoclassical in style - Produced tracks — piano as the anchor with layered production - Collaborations — with vocalists and other producers All music is available to stream via the site's integrated Spotify player. Fans with Spotify Premium accounts can play full tracks directly on the site. ## The Website (songsofeden.com) The official website is a Next.js 15 application with the following key areas: ### Home Page (/) - Hero section with background imagery and call-to-action - Featured and latest tracks with play overlays - Random song section with shuffle functionality - Artist stats (YouTube subscribers, Instagram followers, Spotify streams) - About section with biography - Listeners map — a world map showing where fans are located (opt-in) - Music section with album browsing ### Song Pages (/songs/[trackId]) - Full track info: album art, title, album name - Play/Pause overlay using Spotify SDK (Premium) or preview URL fallback - Spotify embed for non-logged-in users - Fan vote system — users can vote for their favourite tracks - Spotify follow status check and follow prompt - Piano Challenge card — interactive piano game tied to the track - Behind-the-scenes exclusive content (YouTube video, story, instruments used, recording notes, inspiration) — unlocked after sign-in ### Paint 88 (/paint88) An original gamification system where fans unlock piano keys by completing musical challenges. - 88 keys total on a virtual grand piano - Keys are unlocked by completing Piano Challenges (see below) - Piano styles unlock at key milestones: Classic (0), Midnight Blue (22), Sunset Rose (44), Aurora Borealis (66), Golden Grand (88) - Discount tiers unlock at: 22 keys = 5%, 44 keys = 10%, 66 keys = 15%, 88 keys = 20% off merch - Users can generate a Shopify discount code when they reach a discount tier - The piano visualisation is interactive and animates key unlocks ### Piano Challenges Each song can have an associated Piano Challenge — a note phrase fans must play on a virtual on-screen piano. **Difficulty modes:** - Guided (Easy) — keys light up one at a time; press each lit key. Awards 1 key. - Listen & Follow (Medium) — hear the phrase played, then repeat it with key hints. Awards 2 keys. - Memory (Hard) — hear the phrase once, no hints, play from memory. Awards 3 keys. - Speed Bonus — guided mode but each note must be hit within a timing window. Awards 1 key + 1 speed bonus. Rules: - Each difficulty can be completed once per day per song (resets at midnight UTC) - Keys awarded scale by accuracy: `floor(baseKeys × correctNotes/totalNotes)` - Speed bonus only awarded on 100% accuracy - Capped by the challenge's `maxKeys` setting (default 5) ### Shop (/shop) Shopify-powered merchandise store integrated via the Storefront API. Features: - Product grid with filtering - Cart with slide-out drawer - Discount code redemption (generated from Paint 88 progress) - Variant selection (size, colour) ### Fan Map An opt-in world map where fans can drop a pin to show their location. Features: - City/country display - Right-to-be-forgotten support (fans can remove their pin) - Displayed on the homepage ### Admin Panel (/admin) Password-protected admin area for the artist/team: - **Dashboard** — overview stats - **Content** — edit site content sections (About, Hero, Stats, etc.) with per-section deep merge - **Challenges** — create and manage Piano Challenges with 4 input methods: virtual piano click, ABC notation text, audio upload (browser pitch detection), and MIDI file import - **Listeners** — view and manage the fan map pins - **Members** — view registered users - **Settings** — site configuration ## Technology Stack - **Framework:** Next.js 15 (App Router, TypeScript) - **Styling:** Tailwind CSS v4, custom dark theme - **Database:** MongoDB (via custom `getDatabase()` connection pool) - **Authentication:** better-auth with Spotify OAuth and email/password providers - **Music playback:** Spotify Web Playback SDK (Premium) with preview URL fallback - **Piano audio:** Tone.js with Salamander Grand Piano samples (loaded from CDN) - **MIDI parsing:** @tonejs/midi - **Commerce:** Shopify Storefront API - **Animations:** Framer Motion - **Analytics:** Vercel Analytics - **Deployment:** Vercel - **PWA:** Web App Manifest with 192px, 512px PNG icons and SVG fallback ## Key Collections in MongoDB - `tracks` — Spotify-synced track catalog - `songChallenges` — Piano Challenge definitions per track - `challengeCompletions` — Per-user daily completion records - `paint88Progress` — Per-user piano key unlock state, style, discount tier - `votes` — Track fan votes - `listeners` — Fan map pin data - `siteContent` — CMS content for editable site sections - `account` — better-auth OAuth accounts (singular collection name) ## API Endpoints (Public) - `GET /api/tracks/[trackId]` — track metadata - `GET /api/songs/[trackId]` — song page content (exclusive content gated by auth) - `GET /api/songs/[trackId]/vote` — vote count - `POST /api/songs/[trackId]/vote` — cast/retract vote - `GET /api/challenges` — list all available piano challenges - `GET /api/challenges/[trackId]` — challenge for a specific track - `POST /api/challenges/complete` — submit challenge result (auth required) - `GET /api/paint88` — user's piano progress (auth required) - `GET /api/listeners` — fan map pins - `GET /sitemap.xml` — dynamic XML sitemap - `GET /robots.txt` — robots rules - `GET /llms-full.txt` — this file (LLM context) - `GET /manifest.json` — PWA manifest ## Brand & Aesthetic - Dark theme first — deep navy/near-black background (`#0a0a14`) - Serif and sans-serif type pairing - Subtle animations with Framer Motion - Logo: a retro phone sketch in white line art (SVG) - Palette: white on dark, with primary accent colour for interactive elements ## Contact & Social Songs of Eden is based in Stockholm, Sweden. For booking inquiries, collaborations, or press, contact via the website. Follow on Spotify, YouTube, and Instagram for new releases and updates. --- *This file is provided to help AI assistants understand the Songs of Eden site and project. Last updated: 2025.*