No description
  • JavaScript 66.9%
  • CSS 23.5%
  • HTML 8.2%
  • Dockerfile 1.1%
  • Shell 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-17 14:11:55 +02:00
assets Keep the EDGECASE wordmark on one line by shrinking it to fit, allow Umami analytics through CSP, and snapshot the breakout registration page so signup rules stay in the schedule. 2026-09-17 10:29:29 +02:00
data Keep schedule checker snapshots as extracted metadata. 2026-09-17 11:17:39 +02:00
images Add unofficial interactive Edgecase 2026 schedule with favorites, Docker/Coolify deploy, and official-site snapshot checker. 2026-09-17 09:29:56 +02:00
scripts Keep schedule checker snapshots as extracted metadata. 2026-09-17 11:17:39 +02:00
.dockerignore Allow nginx config and entrypoint in Docker build context so Coolify can copy them. 2026-09-17 09:41:45 +02:00
.gitignore Keep schedule checker snapshots as extracted metadata. 2026-09-17 11:17:39 +02:00
apple-touch-icon.png Add unofficial interactive Edgecase 2026 schedule with favorites, Docker/Coolify deploy, and official-site snapshot checker. 2026-09-17 09:29:56 +02:00
docker-compose.yml Add unofficial interactive Edgecase 2026 schedule with favorites, Docker/Coolify deploy, and official-site snapshot checker. 2026-09-17 09:29:56 +02:00
docker-entrypoint.sh Add unofficial interactive Edgecase 2026 schedule with favorites, Docker/Coolify deploy, and official-site snapshot checker. 2026-09-17 09:29:56 +02:00
Dockerfile Add unofficial interactive Edgecase 2026 schedule with favorites, Docker/Coolify deploy, and official-site snapshot checker. 2026-09-17 09:29:56 +02:00
favicon.png Add unofficial interactive Edgecase 2026 schedule with favorites, Docker/Coolify deploy, and official-site snapshot checker. 2026-09-17 09:29:56 +02:00
index.html Ohja, ik heb het gemaakt 2026-09-17 14:11:55 +02:00
nginx.conf Keep the EDGECASE wordmark on one line by shrinking it to fit, allow Umami analytics through CSP, and snapshot the breakout registration page so signup rules stay in the schedule. 2026-09-17 10:29:29 +02:00
package.json Add unofficial interactive Edgecase 2026 schedule with favorites, Docker/Coolify deploy, and official-site snapshot checker. 2026-09-17 09:29:56 +02:00
README.md Keep schedule checker snapshots as extracted metadata. 2026-09-17 11:17:39 +02:00
robots.txt Add unofficial interactive Edgecase 2026 schedule with favorites, Docker/Coolify deploy, and official-site snapshot checker. 2026-09-17 09:29:56 +02:00
site.webmanifest Add unofficial interactive Edgecase 2026 schedule with favorites, Docker/Coolify deploy, and official-site snapshot checker. 2026-09-17 09:29:56 +02:00

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

  1. Run the checker and read the diff.
  2. Edit data/schedule.json (keep discrepancies notes if graphic vs lineup still disagree). Keep session id values stable so saved favorites still match.
  3. Add a hand-written notice in data/notices.json so people who already built My schedule see what changed. The site does not auto-generate this text.
  4. Reload the site. Prefer the lineup for speaker/title/details and the graphic for times/track placement.
  5. Optionally npm run snapshot so the new official HTML is archived too.
  6. 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 PORT if 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 site
  • data/schedule.json — source of truth the website reads
  • data/notices.json — hand-written schedule-update messages for people with a saved My schedule
  • data/snapshots/ — dated extracted JSON/text used by the checker
  • scripts/check-schedule.mjs — fetch + diff
  • images/ — mascot, icons, speaker photos copied from the public official pages