# jksurampudi5/findlostpuppy architecture

> Architecture diagram of the GitHub repository jksurampudi5/findlostpuppy, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jksurampudi5/findlostpuppy
- Repository: https://github.com/jksurampudi5/findlostpuppy

## Overview

FindLostPuppy helps pet owners create missing-dog listings and coordinate reunions with neighbors who can search listings and submit sightings. Its main journey moves through consent and sign-in, owner/location and dog setup, a lost report, then community discovery and owner follow-up. The README documents approximate public locations, photo sightings, reunion status changes, and dashboards. The graph uses the documented routes and sampled service relationships; wiring among unsampled feature pages is intentionally not inferred.

Main entry points: [`src/App.tsx`](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/App.tsx) (App Router), [`src/context/AuthContext.tsx`](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/context/AuthContext.tsx) (Auth Context), [`src/services/firebaseSyncService.ts`](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/firebaseSyncService.ts) (Firebase Sync), [`src/pages/EmailAuthPage.tsx`](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/EmailAuthPage.tsx) (Sign In)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_journey["Owner Journey"]
  node_app["App Router<br/>[App.tsx]"]
  node_consent["Consent<br/>[ConsentPage.tsx]"]
  node_authpage["Sign In<br/>[EmailAuthPage.tsx]"]
  node_ownerform["Owner Profile"]
  node_location["Location Setup"]
  node_dogform["Dog Profile"]
  node_lostreport["Lost Report"]
end

subgraph group_community["Community Response"]
  node_discover["Discovery<br/>[DiscoveryPage.tsx]"]
  node_detail["Dog Details<br/>[DogDetailPage.tsx]"]
  node_sighting["Guest Sighting"]
  node_dashboard["Owner Dashboard<br/>[DashboardPage.tsx]"]
  node_admin["Admin Tools"]
end

subgraph group_services["Application Services"]
  node_authcontext["Auth Context<br/>[AuthContext.tsx]"]
  node_authservice["Authentication<br/>[authService.ts]"]
  node_consentservice["Consent State<br/>[consentService.ts]"]
  node_locationservice["Location Services<br/>[locationService.ts]"]
  node_storage["Storage Service<br/>[storageService.ts]"]
  node_sync["Firebase Sync"]
  node_media["Media Storage"]
end

subgraph group_persistence["Persistence &amp; Integrations"]
  node_localdb[("Local Storage")]
  node_firestore[("Firestore")]
  node_firebaseauth["Firebase Auth"]
  node_cloudmedia[("Firebase Storage")]
end

node_owner(("Pet Owner"))
node_neighbor(("Community Member"))

node_owner -->|"uses"| node_app
node_neighbor -->|"uses"| node_app
node_app -->|"routes"| node_consent
node_app -->|"routes"| node_authpage
node_app -->|"routes"| node_ownerform
node_app -->|"routes"| node_location
node_app -->|"routes"| node_dogform
node_app -->|"routes"| node_lostreport
node_app -->|"routes"| node_discover
node_app -->|"routes"| node_detail
node_app -->|"routes"| node_sighting
node_app -->|"routes"| node_dashboard
node_app -->|"routes"| node_admin
node_authpage -->|"signs in"| node_authcontext
node_authcontext -->|"authenticates"| node_authservice
node_authservice -.->|"calls"| node_firebaseauth
node_authcontext -->|"checks consent"| node_consentservice
node_authcontext -->|"loads data"| node_storage
node_authcontext -->|"pulls data"| node_sync
node_storage -->|"reads/writes"| node_localdb
node_sync -.->|"reads/writes"| node_firestore
node_sync -->|"deletes media"| node_media
node_media -.->|"uploads/deletes"| node_cloudmedia

