1. People report
Residents submit plow votes and civic issues. The current migration focuses on the read surfaces first, then rebuilds the more complex write flows on top of SvelteKit actions.
The app combines static UI delivery, Cloudflare Worker execution, D1 storage, and a moderation pipeline. This migration keeps those platform choices while moving the product UI into a maintainable component system.
Residents submit plow votes and civic issues. The current migration focuses on the read surfaces first, then rebuilds the more complex write flows on top of SvelteKit actions.
D1 holds the city data, R2 stores images, and Worker routes provide the runtime glue. The new frontend reads that data directly through server load functions.
The app still runs on Cloudflare, but now every page has route boundaries, shared layout, and a clear path to an app-like mobile experience.