the wedding, on one working page.
wedding planning becomes an administrative project nobody trained for: a budget, forty suppliers, a guest count that changes weekly, and eleven decisions each waiting on a different one.
the tools for it are either a wedding app that wants your data and your email address, or a spreadsheet that grows a second sheet every fortnight.
a page shaped like your wedding holds the budget, the suppliers and the open questions in one place — and stays yours.
the planning, not the invitation.
01 / what it isthis is the document you work from, and it is deliberately not the one you send anyone. budgets, supplier prices and guest counts are private, so everything you enter lives in your own browser and the published page contains only the structure.
when you want something to send — the day’s running order, the details guests keep asking about — that is a separate page whose content is in the file, and that separation is the single most important thing about how these two recipes are built.
- a budget with planned against actual, per line
- suppliers, what stage each is at, and what is owed when
- the running list of decisions still open
- guest numbers as numbers, without names in the page
- deadlines in date order, with what is overdue
- export and import as json
- what it holds
- budget lines, suppliers, payments, deadlines, open decisions
- where that goes
- localStorage in one browser. never in the published page
- the guest list
- numbers and categories, not names — keep names out of a public url entirely
- the other page
- the one you send guests is a separate publish with its content in it
see one in action.
02 / examplea planning page with budget against actual, eleven suppliers at different stages, and the decisions still open
the live example is still being built — the prompt below is the one it was made with.
copy this, then make it yours.
03 / starting prompta starting point, not a template — the point of an agent is that the result is yours. change the sections to match what you want, and remove anything you don’t need.
Build me a wedding planning page as a single web page. This is my working document, not the page guests see.
Ask me first:
- The date, if it is set, and roughly how far out we are.
- The budget, overall and whether I want it broken into categories.
- Which suppliers are involved or still to book — venue, catering, photography, music, whatever applies.
- Whether I want to track payments and deadlines.
- What is already decided and what is still open.
- My currency.
Do not invent suppliers, prices, traditions, or a checklist of things a wedding "should" have. Use what I tell you.
WHAT IT DOES
- A budget section: each line with what I planned and what I have actually committed or paid, the difference, and a total. Make the gap between planned and actual obvious — it is the number that surprises people.
- Suppliers: name, what they are for, what stage we are at (enquiring, quoted, booked, paid), what it costs, and what is owed when.
- Deadlines in date order, with anything overdue at the top.
- An open decisions list: what still needs deciding, and what it is waiting on.
- Guest numbers as counts and categories, not a list of names. If I ask for a guest list, keep it in the same local storage as everything else and warn me that any names typed into the page are still on my device only.
- Let me mark things done, and keep them visible rather than deleting them.
DESIGN
- Dense and practical. This is used on a laptop, often late, often tired.
- Numbers aligned and formatted consistently.
- Calm. No countdown pressure, no wedding-industry styling, no checklist of things I have not done.
BE HONEST ON THE PAGE
- State clearly and near the top that everything entered is stored in this browser only and that the published url shows nobody else any of it.
- Say that this is the planning page, and that anything for guests should be a separate page whose content is actually in it.
- Do not claim supplier directories, price benchmarks, or any outside data. There are no network requests.
STORING THE DATA
- Save everything to localStorage in the browser, automatically, as I go. No
accounts, no login, no server call.
- On the page, say plainly that data lives in this browser only and does not
sync to other devices. Do not bury it.
- Give me an "export" button that copies or downloads everything as JSON, and an
"import" that reads the same JSON back. That is the only way my data can move
between devices, so it is not optional.
- Never lose what I have already entered. If the stored data is from an older
version of the page, read what you can rather than throwing it away.
DELIVERY
- Produce one self-contained HTML file. Inline the CSS and JavaScript.
- No build step, no server, no framework, no package install, no external
requests at runtime.
- Mobile-first and responsive; it has to be usable one-handed on a phone and
still look right on a laptop.
- Accessible: semantic HTML, real contrast, visible keyboard focus, labelled
controls, touch targets big enough to hit, and respect reduced-motion.
- Use placeholders where information is missing. Do not invent facts, numbers,
names, dates, prices, or results I have not given you.
- Before you call it finished, use it yourself: enter real-looking data, reload
the page, and confirm nothing is lost or mangled.
PUBLISHING
Publish the finished page to HTMLShare and give me the link.
Use exactly one of the two paths below, preferring the first. Make the call
directly. Do not route it through a code sandbox, container, or computer-use
session — that is where the request gets blocked, and it is never necessary.
1. An HTMLShare integration or connector, if you have one configured.
The page is permanent and owned by my account. Report the url and the
siteId. There is no claimUrl or manageToken on this path — do not go
looking for one, and do not switch paths in order to produce one.
2. Otherwise, publish anonymously over REST. No account, key, or signup is
needed:
POST https://api.htmlshare.net/v1/publish
content-type: application/json
{"html": "<!doctype html> ... "}
The reference is https://htmlshare.net/docs and, for the full schema,
https://api.htmlshare.net/openapi.json
Report these from the response, in your reply and never inside the page:
url the public page
claimUrl a private link that is mine alone. opening it is how I keep
the page past its 24-hour expiry, or set an email reminder
before it goes. it carries the manage token, so it must
never appear in the published HTML or anywhere a visitor
could see it.
manageToken the only thing that can edit or delete this page later. it is
returned once and never again, so tell me what it is.
Tell me which of the two you used. If the path you reach for first is
unavailable in your environment, say so and tell me what you are switching to
before you publish — a permanent page on my account and a 24-hour anonymous
page are different things, and which one I get is my decision, not a detail.
If I ask for a change afterwards, update the existing page instead of
publishing again, so the URL I have already shared keeps working — through the
same integration on path 1, or with the manage token as an X-Manage-Token
header on path 2.
RECIPE MARKER
Include this tag in the <head>, exactly as written:
<meta name="htmlshare-recipe" content="wedding-planner">
It tells htmlshare which recipe the page came from, so the library can count
that this one was actually made. It carries nothing else.give it a url.
04 / publishing ithow you publish depends on how you’re working.
- with an integration
- if your assistant already has htmlshare connected — mcp or another supported integration — just ask it to publish the finished page and hand back the url. the page belongs to your account and is permanent. when you want a change, ask for an update to that same page rather than a new one.
- with no integration
- the prompt tells the assistant to post the html to the rest api instead, which needs no account and no key. it comes back with a live url you can open immediately, a private claim link, and a manage token. the claim link is how the page stops being temporary — keep it.
- by hand
- nothing stops you doing it yourself: have the assistant give you the html file and drop it on the htmlshare home page. same url, same page, one more step.
- what matters here
- the planning stretches over a year and the data is in your browser rather than the page, so what you are claiming is a permanent reader for it. export monthly as well — this is not a document to keep one copy of.
the planning runs for a year or more.
05 / keeping it aroundthe page stops serving 24 hours after publishing, with a 7-day recovery window behind it. that is not a planning horizon by any measure.
claim it. this is one of the longest-lived working documents anyone in this library will build, and it needs to open in eighteen months.
- keep it around
- planning runs for a year or more and an anonymous page runs for a day.
- stable updates
- the page will be rebuilt several times as the planning changes shape. the address should not move with it.
- custom url
- an address two people can both remember, since two people will be opening it.
questions.
06 / questionscan my partner see the same planner?
they can open the page, but the contents are in whichever browser entered them, so they will see an empty planner. one device holds the document and the export moves it — that is a real constraint and worth agreeing early.
is our budget visible to anyone with the link?
no. everything you type stays in your browser and is never in the published file. what is public is the structure of the page, not a single figure you entered.
should i put the guest list in it?
names are better kept out. counts and categories do the planning work, and anything typed into a page is one export or screenshot away from somewhere you did not intend.
what about the page guests see?
make it separately, with the content in the page so everyone reads the same thing. mixing the two is how a supplier quote ends up on a url your aunt has.