click node_app "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/App.tsx"
click node_consent "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/ConsentPage.tsx"
click node_authpage "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/EmailAuthPage.tsx"
click node_ownerform "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/PetParentContactPage.tsx"
click node_location "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/LocationOnboardingPage.tsx"
click node_dogform "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/DogOnboardingPage.tsx"
click node_lostreport "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/ReportWizardPage.tsx"
click node_discover "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/DiscoveryPage.tsx"
click node_detail "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/DogDetailPage.tsx"
click node_sighting "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/GuestSightingPage.tsx"
click node_dashboard "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/DashboardPage.tsx"
click node_admin "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/AdminDashboardPage.tsx"
click node_authcontext "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/context/AuthContext.tsx"
click node_authservice "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/authService.ts"
click node_consentservice "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/consentService.ts"
click node_locationservice "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/locationService.ts"
click node_storage "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/storageService.ts"
click node_sync "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/firebaseSyncService.ts"
click node_media "https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/storageBucketService.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_consent,node_authpage,node_ownerform,node_location,node_dogform,node_lostreport toneBlue
class node_discover,node_detail,node_sighting,node_dashboard,node_admin toneAmber
class node_authcontext,node_authservice,node_consentservice,node_locationservice,node_storage,node_sync,node_media toneMint
class node_localdb,node_firestore,node_firebaseauth,node_cloudmedia toneRose
class node_owner,node_neighbor toneIndigo
```

## Components

### Owner Journey

- [App Router](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/App.tsx): `src/App.tsx`
- [Consent](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/ConsentPage.tsx): `src/pages/ConsentPage.tsx`
- [Sign In](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/EmailAuthPage.tsx): `src/pages/EmailAuthPage.tsx`
- [Owner Profile](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/PetParentContactPage.tsx): `src/pages/PetParentContactPage.tsx`
- [Location Setup](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/LocationOnboardingPage.tsx): `src/pages/LocationOnboardingPage.tsx`
- [Dog Profile](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/DogOnboardingPage.tsx): `src/pages/DogOnboardingPage.tsx`
- [Lost Report](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/ReportWizardPage.tsx): `src/pages/ReportWizardPage.tsx`

### Community Response

- [Discovery](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/DiscoveryPage.tsx): `src/pages/DiscoveryPage.tsx`
- [Dog Details](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/DogDetailPage.tsx): `src/pages/DogDetailPage.tsx`
- [Guest Sighting](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/GuestSightingPage.tsx): `src/pages/GuestSightingPage.tsx`
- [Owner Dashboard](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/DashboardPage.tsx): `src/pages/DashboardPage.tsx`
- [Admin Tools](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/pages/AdminDashboardPage.tsx): `src/pages/AdminDashboardPage.tsx`

### Application Services

- [Auth Context](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/context/AuthContext.tsx): `src/context/AuthContext.tsx`
- [Authentication](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/authService.ts): `src/services/authService.ts`
- [Consent State](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/consentService.ts): `src/services/consentService.ts`
- [Location Services](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/locationService.ts): `src/services/locationService.ts`
- [Storage Service](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/storageService.ts): `src/services/storageService.ts`
- [Firebase Sync](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/firebaseSyncService.ts): `src/services/firebaseSyncService.ts`
- [Media Storage](https://github.com/jksurampudi5/findlostpuppy/blob/main/src/services/storageBucketService.ts): `src/services/storageBucketService.ts`

### Persistence & Integrations

- **Local Storage**
- **Firestore**
- **Firebase Auth**
- **Firebase Storage**

### Other components

- **Pet Owner**
- **Community Member**

## Connections

- Pet Owner → App Router: uses
- Community Member → App Router: uses
- App Router → Consent: routes
- App Router → Sign In: routes
- App Router → Owner Profile: routes
- App Router → Location Setup: routes
- App Router → Dog Profile: routes
- App Router → Lost Report: routes
- App Router → Discovery: routes
- App Router → Dog Details: routes
- App Router → Guest Sighting: routes
- App Router → Owner Dashboard: routes
- App Router → Admin Tools: routes
- Sign In → Auth Context: signs in
- Auth Context → Authentication: authenticates
- Authentication → Firebase Auth: calls
- Auth Context → Consent State: checks consent
- Auth Context → Storage Service: loads data
- Auth Context → Firebase Sync: pulls data
- Storage Service → Local Storage: reads/writes
- Firebase Sync → Firestore: reads/writes
- Firebase Sync → Media Storage: deletes media
- Media Storage → Firebase Storage: uploads/deletes
