A single-page Eleventy template for announcing or celebrating any special occasion with curated text, photos, video, audio, and music.
imageYou can find the demo here. https://project-joy.pages.dev/
- Hero, story, gallery, video, audio, and playlist sections driven by editable Eleventy data files, i.e.
json,yaml, etc. - Responsive single-page layout with lazy-loaded media and custom audio controls.
- Works with local or external assets, plus configurable MIME hints for Safari-friendly audio playback.
- Built-in dev server and production build scripts for quick previews and static deployment.
- Node 18 or newer
- npm installed locally
- Install dependencies with
npm install. - Run
npm run devfor a live preview at http://localhost:8080/ . - Run
npm run buildto generate the static build indist/.
- Update
src/_data/celebration.ymlwith the event name, date, copy, and media references. - Fine-tune section headings or remove optional sections by editing the same data file.
- Provide a
video.youtube_id,video.file, orvideo.google_drive_iddepending on what you want to embed.
- Add images to
src/assets/images/or link to externalhttp/httpsURLs. - Populate
src/_data/gallery.ymlwithitemsthat includesrc,alt, and aspanvalue to control layout.
- Place an audio file (for example
celebration-message.m4a) insrc/assets/audio/or point to an external URL. - Set
audio.typeincelebration.ymlto the file's MIME type (defaults toaudio/mp4) so browsers like Safari get the right hint; update it if you swap in formats such asaudio/mpegoraudio/webm. - Remove or comment out the
audioblock incelebration.ymlif you do not need an audio section.
- When
music.playlist_idis present the page loads the matching YouTube playlist. Replace the sample id or delete the block to hide the widget.
- The generated
dist/directory is ready for static hosting (Netlify, Vercel, GitHub Pages, etc.). - Swap in your own media assets before sharing the link publicly.