# 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 ## Deployment Everything must be scripted from within the project folder. No manual steps on the server outside of what the workflow handles. - [ ] Create Dockerfile (follow veniceProp pattern — `rocker/shiny:4.5.2`) - [ ] Create docker-compose.yml (bind to `127.0.0.1::3838`) - [ ] Create `.gitea/workflows/deploy.yaml` that: - Builds the Docker image - Runs `docker compose up -d` - SSHes into analytics VM and idempotently adds route to gateway Caddyfile - Restarts the gateway container - [ ] Push to Gitea — act_runner handles all future deploys automatically