Skip to main content

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.

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.

Technology Stack

TechnologyRole
React 19 + TypeScriptUI framework and component layer
Tailwind CSS v4Utility-first styling
shadcn/ui (Radix UI)Accessible component primitives (buttons, cards, tables, accordions)
RechartsData visualization (bar, pie, area charts)
React Router v7Client-side navigation and route matching
TanStack React QueryData management patterns
ViteBuild tooling and development server
BunPackage manager
Syne / Inter / JetBrains MonoHeading, 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.
Austin Animal Center Dataset
        ↓ (compiled at build time)
   animals.js module
        ↓ (loaded on app start)
  Browser memory (React state)

   filterUtils.js (score, filter, sort)

  Dashboard / Analytics / Reports

  Browser Blob API (CSV export)
Step by step:
  1. 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.
  2. App start — The animals array is available immediately in browser memory when the page loads. No fetch or database query is required.
  3. Filter and score — All operations — keyword search, program filter, scoring, sorting, analytics aggregation — are pure in-memory functions implemented in lib/filterUtils.js.
  4. Render — React state drives the Dashboard, Analytics, and Reports views. Filtering and sorting happen synchronously on every interaction.
  5. CSV export — The browser Blob API constructs a downloadable .csv file from the currently visible filtered records, using URL.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.
PathPage
/Home page
/dashboardDashboard — filter, search, sort, and export animal records
/candidates/:idCandidate Detail — full profile and per-program score breakdown
/analyticsAnalytics — breed, age, location, and program visualizations
/profiles or /rescue-profilesRescue Profiles — Water, Mountain, and Disaster program cards
/reportsReports — per-program candidate tables with one-click CSV export
/case-studyCase Study — narrative walkthrough of the screening methodology
/articlesArticles list
/articles/:idArticle detail
/docsDocumentation — in-app reference built from the same source data

Project Structure

rescue-retriever/
├── data/
│   ├── animals.js          # Full Austin Animal Center dataset (static array)
│   ├── rescueProfiles.js   # Three rescue program profile definitions
│   └── articles.js         # Article content objects
├── lib/
│   ├── filterUtils.js      # Scoring, filtering, sorting, analytics, CSV export
│   └── utils.js            # Tailwind class-merging utility (cn)
├── components/
│   ├── layout/
│   │   ├── Navigation.js   # Top navigation bar
│   │   └── Footer.js       # Site footer
│   └── ui/                 # shadcn/ui component library
│       └── (accordion, button, card, chart, table, …)
├── pages/                  # One HTML shell per route (static pre-rendered)
└── assets/                 # Compiled JS and CSS bundles
Key directories:
  • data/ — All static data. animals.js exports the full shelter dataset as a plain array. rescueProfiles.js exports three RescueProfile objects defining breed, sex, and age criteria for each program.
  • lib/filterUtils.js — The scoring engine. All logic for scoreAnimal, sortByProgram, getStrictCandidates, getAnalytics, and exportCSV lives 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.

Data Model

Animal record fields and RescueProfile schema

Scoring Algorithm

How breed, sex, and age are weighted into a 0–100 score

Build docs developers (and LLMs) love