🇬🇧 English | 🇮🇹 Italiano
A photographic atlas of free-access basketball courts in Milan and surrounding areas.
For each court, the following data points are available:
- geographic details: address and GPS coordinates;
- court features: number of hoops, three-point line, fencing, lighting;
- qualitative notes on the condition of hoops and court surface;
- photo gallery: from two to five images per court;
- freshness indicator (green if data is less than 12 months old, yellow between 12 and 24 months, grey if older).
Found a court that's missing? Report it through the contribution form.
Before opening a pull request, please open an issue first to discuss your idea and get feedback from the maintainer.
The images in this repository are web-optimized (resized and converted to webp format) to ensure smooth browsing. They are not intended as high-resolution prints.
All images are captured following a standardised protocol to ensure consistency and comparability across courts.
- Time of day: morning, preferably early (soft light, empty courts). Photos taken later in the morning are also accepted, provided lighting conditions are adequate.
- Court: empty, no people in frame.
- Light: natural. Overcast or clear sky both acceptable. Avoid harsh midday direct light.
- Equipment: DSLR or mirrorless camera (RAW files preferred). Smartphones are accepted as a secondary option; photos may be replaced in the future with higher-resolution shots.
| # | Name | Position | Subject |
|---|---|---|---|
| 1 | Overview | Least obstructed corner, eye level | Full court in frame, landscape orientation |
| 2 | Hoop 1 | Free-throw line, central axis of the paint | Hoop, backboard and part of the paint |
| 3 | Hoop 2 | Free-throw line, opposite end | Same as photo 2, mirrored |
| 4 | Surface | Centre court, standing upright | Camera pointing straight down (nadir); centre circle and half-court line in frame |
- The 4 standard shots may be supplemented — never replaced — by additional photos documenting particular conditions of the court.
Current version is 0.4.0. At this stage of the project (0.x), compatibility with previous versions of the JSON structure is not guaranteed.
Each court is described by a JSON object. Fields are grouped by category.
| Field | Type | Description |
|---|---|---|
id |
string |
Unique court identifier (e.g. "001"). |
created |
string |
Date the record was first created, YYYY-MM-DD. |
updated |
string |
Date of the last update, YYYY-MM-DD. |
| Field | Type | Description |
|---|---|---|
address |
string |
Street or square nearest to the court. |
city |
string |
Municipality name (e.g. "Milano", "Sesto San Giovanni"). |
district |
string|null |
Administrative subdivision (e.g. "Municipio 8"). null for municipalities without subdivisions. |
coordinates |
object |
Geographic position with lat and lng (WGS 84). |
| Field | Type | Description |
|---|---|---|
hoops |
integer |
Number of hoops (typically 1, 2 or more). |
surface |
string |
Materials used for the surface. (property collected but not yet exposed) |
half_court |
boolean |
true if the court is a half court only. |
three_pt_line |
boolean |
true If a three-point line is marked on the surface. |
fenced |
boolean |
true If the court is enclosed by a fence. |
lit |
boolean |
true If the court has lighting for evening play. |
| Field | Type | Description |
|---|---|---|
audio |
string|null |
Path relative to the project root to the file audio recorded on the court. |
photos |
array |
Array of photo surveys, ordered from most recent to oldest. Each element is an object with the fields described below. photos[0] is always the current survey. |
photos[].date |
string |
Date of the survey, YYYY-MM-DD. |
photos[].overview |
string|null |
Wide-angle photo. Path relative to the project root. |
photos[].context |
string|null |
Context photo (optional). |
photos[].details |
array |
Array of close-up photos. See photography protocol section. |
i18n |
object |
Localised text, keyed by ISO 639-1 language code (it, en, …). Each language provides nome (court name) and note (free-text description). |
{
"id": "001",
"created": "2026-03-30",
"updated": "2026-04-16",
"address": "Giardino Sergio Vieira de Mello",
"city": "Milano",
"district": "Municipio 8",
"coordinates": {
"lat": 45.49409,
"lng": 9.1173
},
"hoops": 2,
"surface": "cemento",
"half_court": false,
"three_pt_line": true,
"fenced": false,
"lit": true,
"audio": "audio/001/001-beat.mp3",
"photos": [
{
"date": "2026-04-16",
"overview": "photos/001/2026-04-16/overview.webp",
"context": "photos/001/2026-04-16/context.webp",
"details": [
"photos/001/2026-04-16/hoop-1.webp",
"photos/001/2026-04-16/hoop-2.webp",
"photos/001/2026-04-16/surface.webp",
"photos/001/2026-04-16/benches.webp",
"photos/001/2026-04-16/flyer.webp",
"photos/001/2026-04-16/shopping-cart.webp",
"photos/001/2026-04-16/noticeboard.webp",
"photos/001/2026-04-16/auth-1.webp"
]
},
{
"date": "2026-03-30",
"overview": "photos/001/2026-03-30/overview.webp",
"context": null,
"details": [
"photos/001/2026-03-30/hoop-1.webp",
"photos/001/2026-03-30/hoop-2.webp"
]
}
],
"i18n": {
"it": {
"nome": "Campetto di Giardino Sergio Vieira de Mello",
"note": "Campetto in buono stato, presenta ben undici panchine lungo i lati. Sette piccoli lampioni ai lati dovrebbero garantire l'illuminazione notturna. Un canestro senza retina. Uno stallo per sei posti bici a bordo campo."
},
"en": {
"nome": "Giardino Sergio Vieira de Mello Basketball Court",
"note": "Court well mantained, with eleven benches along its sides. Seven small court lights on the sides should provide nighttime illumination. One rim without net. A six-space bike rack right beside the court."
}
}
}This project uses different licenses for different components:
| Component | License | Applies to |
|---|---|---|
| Codice sorgente | EUPL-1.2 | README, .js, .html, .css, .json-schema files |
| Dati (JSON) | CC BY 4.0 | all data files (*.json) |
| Foto e audio | CC BY-NC-ND 4.0 | all photographs and audio files |
Originally the whole project was under a single MIT license; on 18 April 2026 it was split into the component-specific licenses listed above. From v0.5.0 the source-code component moves from MIT to the EUPL-1.2 (European Union Public Licence): releases up to and including v0.4.0 remain available under MIT — a license already granted cannot be revoked — while v0.5.0 and later are under the EUPL-1.2. Photographs and audio were always subject to copyright law regardless of the license applied to the software component.
Code is generated with the assistance of Claude AI
