Parkki
Tampere parking map
A live map of every parking area in Tampere, coloured by what parking costs for the time you stay.
Why I built it
I wanted one map that answers where I can park, for how long and for how much, without reading every sign on the street.
- Type
- Web, Open data, Live
- Status
- Live, public
- Code
- Private
- Revision
- 2026.10
The problem
Parking rules in Tampere are spread across signs, a city map layer and each garage operator’s price page. To answer “can I park here from 17:30 for two hours, and what does it cost?” you have to read all of them.
What it does
You pick when you arrive and how long you stay. Every one of the city’s ~3,200 parking areas is coloured for that exact span:
- disc parking, with the time to set the disc to;
- free;
- paid, with the price for the whole stay;
- a garage, with its price;
- not allowed: a time limit, a winter maintenance ban or permit holders only.
Tap a place for its rules, its price and directions. “Nearest” lists the closest places you can use.
How it’s built
- A daily data pipeline on GitHub Actions turns the city’s open geodata and the garage operators’ public price pages into compact JSON. If a source fails, it keeps the last good data.
- A rules engine evaluates one area for one time span. It handles Finnish public holidays, paid and disc hours, time limits, winter maintenance and spring street sweeping.
- It is fully static: React and MapLibre in the browser, no server and no login, and your location stays on the phone. It is hosted on Cloudflare Pages.
Functional block diagram
Inputs
- City of Tampere open geodata (WFS)
- Garage operators' price pages
- Street-sweeping layer
Core
- Daily data pipeline (GitHub Actions)
- Compact JSON
- Rules engine: holidays, disc and paid hours, limits, winter bans, sweeping
Outputs
- Static map app (React + MapLibre)
- Cloudflare Pages, data served to the page only
- SEO landing pages and deep links
Specifications
| Platform | Static web app, phone-first |
|---|---|
| Data | City of Tampere open geodata (CC BY 4.0), about 3,200 parking areas; garage operators' price lists |
| Refresh | Daily, GitHub Actions |
| Hosting | Cloudflare Pages; no server, no login |
| Status | Live, public |
| Built | 2026 |
| Stack | TypeScript, React, MapLibre GL, Vite, vitest, GitHub Actions, Cloudflare Pages |
| Code | Private |
Revision history
| Rev | Date | Change |
|---|---|---|
| E | 2026-10-30 | Review fixes to the landing pages and the sweeping warnings. |
| D | 2026-10-29 | SEO landing pages, deep links to places and garages, spring street-sweeping warnings. |
| C | 2026-10-29 | Review fixes: verdicts for drivers without permits, data files served to the page only, sign-coloured categories. |
| B | 2026-10-29 | Published on Cloudflare Pages with a daily data refresh and security headers. |
| A | 2026-10-29 | Rules, data pipeline, garage prices and the map page. |



