No updates detected yet. GitHub releases will appear here.
BiblioStatus is a web app that shows the real-time opening status of Finnish public libraries on a map
翻訳待ち
Loading the full README. The saved excerpt is shown below.
BiblioStatus is a web app that shows the real-time opening status of Finnish public libraries on a map.Read the full README ↗BiblioStatus is a web app that shows the real-time opening status of Finnish public libraries on a map.
The map
Finding a library
?city=Espoo&service=Sauna&library=123), so a link restores a view and a reload keeps itA library's details
Reliability
GET /health for uptime monitoring, with a Cloud Monitoring check and an e-mail alertfetch_library_data.R # The data pipeline (Kirkanta API v4 -> Turso + SQLite backup)
check_library_urls.R # Validates all library URLs
R/ # Pipeline code the app shares or tests
├── turso.R # Turso HTTP API: reads (with timeout and retry), all-or-nothing writes
├── schedules.R # The 7-day window, parsing the API's schedules, how the window is written
├── library_write.R # Replacing the libraries and services in one transaction
├── coordinates.R # Which coordinates to believe (override > API > last good snapshot)
└── backfill_historical_data.R # Backfill historical schedules
data/ # Manual corrections and the coordinate snapshot (CSV)
├── library_url_overrides.csv, library_coordinate_overrides.csv, library_exclusions.csv
└── library_coordinates.csv # Last good coordinates of every library (kept up to date by the weekly run)
app/
├── run.R # Entry point: security headers, /health, host and port
├── global.R, server.R, ui.R
├── server/ # data (loading, reloading), filters, url (the address), map, panels
├── modules/service_stats.R # The Service Statistics tab
├── libraries.sqlite # SQLite backup (written by the pipeline)
├── lib/ # The R code (not in www/, which Shiny serves to anyone)
│ ├── functions.R # Database queries, status calculation, map drawing, popups
│ ├── data_layer.R # get_app_data(): never throws, shared cache, stale/backup states
│ ├── filter_logic.R # The dropdown rules (no Shiny in it), the search box, the address
│ ├── health.R, security.R # /health and the security headers (including the CSP)
│ ├── strings.R # All user-facing text
│ └── variables.R # Colours, map settings, cache and reload times
└── www/ # What the browser may fetch
└── app.js, mode-toggle.js, styles.css, favicon.png
tests/testthat/ # The test suite (about 1,500 expectations)
.github/workflows/ # tests, fetch_data, check_library_urls, deploy_shiny_app
infra/, fixes/ # Artifact Registry cleanup policy, the monitoring setup script
schema.sql, Dockerfile, docker-compose.yml, deploy.sh, renv.lock
CLAUDE.md describes how the pieces fit together (for people and for Claude Code), and bibliostatus-refactor-plan.md is the record of the 2026-10 refactor.
Daily schedule update (2:00 AM UTC; GitHub often starts the job a few hours late):
fetch_library_data.R in "schedules" modelibraries.sqlite as the backupWeekly library update (Sunday 2:00 AM UTC):
This is the beginning of the README. Read the rest at the original. Read the full README ↗