Skip to content

beatrice-e-edoardo

A wedding invite that is already finished and already online, so you can look at the result before deciding to build one yourself. Beatrice and Edoardo are made up, the six gallery photos are Unsplash placeholders under a free licence, and every line of text is written to be replaced. The page runs through a cover with a monogram and the two names, the story, a countdown, the schedule of the day with a Google Maps button per event, the gallery, an RSVP form and a closing quote. Plain HTML, CSS and JavaScript, MIT licensed, no database, no server, no build step. It is published at nerln.github.io/beatrice-e-edoardo.

It does not collect an RSVP by itself. The site is static, so the form opens the guest’s mail app with the message already written, to the address set as EMAIL_SPOSI in js/main.js. That works everywhere and costs the guest one extra step. Automatic collection means bringing in a third party, and the README documents two: Formspree, free up to 50 submissions a month, and Google Forms or Tally.

It is not private. index.html ships with <meta name="robots" content="noindex">, which keeps it off Google. Anyone holding the link can still read the whole page, so the README says to leave home addresses out of it. The repository is public as well, because free GitHub Pages requires it.

The documentation is in Italian. The README, design/GUIDA-DA-ZERO.md and the editor notes are all written for an Italian reader. Two things exist in English: for-a-friend/START-HERE.md, a standalone version of the from scratch guide with generic names, and wedding-invite-starter-kit, a separate repository with the same design and the same local editor.

Webstudio cannot import this site. Its CLI ships an MCP server, so an assistant can change a design by command, and it exports static output. It does not read existing HTML, so that route means rebuilding the page from blank.

Nothing checks the invite for you. There is no test suite and no validator in the repository.

Double clicking index.html opens it in the browser and is enough for a page like this. For a real local server:

Terminal window
python3 -m http.server 8000
# then open http://localhost:8000

Three files carry everything. index.html holds the content: the <title> and the og: meta used for the WhatsApp preview, the monogram, the names, the story, the schedule, the quote, the footer. css/style.css holds the design, with palette and fonts declared in :root at the top. js/main.js holds the countdown date (DATA_MATRIMONIO), the animations and the RSVP behaviour. Every spot meant to be changed is marked with a PERSONALIZZA comment. assets/img/ ships empty.

Redesigning has three routes. By hand, since the files are ordinary and no tool is required. Through the local visual editor:

8767/editor/
python3 editor/server.py

which loads the project’s own files into a GrapesJS canvas and writes the changes back to disk when you save. No account, nothing stored on somebody else’s server. Or through Webstudio, set up once and then built and published from scripts:

Terminal window
./scripts/setup-webstudio.sh # asks for the share link, does the rest
./scripts/build-e-pubblica.sh # --pubblica sends it online

Publishing is separate from editing in every route. ./scripts/publish.sh "message" commits and pushes whatever is currently on disk. Hosting is GitHub Pages from branch main, root folder, and each push updates the live site in about a minute.

The GrapesJS editor was run through a real save round trip, and that surfaced a limit worth naming: shorthand background and border properties do not survive the trip cleanly. The mitigation shipped with it is a separate stylesheet that overlays the original without ever replacing it, described in editor/LEGGIMI.md.

The Cloudflare Pages subdomain beatriceandedoardo was free at the time it was checked. The README reports it that way and tells you to check again rather than trust the note, since connecting the repository to Cloudflare requires a browser login and has to be done by hand anyway.

github.com/nerln/beatrice-e-edoardo