# nokwandadzanibe/pinkbloomapp architecture

> Architecture diagram of the GitHub repository nokwandadzanibe/pinkbloomapp, 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/nokwandadzanibe/pinkbloomapp
- Repository: https://github.com/nokwandadzanibe/pinkbloomapp

## Overview

Pink Bloom is a community report and case tracker. Users register or sign in, submit menstrual-health access reports, and follow their cases; NGO partners and admins review reports and advance them through the status pipeline. The frontend is implemented in a single React application file, while the sampled FastAPI handlers perform database operations directly. The README documents dashboards, filtering, reset-demo behavior, and session restoration; source excerpts are partial, so internal wiring beyond shown calls is not inferred.

Main entry points: [`backend/app.py`](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/backend/app.py) (Report endpoints), [`frontend/src/App.jsx`](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/App.jsx) (App flow), [`frontend/src/main.jsx`](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/main.jsx) (React entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["React application"]
  node_entry["React entry<br/>[main.jsx]"]
  node_app["App flow<br/>[App.jsx]"]
  node_auth_ui["Login and signup<br/>[App.jsx]"]
  node_user_dashboard["User cases<br/>[App.jsx]"]
  node_report_form["Report submission<br/>[App.jsx]"]
  node_partner_dashboard["Partner triage<br/>[App.jsx]"]
end

subgraph group_backend["API and workflows"]
  node_auth_api["Auth endpoints<br/>[app.py]"]
  node_auth_security["Password and JWT<br/>[app.py]"]
  node_report_api["Report endpoints<br/>[app.py]"]
  node_status_flow["Status pipeline<br/>[app.py]"]
end

subgraph group_state["Persistent state"]
  node_sqlite[("SQLite database<br/>[app.py]")]
end

node_community_user(("Community user"))
node_partner_admin(("Partner / admin"))

node_entry -->|"renders"| node_app
node_community_user -->|"uses"| node_app
node_partner_admin -->|"uses"| node_app
node_app -->|"shows"| node_auth_ui
node_app -->|"shows"| node_user_dashboard
node_app -->|"shows"| node_partner_dashboard
node_user_dashboard -->|"opens"| node_report_form
node_auth_ui -->|"registers / logs in"| node_auth_api
node_auth_api -->|"hashes / issues tokens"| node_auth_security
node_auth_api -->|"reads / writes users"| node_sqlite
node_user_dashboard -->|"loads cases"| node_report_api
node_report_form -->|"submits report"| node_report_api
node_partner_dashboard -->|"filters / advances / resets"| node_report_api
node_report_api -->|"advances status"| node_status_flow
node_report_api -->|"reads / writes reports"| node_sqlite
node_auth_api -->|"returns session"| node_auth_ui
node_report_api -->|"returns cases"| node_user_dashboard
node_report_api -->|"returns reports"| node_partner_dashboard

click node_entry "https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/main.jsx"
click node_app "https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/App.jsx"
click node_auth_ui "https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/App.jsx"
click node_user_dashboard "https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/App.jsx"
click node_report_form "https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/App.jsx"
click node_partner_dashboard "https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/App.jsx"
click node_auth_api "https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/backend/app.py"
click node_auth_security "https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/backend/app.py"
click node_report_api "https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/backend/app.py"
click node_status_flow "https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/backend/app.py"
click node_sqlite "https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/backend/app.py"

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_entry,node_app,node_auth_ui,node_user_dashboard,node_report_form,node_partner_dashboard,node_community_user toneBlue
class node_auth_api,node_auth_security,node_report_api,node_status_flow toneAmber
class node_sqlite toneMint
class node_partner_admin toneIndigo
```

## Components

### React application

- [React entry](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/main.jsx): `frontend/src/main.jsx`
- [App flow](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Login and signup](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [User cases](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Report submission](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Partner triage](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`

### API and workflows

- [Auth endpoints](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/backend/app.py): `backend/app.py`
- [Password and JWT](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/backend/app.py): `backend/app.py`
- [Report endpoints](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/backend/app.py): `backend/app.py`
- [Status pipeline](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/backend/app.py): `backend/app.py`

### Persistent state

- [SQLite database](https://github.com/nokwandadzanibe/pinkbloomapp/blob/main/backend/app.py): `backend/app.py`

### Other components

- **Community user**
- **Partner / admin**

## Connections

- React entry → App flow: renders
- Community user → App flow: uses
- Partner / admin → App flow: uses
- App flow → Login and signup: shows
- App flow → User cases: shows
- App flow → Partner triage: shows
- User cases → Report submission: opens
- Login and signup → Auth endpoints: registers / logs in
- Auth endpoints → Password and JWT: hashes / issues tokens
- Auth endpoints → SQLite database: reads / writes users
- User cases → Report endpoints: loads cases
- Report submission → Report endpoints: submits report
- Partner triage → Report endpoints: filters / advances / resets
- Report endpoints → Status pipeline: advances status
- Report endpoints → SQLite database: reads / writes reports
- Auth endpoints → Login and signup: returns session
- Report endpoints → User cases: returns cases
- Report endpoints → Partner triage: returns reports
