Skip to content

Commit e25d3ca

Browse files
committed
Add ACCI crash context map
1 parent cd65312 commit e25d3ca

7 files changed

Lines changed: 1683 additions & 0 deletions

File tree

‎accispace/HANDOFF.md‎

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
# ACCI Handoff
2+
3+
Last updated: 2026-07-19
4+
5+
## Current state
6+
7+
ACCI, the Austin Crash Context Interface, is live at [acci.handprotocol.org](https://acci.handprotocol.org). It is a standalone static Netlify app that renders recent fatal and suspected serious-injury crashes from the City of Austin Vision Zero crash-level dataset.
8+
9+
The production Netlify project is `acci-handprotocol`, project ID `92b38e69-7254-4e2d-aed6-4f6795379b22`. The custom domain is managed through the existing `handprotocol.org` Netlify DNS zone and is covered by its wildcard TLS certificate.
10+
11+
## Product behavior
12+
13+
- The initial map loads the latest five calendar years of fatal and suspected serious-injury crashes.
14+
- WebGL terrain, point markers, and severity-weighted hexagonal columns show spatial concentrations of harm.
15+
- Year, travel mode, severity, and terrain controls update the map and totals.
16+
- Address and landmark search is bounded to Austin through Photon.
17+
- A selected address summarizes matching crashes within 80 meters.
18+
- “Show accidents near location” expands the investigation radius to one kilometer.
19+
- Double-clicking the map reverse-searches the selected point and shows a five-second “Search this pin” confirmation.
20+
- Top-harm arrows step through the 20 highest severity-weighted concentrations under the active filters.
21+
- The target control selects a random crash under the active filters.
22+
- Tapping a crash opens its date, harm, speed, involved units, location, and source-record link.
23+
24+
## Mobile interaction rules
25+
26+
Mobile uses one active surface at a time. Search results, Explore Data, location summaries, crash details, about content, and pin confirmation must not stack.
27+
28+
- Explore Data opens from the bottom-left settings control.
29+
- Explore Data has an internal X close control.
30+
- Crash and location details open as bottom sheets with safe-area padding.
31+
- Crash markers retain their small visual dots but have 36 to 44 pixel invisible hit regions.
32+
- Opening a new surface closes competing surfaces.
33+
- Closing crash details restores the active location summary when one exists.
34+
35+
## Files
36+
37+
- `index.html`: semantic application shell, controls, summaries, prompts, and source notes.
38+
- `style.css`: full visual system, responsive layout, bottom sheets, and reduced-motion behavior.
39+
- `app.js`: map setup, City data query, filtering, spatial aggregation, search, reverse lookup, hotspot navigation, random targeting, and overlay state.
40+
- `netlify.toml`: static publish configuration, security headers, and revalidated asset caching.
41+
- `favicon.svg`: ACCI application mark.
42+
- `README.md`: short local-development and data-source guide.
43+
44+
## External services
45+
46+
- Crash data: `https://data.austintexas.gov/resource/y2wy-tgr5.geojson`
47+
- Geocoding and reverse lookup: `https://photon.komoot.io`
48+
- Basemap: `https://tiles.openfreemap.org/styles/dark`
49+
- Terrain tiles: AWS Terrain Tiles, Terrarium encoding
50+
- Map runtime: MapLibre GL JS 5.24.0 from unpkg
51+
- Fonts: Inter and JetBrains Mono from Google Fonts
52+
53+
The app has no build step and no stored API secrets. External-service availability is a runtime dependency.
54+
55+
## Local development
56+
57+
```bash
58+
cd accispace
59+
python3 -m http.server 4173
60+
```
61+
62+
Open `http://localhost:4173`.
63+
64+
## Validation
65+
66+
Run before deployment:
67+
68+
```bash
69+
node --check app.js
70+
npx --yes html-validate@10 index.html
71+
git diff --check -- .
72+
```
73+
74+
The latest browser verification covered:
75+
76+
- Loading 2,063 live crash records
77+
- Ranked hotspot navigation
78+
- Random crash targeting
79+
- Address and nearby-crash summaries
80+
- Double-click reverse lookup and countdown dismissal
81+
- Real crash-marker pointer selection
82+
- Exclusive mobile overlays at 390 by 844 pixels
83+
- Mobile Explore Data open and close behavior
84+
- No browser exceptions during the verified flows
85+
86+
## Deploy
87+
88+
The directory is linked locally to the Netlify project through `.netlify/state.json`, which is intentionally ignored by git. Deploy manually with:
89+
90+
```bash
91+
netlify deploy --prod --dir . --message "Describe the ACCI update"
92+
```
93+
94+
After deployment, verify both `https://acci.handprotocol.org` and the browser-level live data load. JavaScript and CSS use `max-age=0, must-revalidate` because the filenames are not content-hashed.
95+
96+
## Known constraints and next moves
97+
98+
- There is no bundled crash-data fallback if the City API is unavailable.
99+
- Photon, OpenFreeMap, terrain tiles, fonts, and MapLibre are external runtime dependencies.
100+
- The word “accident” appears in user-facing discovery controls because that is the requested language. City data and explanatory copy otherwise use “crash.”
101+
- A future reliability pass could vendor MapLibre, self-host fonts, and create a scheduled crash-data snapshot.
102+
- A future analysis pass could add accessible crash lists and permalinked filter state.
103+
104+
## Repository safety
105+
106+
ACCI work is confined to `accispace/`. The adjacent `wxl/` working changes belong to a separate workstream and must not be staged or modified as part of ACCI work.

‎accispace/README.md‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# ACCI
2+
3+
Austin Crash Context Interface is an experimental spatial view of fatal and serious-injury crashes in Austin. It reads the City of Austin's public Vision Zero crash-level dataset directly in the browser and renders severity-weighted harm cells over a WebGL terrain map.
4+
5+
## Run locally
6+
7+
```bash
8+
python3 -m http.server 4173
9+
```
10+
11+
Open `http://localhost:4173`.
12+
13+
## Data
14+
15+
Source: [Austin Crash Report Data, Crash Level Records](https://data.austintexas.gov/Transportation-and-Mobility/Austin-Crash-Report-Data-Crash-Level-Records/y2wy-tgr5)
16+
17+
The app requests fatal and suspected serious-injury records for the latest five calendar years. Data can be delayed, revised, incomplete, or imprecisely located. Recent totals are especially likely to change.

0 commit comments

Comments
 (0)