# vishal2473/replate architecture

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

- Interactive diagram: https://gitdiagram.com/vishal2473/replate
- Repository: https://github.com/vishal2473/replate

## Overview

REPLATE is a surplus-food rescue platform connecting food donors with NGOs and volunteers, with administrators overseeing users, donations, and impact. The main workflow runs from donor inventory posting through NGO discovery and claiming, pickup, and delivery certification, followed by impact reporting. The React app routes users to role-specific dashboards; its documented preview uses localStorage-backed state, while the server exposes a separate Express/MongoDB API. The README also describes simulated map, notification, and photo-upload integrations; their wiring is not established by the sampled source, so they are omitted.

Main entry points: [`src/App.tsx`](https://github.com/vishal2473/replate/blob/main/src/App.tsx) (App controller), [`src/services/api.ts`](https://github.com/vishal2473/replate/blob/main/src/services/api.ts) (Client state API), [`server/server.js`](https://github.com/vishal2473/replate/blob/main/server/server.js) (Express server), [`src/pages/Home.tsx`](https://github.com/vishal2473/replate/blob/main/src/pages/Home.tsx) (Public home)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_app["App controller<br/>[App.tsx]"]
  node_home["Public home<br/>[Home.tsx]"]
  node_authui["Login / signup<br/>[LoginSignup.tsx]"]
  node_publicpages["About and contact<br/>[About.tsx]"]
  node_nav["Role navigation<br/>[Navbar.tsx]"]
  node_i18n["Localization<br/>[i18n.ts]"]
end

subgraph group_rescue["Rescue workflow"]
  node_donordash["Donor dashboard<br/>[DonorDashboard.tsx]"]
  node_ngodash["NGO dashboard<br/>[NGODashboard.tsx]"]
end

subgraph group_oversight["Administration"]
  node_admindash["Admin dashboard<br/>[AdminDashboard.tsx]"]
end

subgraph group_backend["API and persistence"]
  node_api["Client state API<br/>[api.ts]"]
  node_authroutes["Auth endpoints<br/>[authRoutes.js]"]
  node_donationroutes["Donation endpoints<br/>[donationRoutes.js]"]
  node_server["Express server<br/>[server.js]"]
  node_usermodel["User schema<br/>[User.js]"]
  node_donationmodel["Donation schema<br/>[FoodDonation.js]"]
  node_mongodb[("MongoDB")]
  node_localstore[("Browser localStorage")]
end

node_donor(("Donor"))
node_ngo(("NGO / volunteer"))
node_admin(("Administrator"))

node_donor -->|"uses"| node_app
node_ngo -->|"uses"| node_app
node_admin -->|"uses"| node_app
node_app -->|"renders"| node_home
node_app -->|"renders"| node_authui
node_app -->|"renders"| node_publicpages
node_app -->|"renders"| node_donordash
node_app -->|"renders"| node_ngodash
node_app -->|"renders"| node_admindash
node_app -->|"renders"| node_nav
node_app -->|"initializes state"| node_api
node_nav -->|"reads and updates preferences"| node_api
node_home -->|"reads listings"| node_api
node_home -->|"translates labels"| node_i18n
node_donordash -->|"posts and reads donations"| node_api
node_ngodash -->|"reads and updates donations"| node_api
node_admindash -->|"manages records"| node_api
node_api -->|"persists preview state"| node_localstore
node_server -->|"mounts"| node_authroutes
node_server -->|"mounts"| node_donationroutes
node_server -->|"connects"| node_mongodb
node_authroutes -->|"queries and creates users"| node_usermodel
node_donationroutes -->|"queries and updates donations"| node_donationmodel
node_authui -->|"authenticates"| node_api
node_authroutes -->|"persists users"| node_mongodb
node_donationroutes -->|"persists donations"| node_mongodb

click node_app "https://github.com/vishal2473/replate/blob/main/src/App.tsx"
click node_home "https://github.com/vishal2473/replate/blob/main/src/pages/Home.tsx"
click node_authui "https://github.com/vishal2473/replate/blob/main/src/pages/LoginSignup.tsx"
click node_publicpages "https://github.com/vishal2473/replate/blob/main/src/pages/About.tsx"
click node_nav "https://github.com/vishal2473/replate/blob/main/src/components/Navbar.tsx"
click node_donordash "https://github.com/vishal2473/replate/blob/main/src/pages/donor/DonorDashboard.tsx"
click node_ngodash "https://github.com/vishal2473/replate/blob/main/src/pages/ngo/NGODashboard.tsx"
click node_admindash "https://github.com/vishal2473/replate/blob/main/src/pages/admin/AdminDashboard.tsx"
click node_api "https://github.com/vishal2473/replate/blob/main/src/services/api.ts"
click node_i18n "https://github.com/vishal2473/replate/blob/main/src/services/i18n.ts"
click node_authroutes "https://github.com/vishal2473/replate/blob/main/server/routes/authRoutes.js"
click node_donationroutes "https://github.com/vishal2473/replate/blob/main/server/routes/donationRoutes.js"
click node_server "https://github.com/vishal2473/replate/blob/main/server/server.js"
click node_usermodel "https://github.com/vishal2473/replate/blob/main/server/models/User.js"
click node_donationmodel "https://github.com/vishal2473/replate/blob/main/server/models/FoodDonation.js"

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_home,node_authui,node_publicpages,node_nav,node_i18n toneBlue
class node_donordash,node_ngodash toneAmber
class node_admindash toneMint
class node_api,node_authroutes,node_donationroutes,node_server,node_usermodel,node_donationmodel,node_mongodb,node_localstore toneRose
class node_donor,node_ngo,node_admin toneIndigo
```

## Components

### Web application

- [App controller](https://github.com/vishal2473/replate/blob/main/src/App.tsx): `src/App.tsx`
- [Public home](https://github.com/vishal2473/replate/blob/main/src/pages/Home.tsx): `src/pages/Home.tsx`
- [Login / signup](https://github.com/vishal2473/replate/blob/main/src/pages/LoginSignup.tsx): `src/pages/LoginSignup.tsx`
- [About and contact](https://github.com/vishal2473/replate/blob/main/src/pages/About.tsx): `src/pages/About.tsx`
- [Role navigation](https://github.com/vishal2473/replate/blob/main/src/components/Navbar.tsx): `src/components/Navbar.tsx`
- [Localization](https://github.com/vishal2473/replate/blob/main/src/services/i18n.ts): `src/services/i18n.ts`

### Rescue workflow

- [Donor dashboard](https://github.com/vishal2473/replate/blob/main/src/pages/donor/DonorDashboard.tsx): `src/pages/donor/DonorDashboard.tsx`
- [NGO dashboard](https://github.com/vishal2473/replate/blob/main/src/pages/ngo/NGODashboard.tsx): `src/pages/ngo/NGODashboard.tsx`

### Administration

- [Admin dashboard](https://github.com/vishal2473/replate/blob/main/src/pages/admin/AdminDashboard.tsx): `src/pages/admin/AdminDashboard.tsx`

### API and persistence

- [Client state API](https://github.com/vishal2473/replate/blob/main/src/services/api.ts): `src/services/api.ts`
- [Auth endpoints](https://github.com/vishal2473/replate/blob/main/server/routes/authRoutes.js): `server/routes/authRoutes.js`
- [Donation endpoints](https://github.com/vishal2473/replate/blob/main/server/routes/donationRoutes.js): `server/routes/donationRoutes.js`
- [Express server](https://github.com/vishal2473/replate/blob/main/server/server.js): `server/server.js`
- [User schema](https://github.com/vishal2473/replate/blob/main/server/models/User.js): `server/models/User.js`
- [Donation schema](https://github.com/vishal2473/replate/blob/main/server/models/FoodDonation.js): `server/models/FoodDonation.js`
- **MongoDB**
- **Browser localStorage**

### Other components

- **Donor**
- **NGO / volunteer**
- **Administrator**

## Connections

- Donor → App controller: uses
- NGO / volunteer → App controller: uses
- Administrator → App controller: uses
- App controller → Public home: renders
- App controller → Login / signup: renders
- App controller → About and contact: renders
- App controller → Donor dashboard: renders
- App controller → NGO dashboard: renders
- App controller → Admin dashboard: renders
- App controller → Role navigation: renders
- App controller → Client state API: initializes state
- Role navigation → Client state API: reads and updates preferences
- Public home → Client state API: reads listings
- Public home → Localization: translates labels
- Donor dashboard → Client state API: posts and reads donations
- NGO dashboard → Client state API: reads and updates donations
- Admin dashboard → Client state API: manages records
- Client state API → Browser localStorage: persists preview state
- Express server → Auth endpoints: mounts
- Express server → Donation endpoints: mounts
- Express server → MongoDB: connects
- Auth endpoints → User schema: queries and creates users
- Donation endpoints → Donation schema: queries and updates donations
- Login / signup → Client state API: authenticates
- Auth endpoints → MongoDB: persists users
- Donation endpoints → MongoDB: persists donations
