# TODO ## App - [ ] Display `last_sale_date` attribute from `owners.rds` somewhere in the UI so users know how current the ownership data is ## Data - [ ] Verify SCPA Public.xlsx column structure is stable across downloads - [ ] Delete app from shinyapps.io (account: rob-wiederstein, appId: 14173710) - [ ] Add cron job to run `update_owners.R` weekly inside the rstudio container: `docker exec rstudio Rscript /home/rstudio/projects/r/stAndrews/data-raw/update_owners.R` Note: app must reload `owners.rds` after refresh — either restart container or make app reactive to file changes ## Features - [ ] Add RentCast active listings tab - Pull active listings via RentCast API (see veniceProp/sarco for prior work) - Spatially filter to St. Andrews subdivision boundaries (`data/plats/plats.shp`) - Display on map + table (similar to Owners tab) - Store API key as environment variable, not in code - Consider caching results (API has rate limits) ## Performance - [ ] Optimize CI build time: create a pre-built base image with R packages already installed so renv restore is skipped on redeploy. Cold builds currently take ~10 minutes due to geo stack (sf, gdal) compilation. ## Deployment - [x] Create Dockerfile, docker-compose.yml, .gitea/workflows/deploy.yaml - [x] Push to Gitea — act_runner deploys on push to main - [x] App live at apps.robwiederstein.org/stAndrews/ Notes: - Gateway route is hardcoded in ~/docker/gateway/Caddyfile (import pattern failed) - Volume mounts: only ./data and ./www — app code baked into image to avoid renv conflict - act_runner registered at user level, not repo level