Rescue Retriever is a fully static single-page application built with React 19. All data lives in compiled JavaScript modules and all operations — filtering, scoring, sorting, and CSV export — execute entirely client-side. There is no server to configure, no API to call, and no network request made at runtime for application data.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/rescue-retriever/llms.txt
Use this file to discover all available pages before exploring further.
Technology Stack
| Technology | Role |
|---|---|
| React 19 + TypeScript | UI framework and component layer |
| Tailwind CSS v4 | Utility-first styling |
| shadcn/ui (Radix UI) | Accessible component primitives (buttons, cards, tables, accordions) |
| Recharts | Data visualization (bar, pie, area charts) |
| React Router v7 | Client-side navigation and route matching |
| TanStack React Query | Data management patterns |
| Vite | Build tooling and development server |
| Bun | Package manager |
| Syne / Inter / JetBrains Mono | Heading, body, and code fonts |
Data Flow
The entire data pipeline runs in the browser from module load to CSV download. No network requests are made for application data at any point.- Build time — The Austin Animal Center dataset is imported as a static JavaScript module (
data/animals.js). Vite compiles it into the application bundle alongside all other source code. - App start — The animals array is available immediately in browser memory when the page loads. No
fetchor database query is required. - Filter and score — All operations — keyword search, program filter, scoring, sorting, analytics aggregation — are pure in-memory functions implemented in
lib/filterUtils.js. - Render — React state drives the Dashboard, Analytics, and Reports views. Filtering and sorting happen synchronously on every interaction.
- CSV export — The browser Blob API constructs a downloadable
.csvfile from the currently visible filtered records, usingURL.createObjectURL()and a programmatically clicked<a>element.
Application Routes
All routes are handled client-side by React Router v7. The application is pre-rendered as static HTML shells — one file per route — for fast initial paint on any CDN.| Path | Page |
|---|---|
/ | Home page |
/dashboard | Dashboard — filter, search, sort, and export animal records |
/candidates/:id | Candidate Detail — full profile and per-program score breakdown |
/analytics | Analytics — breed, age, location, and program visualizations |
/profiles or /rescue-profiles | Rescue Profiles — Water, Mountain, and Disaster program cards |
/reports | Reports — per-program candidate tables with one-click CSV export |
/case-study | Case Study — narrative walkthrough of the screening methodology |
/articles | Articles list |
/articles/:id | Article detail |
/docs | Documentation — in-app reference built from the same source data |
Project Structure
data/— All static data.animals.jsexports the full shelter dataset as a plain array.rescueProfiles.jsexports threeRescueProfileobjects defining breed, sex, and age criteria for each program.lib/filterUtils.js— The scoring engine. All logic forscoreAnimal,sortByProgram,getStrictCandidates,getAnalytics, andexportCSVlives here as pure functions with no side effects.components/ui/— The full shadcn/ui component set. These components use Radix UI primitives for accessibility (keyboard navigation, ARIA attributes, focus management) and are styled via Tailwind.pages/— Static HTML shells pre-rendered for each route. React hydrates these on page load.
No Backend
Rescue Retriever requires no server infrastructure of any kind. The finished build is a folder of static HTML, JavaScript, and CSS files that can be served by any web server or static hosting platform. There are no API keys, no authentication flows, no environment variables required at runtime, and no database connections. The entire application state is derived from the compiled-in dataset and user interactions in the browser.All source code for Rescue Retriever is available on GitHub. The dataset is sourced from the Austin Animal Center public records provided by the City of Austin.
Related Reference
Data Model
Animal record fields and RescueProfile schema
Scoring Algorithm
How breed, sex, and age are weighted into a 0–100 score