Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
A love story photo wall website template built with HTML, CSS, and JavaScript that you can customize and deploy in under 10 minutes.

A minimalist Hugo theme for your resume.

Gatsby starter for a personal website/resume blog using Markdown, TypeScript, styled-components, Tailwind CSS, and Framer Motion.

An online resume template built with Eleventy and TailwindCSS, driven by JSON data files.

A Typst resume/CV template inspired by Alessandro Plasmati's Graduate CV LaTeX template, compiled to PDF via Typst CLI or web app.
Photo_Wall is a self-hosted love photo wall website template built with vanilla HTML, CSS, and JavaScript, designed to turn a couple's photos into a romantic, deployable gift website in fewer than 10 minutes.
Photo_Wall takes a folder of photos plus a few editable fields for names, birthdays, and anniversary dates, and produces a responsive photo gallery website that includes a heart cursor trail, EXIF-based image ordering, and an automatic love-days counter. The template is published as an open-source GitHub repository and a live demo is hosted at siyuanli.tech/Photo_Wall. It is a static site, so you can deploy it to GitHub Pages or any static hosting service without a server or database.
<script src="hearts.js"></script> line in index.html.The workflow has five steps: fork and clone the repository (or download the zip), delete the bundled images folder, add your own photos, replace the name/birthday/love date placeholders in index.html and script.js, run step1_rename.py then step2_thumbnail.py, and finally enable GitHub Pages on the main branch in the repository Settings. The two Python scripts handle EXIF-based renaming, JPG conversion, and thumbnail generation so the final site loads efficiently.
Yes. The repository is open source, so you can freely fork it, modify it, and host your own version. There are no license fees, subscriptions, or watermarks associated with the template itself.
Most photo formats are accepted, and the step1_rename.py preprocessing script converts every image to JPG before the site is built. If a photo has no EXIF data, the script falls back to sorting by file name.
Yes. Delete the line <script src="hearts.js"></script> from index.html and the mouse-move heart trail and floating heart will no longer appear on your site.
Yes. The batch size (default 10), initial number of batches (default 5), and scroll trigger distance (default 1000px) are all defined in script.js, so you can adjust them to match your photo count and network speed.
