# boyiajas/omni247 architecture

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

## Overview

Omni247 is an incident-reporting product with a React Native app and a Laravel backend, plus browser-based client and administration surfaces. The main user journey is account access, location- and media-assisted report creation, submission for review, and viewing reports on feeds or maps; engagement includes alerts and rewards. The tree and README also show agency dashboards, privacy controls, and moderation/verification capabilities. Some implementation paths are unsampled, so the graph limits those connections to documented or directly evidenced interactions.

Main entry points: [`src/services/api/ApiClient.js`](https://github.com/boyiajas/omni247/blob/main/src/services/api/ApiClient.js) (API client), [`src/navigation/AppNavigator.js`](https://github.com/boyiajas/omni247/blob/main/src/navigation/AppNavigator.js) (App navigation), [`src/screens/report`](https://github.com/boyiajas/omni247/tree/main/src/screens/report) (Report creation), [`backend/routes/api.php`](https://github.com/boyiajas/omni247/blob/main/backend/routes/api.php) (API routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mobile["Mobile app"]
  node_mobile_nav["App navigation<br/>[AppNavigator.js]"]
  node_mobile_auth["Sign in and register"]
  node_mobile_report["Report creation"]
  node_mobile_location["Location services"]
  node_mobile_media["Media services"]
  node_mobile_api["API client<br/>[ApiClient.js]"]
  node_mobile_feed["Feeds and maps"]
  node_mobile_rewards["Rewards screens"]
end

subgraph group_reporting["Reporting backend"]
  node_api_routes["API routes<br/>[api.php]"]
  node_auth_api["Authentication API<br/>[AuthController.php]"]
  node_report_api["Client report API"]
  node_report_store[("Report records<br/>[Report.php]")]
  node_verification["Verification pipeline"]
  node_moderation_jobs["Moderation jobs"]
end

subgraph group_engagement["Engagement services"]
  node_api_services["Report and media APIs"]
  node_notifications["Notifications"]
  node_rewards["Rewards and achievements"]
end

subgraph group_web["Web surfaces"]
  node_client_web["Client portal"]
  node_admin_web["Admin dashboard"]
  node_landing["Public landing feed"]
end

subgraph group_operations["Operations"]
  node_admin_api["Admin APIs"]
  node_dashboard_data["Dashboard analytics"]
end

node_reporter(("Reporter"))
node_push_provider{{"Push provider"}}

node_reporter -->|"uses"| node_mobile_nav
node_mobile_nav -->|"opens"| node_mobile_auth
node_mobile_nav -->|"opens"| node_mobile_report
node_mobile_report -->|"gets location"| node_mobile_location
node_mobile_report -->|"captures media"| node_mobile_media
node_mobile_auth -->|"sends credentials"| node_mobile_api
node_mobile_api -->|"sends requests"| node_api_routes
node_api_routes -->|"dispatches"| node_auth_api
node_mobile_report -->|"submits report"| node_mobile_api
node_api_routes -->|"dispatches"| node_report_api
node_report_api -->|"creates and reads"| node_report_store
node_mobile_feed -->|"requests feeds"| node_mobile_api
node_mobile_api -->|"uses"| node_api_services
node_api_services -->|"sends requests"| node_api_routes
node_landing -->|"reads verified reports"| node_report_store
node_verification -->|"evaluates report"| node_report_store
node_admin_web -->|"requests operations"| node_admin_api
node_admin_api -->|"loads analytics"| node_dashboard_data
node_dashboard_data -->|"queries reports"| node_report_store
node_client_web -->|"requests reports"| node_report_api
node_mobile_rewards -->|"requests rewards"| node_api_services
node_mobile_nav -.->|"shows notifications"| node_notifications
node_notifications -.->|"sends alerts"| node_push_provider
node_moderation_jobs -.->|"supports review"| node_verification

click node_mobile_nav "https://github.com/boyiajas/omni247/blob/main/src/navigation/AppNavigator.js"
click node_mobile_auth "https://github.com/boyiajas/omni247/tree/main/src/screens/auth"
click node_mobile_report "https://github.com/boyiajas/omni247/tree/main/src/screens/report"
click node_mobile_location "https://github.com/boyiajas/omni247/tree/main/src/services/location"
click node_mobile_media "https://github.com/boyiajas/omni247/tree/main/src/services/media"
click node_mobile_api "https://github.com/boyiajas/omni247/blob/main/src/services/api/ApiClient.js"
click node_mobile_feed "https://github.com/boyiajas/omni247/tree/main/src/screens/main"
click node_mobile_rewards "https://github.com/boyiajas/omni247/tree/main/src/screens/rewards"
click node_api_routes "https://github.com/boyiajas/omni247/blob/main/backend/routes/api.php"
click node_auth_api "https://github.com/boyiajas/omni247/blob/main/backend/app/Http/Controllers/Api/AuthController.php"
click node_report_api "https://github.com/boyiajas/omni247/blob/main/backend/app/Http/Controllers/Client/ClientReportController.php"
click node_report_store "https://github.com/boyiajas/omni247/blob/main/backend/app/Models/Report.php"
click node_verification "https://github.com/boyiajas/omni247/blob/main/backend/app/Services/Verification/VerificationPipeline.php"
click node_moderation_jobs "https://github.com/boyiajas/omni247/tree/main/backend/app/Jobs"
click node_api_services "https://github.com/boyiajas/omni247/tree/main/src/services/api"
click node_notifications "https://github.com/boyiajas/omni247/blob/main/backend/app/Http/Controllers/Api/NotificationController.php"
click node_rewards "https://github.com/boyiajas/omni247/blob/main/backend/app/Services/AchievementService.php"
click node_client_web "https://github.com/boyiajas/omni247/tree/main/backend/resources/js/views/client"
click node_admin_web "https://github.com/boyiajas/omni247/tree/main/backend/resources/js/views"
click node_admin_api "https://github.com/boyiajas/omni247/tree/main/backend/app/Http/Controllers/Admin"
click node_dashboard_data "https://github.com/boyiajas/omni247/blob/main/backend/app/Http/Controllers/Admin/DashboardController.php"
click node_landing "https://github.com/boyiajas/omni247/blob/main/backend/app/Http/Controllers/LandingController.php"

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_mobile_nav,node_mobile_auth,node_mobile_report,node_mobile_location,node_mobile_media,node_mobile_api,node_mobile_feed,node_mobile_rewards toneBlue
class node_api_routes,node_auth_api,node_report_api,node_report_store,node_verification,node_moderation_jobs toneAmber
class node_api_services,node_notifications,node_rewards toneMint
class node_client_web,node_admin_web,node_landing toneRose
class node_admin_api,node_dashboard_data,node_reporter,node_push_provider toneIndigo
```

## Components

### Mobile app

- [App navigation](https://github.com/boyiajas/omni247/blob/main/src/navigation/AppNavigator.js): `src/navigation/AppNavigator.js`
- [Sign in and register](https://github.com/boyiajas/omni247/tree/main/src/screens/auth): `src/screens/auth`
- [Report creation](https://github.com/boyiajas/omni247/tree/main/src/screens/report): `src/screens/report`
- [Location services](https://github.com/boyiajas/omni247/tree/main/src/services/location): `src/services/location`
- [Media services](https://github.com/boyiajas/omni247/tree/main/src/services/media): `src/services/media`
- [API client](https://github.com/boyiajas/omni247/blob/main/src/services/api/ApiClient.js): `src/services/api/ApiClient.js`
- [Feeds and maps](https://github.com/boyiajas/omni247/tree/main/src/screens/main): `src/screens/main`
- [Rewards screens](https://github.com/boyiajas/omni247/tree/main/src/screens/rewards): `src/screens/rewards`

### Reporting backend

- [API routes](https://github.com/boyiajas/omni247/blob/main/backend/routes/api.php): `backend/routes/api.php`
- [Authentication API](https://github.com/boyiajas/omni247/blob/main/backend/app/Http/Controllers/Api/AuthController.php): `backend/app/Http/Controllers/Api/AuthController.php`
- [Client report API](https://github.com/boyiajas/omni247/blob/main/backend/app/Http/Controllers/Client/ClientReportController.php): `backend/app/Http/Controllers/Client/ClientReportController.php`
- [Report records](https://github.com/boyiajas/omni247/blob/main/backend/app/Models/Report.php): `backend/app/Models/Report.php`
- [Verification pipeline](https://github.com/boyiajas/omni247/blob/main/backend/app/Services/Verification/VerificationPipeline.php): `backend/app/Services/Verification/VerificationPipeline.php`
- [Moderation jobs](https://github.com/boyiajas/omni247/tree/main/backend/app/Jobs): `backend/app/Jobs`

### Engagement services

- [Report and media APIs](https://github.com/boyiajas/omni247/tree/main/src/services/api): `src/services/api`
- [Notifications](https://github.com/boyiajas/omni247/blob/main/backend/app/Http/Controllers/Api/NotificationController.php): `backend/app/Http/Controllers/Api/NotificationController.php`
- [Rewards and achievements](https://github.com/boyiajas/omni247/blob/main/backend/app/Services/AchievementService.php): `backend/app/Services/AchievementService.php`

### Web surfaces

- [Client portal](https://github.com/boyiajas/omni247/tree/main/backend/resources/js/views/client): `backend/resources/js/views/client`
- [Admin dashboard](https://github.com/boyiajas/omni247/tree/main/backend/resources/js/views): `backend/resources/js/views`
- [Public landing feed](https://github.com/boyiajas/omni247/blob/main/backend/app/Http/Controllers/LandingController.php): `backend/app/Http/Controllers/LandingController.php`

### Operations

- [Admin APIs](https://github.com/boyiajas/omni247/tree/main/backend/app/Http/Controllers/Admin): `backend/app/Http/Controllers/Admin`
- [Dashboard analytics](https://github.com/boyiajas/omni247/blob/main/backend/app/Http/Controllers/Admin/DashboardController.php): `backend/app/Http/Controllers/Admin/DashboardController.php`

### Other components

- **Reporter**
- **Push provider**

## Connections

- Reporter → App navigation: uses
- App navigation → Sign in and register: opens
- App navigation → Report creation: opens
- Report creation → Location services: gets location
- Report creation → Media services: captures media
- Sign in and register → API client: sends credentials
- API client → API routes: sends requests
- API routes → Authentication API: dispatches
- Report creation → API client: submits report
- API routes → Client report API: dispatches
- Client report API → Report records: creates and reads
- Feeds and maps → API client: requests feeds
- API client → Report and media APIs: uses
- Report and media APIs → API routes: sends requests
- Public landing feed → Report records: reads verified reports
- Verification pipeline → Report records: evaluates report
- Admin dashboard → Admin APIs: requests operations
- Admin APIs → Dashboard analytics: loads analytics
- Dashboard analytics → Report records: queries reports
- Client portal → Client report API: requests reports
- Rewards screens → Report and media APIs: requests rewards
- App navigation → Notifications: shows notifications
- Notifications → Push provider: sends alerts
- Moderation jobs → Verification pipeline: supports review
