# sshema-cpu/opportunityrecognition architecture

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

## Overview

HopIN is a Gradio prototype for campus carpooling: drivers post rides, riders find and reserve seats, and either party can cancel. The single source file handles the interface, workflow logic, and SQLite access. The graph reflects the supplied app.py; no separate authentication, payment, GPS, or notification services are implemented.

Main entry points: [`app.py`](https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py) (Gradio interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interface"]
  node_gradio["Gradio interface<br/>[app.py]"]
end

subgraph group_rides["Ride workflows"]
  node_posting["Post ride<br/>[app.py]"]
  node_board["Search rides<br/>[app.py]"]
  node_booking["Reserve seats<br/>[app.py]"]
  node_booking_cancel["Cancel booking<br/>[app.py]"]
  node_ride_cancel["Cancel ride<br/>[app.py]"]
end

subgraph group_storage["Persistence"]
  node_startup["Initialize data<br/>[app.py]"]
  node_sqlite[("SQLite database<br/>[app.py]")]
end

node_users(("Campus users"))

node_users -->|"use"| node_gradio
node_gradio -->|"dispatches"| node_posting
node_gradio -->|"dispatches"| node_board
node_gradio -->|"dispatches"| node_booking
node_gradio -->|"dispatches"| node_booking_cancel
node_gradio -->|"dispatches"| node_ride_cancel
node_startup -->|"creates tables"| node_sqlite
node_startup -->|"seeds rides"| node_sqlite
node_board -->|"reads rides"| node_sqlite
node_posting -->|"inserts ride"| node_sqlite
node_posting -->|"refreshes listing"| node_board
node_booking -->|"reads and updates"| node_sqlite
node_booking -->|"refreshes listing"| node_board
node_booking_cancel -->|"reads and updates"| node_sqlite
node_booking_cancel -->|"refreshes listing"| node_board
node_ride_cancel -->|"reads and updates"| node_sqlite
node_ride_cancel -->|"refreshes listing"| node_board

click node_gradio "https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py"
click node_posting "https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py"
click node_board "https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py"
click node_booking "https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py"
click node_booking_cancel "https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py"
click node_ride_cancel "https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py"
click node_startup "https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py"
click node_sqlite "https://github.com/sshema-cpu/opportunityrecognition/blob/main/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_gradio,node_users toneBlue
class node_posting,node_board,node_booking,node_booking_cancel,node_ride_cancel toneAmber
class node_startup,node_sqlite toneMint
```

## Components

### User interface

- [Gradio interface](https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py): `app.py`

### Ride workflows

- [Post ride](https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py): `app.py`
- [Search rides](https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py): `app.py`
- [Reserve seats](https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py): `app.py`
- [Cancel booking](https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py): `app.py`
- [Cancel ride](https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py): `app.py`

### Persistence

- [Initialize data](https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py): `app.py`
- [SQLite database](https://github.com/sshema-cpu/opportunityrecognition/blob/main/app.py): `app.py`

### Other components

- **Campus users**

## Connections

- Campus users → Gradio interface: use
- Gradio interface → Post ride: dispatches
- Gradio interface → Search rides: dispatches
- Gradio interface → Reserve seats: dispatches
- Gradio interface → Cancel booking: dispatches
- Gradio interface → Cancel ride: dispatches
- Initialize data → SQLite database: creates tables
- Initialize data → SQLite database: seeds rides
- Search rides → SQLite database: reads rides
- Post ride → SQLite database: inserts ride
- Post ride → Search rides: refreshes listing
- Reserve seats → SQLite database: reads and updates
- Reserve seats → Search rides: refreshes listing
- Cancel booking → SQLite database: reads and updates
- Cancel booking → Search rides: refreshes listing
- Cancel ride → SQLite database: reads and updates
- Cancel ride → Search rides: refreshes listing
