DEV Community

Cover image for Kids these days - where do you take them?
Kalle Tolonen
Kalle Tolonen

Posted on Originally published at kalletolonen.com

Kids these days - where do you take them?

My son is about to turn into a toddler. One of the questions I have pain answering is "what to do this weekend or today to keep him entertained?". The information exists and you could just ask AI like a sane person. So naturally I built a serverless side project.

It has a selected list of playgrounds nationally and LLM-curated events in the 15 biggest cities, on a map with travel times shown as an isochrone map per mode of transport. So, we're basicly answering the question "What current or future fun thing can I reach with my kid in 5/15/30 minutes by walking/biking/driving".

I do realize that there's serious overlap with Leikkipuistot.com, but we throw isochrones and events on top, and we're not using cookies.

This week in Turku within 15 minutes of driving
This week in Turku within 15 minutes of driving

Try it out at: Muksukartta (iPhone location perms hss been buggy, and hard to fix without an actual iPhone, so sorry if it still has problems!)

But why?

A simple AI query does kinda do this kind of thing, but AI is still not great at showing things on a map. And sometimes I just prefer to do my own thinking like a caveman.

The Architectural and "Business" Decisions

Going with my app-forge-solution, as that's scalable and serverless if there's any real demand. Isochrone is the bottleneck, as they have the lowest quota, but I'll bring it to Cloudflare too, if we ever run out.

The Outcome

My time spent looking for things to do with my toddler goes to near zero instead of x minutes a week. Also answers quickly what nice kid things I can reach within 15 minutes with diff modes of transport. I have actually used the app, so that is a win.

Data harvesting plan

GIS-data is scattered, so I sent out my bot team to harvest data from open endpoints, and also mark it as unavailable to a csv-file, so we can keep track of our integrations and have a sane ETL (Extract, Transform & Load) process. I needed to do a bit more prompting to get all (we have a curated set online) the playground locations in Finland from open sources and events were harder. Event data is really messy, so I use a classifier + an llm batch job to make it less likely to offer squirrel striptease for the users.

ETL-process
ETL-process

Iteration steps

First I made the dev/prod env via my app-forge, and added quality gates for pushing. Then I made a ROADMAP.md with the help of a bot research group that combined my personal weekend events harvesting prompt for kids to GIS.

First production deployment had just the Turku area kindergartens and playgrounds as GIS-assets
First production deployment had just the Turku area kindergartens and playgrounds as GIS-assets

Next step was making the map mobile first, since that's what most parents are using on the go anyway.

Added GPS-coords from current location so that you can see with one tap where's the nearest POI
Added GPS-coords from current location so that you can see with one tap where's the nearest POI

Isochrone map bounding box as provided by Openrouteservice
Isochrone map bounding box as provided by Openrouteservice

After ingesting a lot of events I kinda overdid the automated QA with user stories, or so I thought. Later when I looked into it, that wasn't the culprit, but just insane spamming of requests with buggy map rendering cycles.

So, that need some dialing down to be reasonable on any scale. Cloudflare is really generous on free tier, but this is too much.
So, that need some dialing down to be reasonable on any scale. Cloudflare is really generous on free tier, but this is too much.

I automated the integration of new, validated, tos-compliant api's for BIG-15 cities to commence when the Cloudflare limits would lift.

Agentic project management

Since this has proven to be a project of larger than expected size (like every project), I made some light project management tools. Just a basic csv that's easy on an LLM's context window and token use, so we see what's the current status of integrations and we can keep track of what's done.

Later on I used that as a basis for an admin view.

Project management in plaintext
Project management in plaintext

Midway trough the project I had switched tools multiple times, since that's the real point of all this - evolving ones way of working and producing solutions at a faster pace. Current setup is running Antigravity CLI (free for students!) & Cursor CLI harnesses controlled by herdr on a dedicated minipc that I control over ssh from a vpn. On top of that I use Cursor in cloud on desktop and mobile, so that there's a device available for commencing/iterating on stuff when I have the time required to make decisions that shape the end product.

Future feats

  • Adding realtime weather forecasts, so that it's good for Finland's rainy season (365 days per year).
  • Events for smaller cities
  • hiking routes
  • other kids POI's

Lessons learned

  • You need a dev server when you launch, before that you can make do with a dev-is-prod approach
  • CI and 1 server from day 1 is a must for speed
  • Cloudflare is super nice
  • UX needs a lot of steering still (a thing I will learn by doing more of it)
  • You can dev real products while pushing a sleepung baby on a stroller in the woods easily
  • Github Mobile is nice for diffs and Actions

Cost

About 30€ in tokens and 10€ for domain.

Top comments (0)