Matt Isenhower 188d9cb504 Run the updaters in a Cloudflare Worker
workers/updater runs src/app/updater, the same code npm run splatnet runs
locally, against the Worker's R2 bindings through BucketStorage. The
Scheduler Durable Object from the proof of concept owns when the run
happens: an alarm at :00:10 that re-arms itself, with retries after a
failed run; the only cron trigger is a minute-30 watchdog that re-arms a
lost alarm. Operator endpoints (/run, /wake, /arm, /status) are behind a
bearer token. Handlers and the Durable Object are wrapped with
@sentry/cloudflare so the updaters' @sentry/core reports are delivered
when SENTRY_DSN is set.

updateAll() now returns a per-updater result (name, ok, duration, error)
that both the local runner and the Worker can report on, and the SplatNet
client reads its user agent lazily since Workers populate process.env
from the bindings.

Deployed in shadow mode against the dev bucket: a full run of all eight
updaters on Cloudflare matched production's data semantically within the
same hour, and steady-state runs take about seven seconds.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-05 11:23:49 -07:00
2024-11-16 21:51:58 -08:00
2026-09-05 11:07:10 -07:00
2026-09-05 10:46:08 -07:00
2017-08-02 09:58:58 -07:00
2017-08-15 16:50:29 -07:00
2026-09-02 20:22:18 -07:00

Splatoon2.ink

Note

Check out Splatoon3.ink as well!

Splatoon2.ink shows the current and upcoming map schedules for Splatoon 2.

This site was built with Vue.js and Bulma. All data comes from the SplatNet 2 API.

More information about Nintendo's API can be found here.

Getting Started

Clone this repo:

git clone git@github.com:misenhower/splatoon2.ink.git

Next, copy .env.example to .env and update its values.

cp .env.example .env

You can retrieve your iksm_session ID value (NINTENDO_SESSION_ID inside .env) using Fiddler or a similar tool. See here for further instructions.

npm install      # Install dependencies
npm run splatnet # Retrieve updates from Splatnet and the Salmon Run calendar
npm run serve    # Start the webpack dev server

Data retrieved from Splatnet is stored in the dist/data directory.

One image, src/common/cdn/images/skill/53c62995f9d2dc4a60f3850c5dbdd2323f1eef87.png, is no longer served by SplatNet's CDN. It is already in production storage; if you ever start from an empty dist/, copy it to dist/assets/splatnet/images/skill/ by hand (or run npm run sync:download).

By default, the dev server will run on port 8080. When running npm run serve you can access the site by going to http://localhost:8080.

Production

Build minified assets for production:

npm run build

Retrieve updates from Splatnet every hour via node-cron:

npm run cron
Description
🦑 Current and upcoming map schedules for Splatoon 2
Readme 20 MiB
Languages
JavaScript 44.1%
Vue 43.5%
SCSS 11.1%
HTML 0.9%
Dockerfile 0.4%