WallpaperMachine
The wallpapers you love. A new home on your Mac.
Glastonbury group booking made quick: put everyone's registration numbers and postcodes on one page, then tap to copy each one into the booking form. Free, no sign-up, saved on your phone.
LifestyleHTML · JavaScriptGitHub @francproductmanagerOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Easy way to copy and paste registration codes when buying Glasto tickets
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Use the tool: https://glastobolt.co.uk/ (try the demo, guides)
Through the Glasto queue? Fill in your whole group in seconds. Put everyone's registration numbers and postcodes on one page before ticket day, then tap to copy and paste each one into the booking form.
Not affiliated with Glastonbury Festival or See Tickets.
app.js makes no network requests (the tests check this).counter.js (home page only) asks this site's /api/visits to add one visit per browser session. The total isn't shown on the page for now (SHOW_TOTAL in counter.js); read it at https://glastobolt.co.uk/api/visits. It sends no cookies, no referrer and nothing about anyone's group. The server side (netlify/functions/visits.mjs) stores a single number in Netlify Blobs: no IP addresses or other visitor details.latest.js (home page only) reads /updates/latest.json, a plain file on this site, to show the newest guides and a countdown to the next dates. It sends no cookies, no referrer and nothing about anyone's group, and draws everything as text. node site-src/build.mjs writes that file from the updates page, so the list moves on by itself whenever a guide is added or changed.<base> hijacking and form submissions, and stops other sites embedding the pages.#, which browsers never send to a server. Surnames are left out: two people with the same first name are numbered instead ("Alex 1", "Alex 2"). It's encoded, not encrypted, so only send it to your group.main. Changes reach main only through pull requests that pass the tests.netlify.toml). Netlify also packages the visit counter function (netlify/functions/visits.mjs) to run on its servers.Check it yourself:
git clone https://github.com/francproductmanager/glastonbury-registration-quick-copy
cd glastonbury-registration-quick-copy
git checkout <version shown in the tool's footer>
bash scripts/verify-live.sh
| Path | What it is |
|---|---|
index.html, demo.html | The tool's pages (the demo uses made-up people and saves nothing) |
app.js | All the tool's logic: screens, import parser, local storage, copy boxes, share links |
ads.js | The ad slots and their AdSense ad unit IDs (see below) |
counter.js, netlify/functions/visits.mjs | The home page visit counter: the page script and the tiny server function that keeps the total |
latest.js | The home page's latest guides and countdown, read from updates/latest.json (built from the updates page) |
style.css, guides.css, fonts/ | Styles and self-hosted fonts (Newsreader, Instrument Sans, IBM Plex Mono, all OFL) |
guides/, faq/, about/, contact/, privacy/, terms/, updates/, 404.html, sitemap.xml, robots.txt | Guides and info pages, generated from site-src/ |
site-src/ | Content (content.mjs) and generator (build.mjs) for those pages |
ads.txt | Google's AdSense publisher line |
netlify.toml | Hosting config and security headers |
tests/ | Automated browser tests |
scripts/verify-live.sh | Checks the live site matches the repo |
Links look like /#/s/<code>. The code is a small binary format, base64url-encoded: a version byte, the group's clear-by date (2 bytes, days since 1970), then per person a first name, the reg number as a 5-byte integer and the postcode packed at 6 bits per character. Older formats with no date open until 1 December 2026, then count as expired. Details are in the comments in app.js.
npx serve .
After editing site-src/content.mjs, rebuild the guides and info pages:
node site-src/build.mjs
The tests drive the site in a headless browser: every screen and action, the import parser, copy states, wake lock, share links, validation, corrupted data, malicious input, the security policy, the ad slots and AdSense's requirements.
npm install
npx playwright install chromium
npm test
They also run on every pull request.
Ads only appear in named slots that we place page by page. Google never places ads anywhere else, so keep Auto ads switched off in AdSense for this site.
Loading: pages don't include Google's ad script directly. ads.js adds it once the page has loaded and been painted, and then when the visitor first scrolls, taps, moves the mouse or presses a key (or after 5 seconds). This keeps the pages at 100 for performance in PageSpeed Insights: Google's ad code is about 220 KB and busy when it starts. Site ownership is confirmed by the google-adsense-account meta tag on every page.
| Slot | Where |
|---|---|
home-end | Home: after the questions and the explanation of the tool |
guide-top, guide-mid, guide-end | Each guide: after the intro, halfway through, before Related guides |
guides-end | Guides list: at the bottom |
faq-mid, faq-end | FAQ: halfway down, and at the bottom |
about-end | About: at the bottom |
There are no ads on the tool's working screens (paste, edit, ticket day, data, shared links and the demo), or on Privacy, Terms, Contact, Updates or the 404 page. Google's AdSense policies don't allow ads on screens without content of their own, and ads there would sit next to buttons people tap in a hurry.
Every slot currently uses the "Standard" responsive display unit (2945530362). To give a slot its own unit (for separate reporting, or another format), create it in AdSense under Ads > By ad unit and put its data-ad-slot number next to the slot in ads.js. A slot set to "" stays hidden, and a slot whose ad doesn't load takes up no space.
Consent: in AdSense, under Privacy and messaging, publish Google's consent message for the UK, EEA and Switzerland (the option with Consent, Do not consent and Manage options).
The site's address is glastobolt.co.uk (canonical links and the sitemap use it; change SITE.url in site-src/content.mjs and link rel="canonical" in index.html if it moves). In Netlify it's added under Domain management and set as the primary domain, so glastoquickcopy.netlify.app and www redirect to it.
Ideas, bug reports and pull requests are welcome. See CONTRIBUTING.md. To report a security problem privately, see SECURITY.md.
Made by a product manager (not a developer) who got fed up copy-pasting registration numbers on ticket day. Built with the help of AI coding tools.
The code is MIT. The fonts are under the SIL Open Font License (see fonts/).