- JavaScript 66.9%
- CSS 23.5%
- HTML 8.2%
- Dockerfile 1.1%
- Shell 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| assets | ||
| data | ||
| images | ||
| scripts | ||
| .dockerignore | ||
| .gitignore | ||
| apple-touch-icon.png | ||
| docker-compose.yml | ||
| docker-entrypoint.sh | ||
| Dockerfile | ||
| favicon.png | ||
| index.html | ||
| nginx.conf | ||
| package.json | ||
| README.md | ||
| robots.txt | ||
| site.webmanifest | ||
Edgecase 2026 unofficial schedule
Interactive companion schedule for Edgecase 2026 (“Gotta catch ’em all”) on 24 September 2026 at Gooiland, Hilversum.
This is not the official TrueFullstaq site. Official sources:
Hosted at edgecaseschedule.nl. Favorites are stored in the browser (localStorage). There is no backend.
Run locally
python3 -m http.server 8080
Or npm start. Then open http://localhost:8080.
The live schedule is a single file: data/schedule.json. Edit that file to correct times, titles, or speakers.
Last-minute schedule changes
Official pages can still change before the conference. The checker can fetch live pages and write a dated local snapshot so you can diff later without guessing.
1. Re-snapshot the official site
npm run snapshot
This fetches the live event + lineup + breakout pages and writes data/snapshots/YYYY-MM-DD/ locally. What belongs in git is the extracted JSON/text and metadata; page fetches stay on disk for local diffs.
It does not change data/schedule.json.
2. Check for drift (no overwrite)
npm run check-schedule
Prints added / removed / changed titles, speakers, times, and tracks against:
- the latest snapshot
- the site schedule in
data/schedule.json
Exit code 1 if the live lineup/breakouts disagree with the site schedule. Apply updates by hand after review.
Compare without hitting the network (useful for debugging the parser):
node scripts/check-schedule.mjs --from data/snapshots/2026-09-17
If you improve the HTML parser, rebuild structured data from saved HTML (still does not touch the live site schedule):
node scripts/check-schedule.mjs --from data/snapshots/2026-09-17 --rebuild-extracted
3. Apply a change
- Run the checker and read the diff.
- Edit
data/schedule.json(keepdiscrepanciesnotes if graphic vs lineup still disagree). Keep sessionidvalues stable so saved favorites still match. - Add a hand-written notice in
data/notices.jsonso people who already built My schedule see what changed. The site does not auto-generate this text. - Reload the site. Prefer the lineup for speaker/title/details and the graphic for times/track placement.
- Optionally
npm run snapshotso the new official HTML is archived too. - Deploy.
Example notice (append to the notices array; newest last):
{
"id": "2026-09-20-afternoon-swap",
"created": "2026-09-20",
"title": "Schedule update",
"message": "The 15:15 Main Track talk changed speakers. Your saved talks are still marked.\n\n- Autoscaling with KEDA: new speaker line-up"
}
Visitors with at least one favorite see the latest notice they have not dismissed. Dismissing it stores the notice id in localStorage. Visitors with an empty My schedule are not prompted. Unknown favorite ids (removed talks) are dropped quietly.
Docker / Coolify
docker compose up --build
Local URL: http://localhost:8080.
Coolify:
- Build with the repo
Dockerfile - Container listens on port 80 (override with
PORTif needed) - Domain:
edgecaseschedule.nl - Static nginx; no secrets or environment variables required
docker build -t edgecaseschedule .
docker run --rm -p 8080:80 edgecaseschedule
Project layout
index.html+assets/— static sitedata/schedule.json— source of truth the website readsdata/notices.json— hand-written schedule-update messages for people with a saved My scheduledata/snapshots/— dated extracted JSON/text used by the checkerscripts/check-schedule.mjs— fetch + diffimages/— mascot, icons, speaker photos copied from the public official pages