u/Complex_Nothing_9841

The boys keep complaining about not having motion graphics during the game, so I made an app that tracks the game state! They should definitely play this format again- it's one of my fave seasons and we haven't even reached the finale yet!

Here it is: https://jltg-stations.pages.dev/

  • it follows every game rule I’m aware of
    • please leave a comment if there are any I missed or got wrong!
  • it's fully configurable based on a settings json file
    • defines map theme, stations, challenges, teams, and game rules like starting balance, day count, etc.
    • define starting challenges in advance or generate live as the game starts
    • schedule a starting time in the json file or when starting the game. starting challenges will be hidden until then.
    • the default config file (https://jltg-stations.pages.dev/taiwan.json) is pretty much just the Taiwan game but with random placeholder challenge details. the station list is slightly inaccurate (242 instead of Jet Lag’s 243), I didn’t care to spend much time gathering lists of stations and cross referencing it with frames from the season to figure out what stations were included. I’m also really not sure about day multipliers. In the config, the multiplier increases by .1x per day- I’m pretty sure the real game has a multiplier like this but I didn’t find any info on it and don’t care to spend time looking. Feel free to lmk in the comments.
    • you can create your own config file following the taiwan.json example, it just has to be hosted somewhere (e.g. you can give it a url to the raw view of a file on github)
    • if people ask for it I might make a tool with a nice UI for creating and hosting them.
  • it works fully offline
    • runs locally in your browser, no servers or installation needed
    • syncing the two teams’ devices is done via texting station/challenge IDs back and forth, same as they do now- click the Replicate button on desktop or click the team in the mobile header to replicate their actions onto your device.
    • the map tiles are downloaded to the device so the map can be loaded while offline. initial downloading occasionally fails- not sure why, but a reload or using a lower map setting usually fixes it
  • it was built with SvelteKit, Lucide, Zod, vaul-svelte, Drizzle, and SQLocal
  • it uses maps from OpenStreetMap/OpenFreeMap/maplibre-gl/svelte-maplibre-gl
  • this can theoretically work with more than one team- I haven’t tested it at all, but there’s no limit on how many teams can be in the config afaik. The UI might get a little messed up though. Only other issue I can think of is debt replication- that wouldn't work with more than two teams, so hopefully you're good at budgeting lol

Full disclosure, this was created with a lot of assistance from AI. I'm a developer, so I was able to give it a lot of guidance, have done a lot of the work myself, and have looked over and tweaked the vast majority of the ai-written code. For example, the UI of first version that Codex generated was quite bad, so I spent a lot of time manually tweaking it and improving it. By definition, this project is not vibe-coded- I looked over most of the code and wrote a decent amount of it myself. I spent at least 20 hours working on it over the span of 5 days, and I'd guess at least 30% of that was manually modifying the code. I know that a lot of you are against AI, and for some very good reasons, but I wouldn't have made this project if I didn't have AI to help speed it up. This is something I did for fun just because I wanted to- I don't want to spend hours working on scaffolding that AI could do in a few minutes, I'd rather be working on actual improvements to the app.

It's fully open source, contributions welcome: https://github.com/ComplexNothing9841/jltg-stations/

If you find bugs or have suggestions, please leave a comment!

u/Complex_Nothing_9841 — 8 days ago