An open API service indexing awesome lists of open source software.

https://github.com/chrisrobison/sfmarkers


https://github.com/chrisrobison/sfmarkers

Last synced: 16 days ago
JSON representation

Awesome Lists containing this project

README

          

# SF Historical Markers

An interactive map of **749 historical markers** across San Francisco, sourced from the [Historical Marker Database (HMDB)](https://www.hmdb.org/).

Built with [Leaflet.js](https://leafletjs.com/) and OpenStreetMap β€” no frameworks, no build step, just a single HTML file and a JSON dataset.

![Dark-themed split-pane interface with a sidebar listing markers and an interactive map on the right](https://via.placeholder.com/900x400/0f172a/93c5fd?text=SF+Historical+Markers+Map)

---

## Features

- πŸ—ΊοΈ **Interactive map** β€” click any pin to see the marker's title, address, year erected, and a link to its HMDB entry
- πŸ” **Full-text search** β€” filters by title, subtitle, address, and erected-by text in real time
- πŸ“… **Year filter** β€” narrow down markers by the year they were erected
- ⚠️ **Missing filter** β€” show only markers that have been reported missing (or exclude them)
- πŸ“‹ **Sidebar list** β€” click a card to fly the map to that marker and open its popup
- πŸŒ™ **Dark UI** β€” easy on the eyes, grid layout with sidebar + full-height map

---

## Data

`hmdb_sf_markers.json` β€” 749 markers with the following fields:

| Field | Description |
|---|---|
| `id` / `markerNo` | HMDB identifiers |
| `title` / `subtitle` | Marker text |
| `yearErected` | Year the marker was installed |
| `erectedBy` | Organization that erected the marker |
| `coordinates` | `{ lat, lng }` |
| `address` | Street, city, section, county, postal code, location text |
| `missing` | Whether the marker has been reported missing |
| `link` | Direct URL to the HMDB entry |

---

## Usage

Because the page loads `hmdb_sf_markers.json` via `fetch()`, you need to serve it from a local web server (opening `index.html` directly as a `file://` URL will be blocked by the browser).

**Python (quickest):**
```bash
python3 -m http.server 8080
```
Then open [http://localhost:8080](http://localhost:8080).

**Node (npx):**
```bash
npx serve .
```

---

## Tech Stack

| Layer | Tool |
|---|---|
| Map | [Leaflet 1.9.4](https://leafletjs.com/) |
| Tiles | [OpenStreetMap](https://www.openstreetmap.org/) |
| Data | [HMDB](https://www.hmdb.org/) |
| Runtime | Vanilla JS (ES2020+), CSS Grid |

---

## License

Data Β© [Historical Marker Database](https://www.hmdb.org/) contributors. Map tiles Β© OpenStreetMap contributors ([ODbL](https://www.openstreetmap.org/copyright)).