Add deployment pipeline and clean up repo

- Add Dockerfile, docker-compose.yml, .dockerignore, .env (port 3842)
- Add Caddyfile.snippet for analytics gateway import pattern
- Add .gitea/workflows/deploy.yaml for act_runner SSH deploy
- Untrack sensitive/data files (SCPA xlsx, owners.rds)
- Add renv lockfile and infrastructure files
- Reorganize data-raw scripts and add SarasotaCounty boundary data
- Move www assets to www/images/, add docs PDFs
This commit is contained in:
2026-03-09 10:38:21 -04:00
parent 623754358b
commit 43552a937e
38 changed files with 6749 additions and 96 deletions

View File

@@ -1,13 +1,45 @@
# St. Andrews
# St. Andrews Park
The project maps addresses of St. Andrews in Venice, Florida, to a map. The map is created with `leaflet`. St. Andrews is 388 separate properties in 14 subdivisions.
A Shiny mobile app for residents of St. Andrews Park, Venice, Florida.
## Data
## What it does
The data comes from the Sarasota County Property Appraiser for the property records and the Sarasota County GIS for the subdivision boundaries.
- Maps 388 property owners across 14 subdivisions
- Search owners by name, address, or subdivision
- Shows Venice city boundary and demographic facts
- Lists nearby EPA-monitored beach conditions
- Links to city services, county resources, and community documents
## Challenges
## Data sources
The property records are not geocoded, so the addresses need to be assigned a latitude and longitude. The records have two columns regarding address with the first portion being a street address like "123 Main St." and the second portion being a building and unit number. The second portion was inconsistent and only the first portion could be used.
- **Owners** — Sarasota County Property Appraiser (SCPA); updated weekly via `data-raw/update_owners.R`
- **Subdivision boundaries** — Sarasota County GIS plat layer
- **Venice boundary** — Sarasota County GIS municipal boundary layer
- **Beaches** — EPA beach monitoring data
This resulted in a building with 8 residents having 8 points fixed to the same location. This was fixed by manually moving each of the points within QGIS and exporting the data back to the project. Not great for reproducibility, but resulted in a much better and more accurate map.
## Weekly update
```r
source("./data-raw/update_owners.R")
```
Downloads fresh SCPA data, joins to stable geometry, overwrites `data/owners.rds`.
## Geometry
Owner point locations were geocoded via Google API, manually corrected in QGIS
(multi-unit buildings share a street address and required individual point placement),
and saved as `data-raw/addresses/owners_moved.gpkg`. This file is the stable geometry
source. Account numbers follow the property, so only ownership attributes need
refreshing weekly.
## Note: building footprints not used
Sarasota County publishes a building footprint GIS layer that could derive accurate
centroids without geocoding. However the footprint layer carries only a street number
(`buildingid`) with no street name — making a direct attribute join to SCPA records
ambiguous across multiple streets. A spatial join via street centerlines would resolve
this but adds complexity. Since accurate geometry already exists in `owners_moved.gpkg`
and St. Andrews is a built-out community with no new construction, the footprint
approach was deferred. It remains the right path if the app is ever extended to
additional subdivisions.