76 lines
3.7 KiB
Markdown
76 lines
3.7 KiB
Markdown
# St. Andrews Park
|
|
|
|
A Shiny mobile app for residents of St. Andrews Park, Venice, Florida.
|
|
|
|
## What it does
|
|
|
|
- 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
|
|
|
|
## Data sources
|
|
|
|
- **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
|
|
|
|
## 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.
|
|
|
|
## Deployment problems and solutions
|
|
|
|
**1. Workflow YAML syntax error**
|
|
The SSH heredoc (`<< 'EOF'`) inside a YAML `run:` block conflicted with YAML parsing — red triangle in Gitea, no logs.
|
|
→ Replaced with a quoted multiline SSH string.
|
|
|
|
**2. Runner not picking up jobs**
|
|
The workflow used `container: debian:bookworm-slim` just to get SSH, forcing the runner to pull a Docker image on every run.
|
|
→ Removed the container block, reverted to `runs-on: ubuntu-latest` using the cached runner image.
|
|
|
|
**3. Runner was repo-scoped, not user-scoped**
|
|
The act_runner was registered specifically for another repo. stAndrews showed zero runners and jobs stayed queued forever.
|
|
→ Re-registered the runner at the user level via Gitea User Settings → Actions → Runners.
|
|
|
|
**4. Two runner instances competing**
|
|
A manual `pkill` + manual restart created a second runner process alongside the systemd service, both sharing the same UUID.
|
|
→ Killed the duplicate, leaving only the systemd-managed instance.
|
|
|
|
**5. Gateway Caddyfile `import` silently failing**
|
|
The `import /data/projects/r/*/Caddyfile.snippet` directive was never evaluated — the gateway container only mounts the Caddyfile itself, not the project directories.
|
|
→ Added the stAndrews route directly to the gateway Caddyfile.
|
|
|
|
**6. renv activating inside the container**
|
|
The volume mount `.:/srv/shiny-server` put `.Rprofile` into the container, triggering renv to try installing its own library and conflicting with packages already installed in the image.
|
|
→ Switched to selective mounts (`./data` and `./www` only). App code is baked into the image; only runtime data is volume-mounted.
|
|
|
|
**7. `owners.rds` deleted from disk**
|
|
`git rm --cached data/owners.rds` removed it from git tracking but also wiped the file from the filesystem.
|
|
→ Ran `update_owners.R` inside the rstudio container to rebuild it from the SCPA source.
|
|
|
|
## 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.
|