# justingojar/bulan_senior_care architecture

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

- Interactive diagram: https://gitdiagram.com/justingojar/bulan_senior_care
- Repository: https://github.com/justingojar/bulan_senior_care

## Overview

Bulan SeniorCare is a senior-citizen and benefits administration portal: staff manage registrations and eligibility, process benefit requests and release batches, and use communications and reports to support that work. The React frontend calls a Laravel API; the README documents a same-origin production deployment and MySQL storage. The graph includes major documented capabilities, but several frontend pages and backend controllers were not sampled, so their internal call relationships are not inferred.

Main entry points: [`backend/routes/api.php`](https://github.com/justingojar/bulan_senior_care/blob/main/backend/routes/api.php) (API routes), [`backend/app/Models/SeniorCitizen.php`](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/SeniorCitizen.php) (Senior records model), [`backend/app/Http/Controllers/SeniorCitizenController.php`](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/SeniorCitizenController.php) (Senior records), [`backend/app/Http/Controllers/BenefitRequestController.php`](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/BenefitRequestController.php) (Benefit requests)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Portal"]
  node_portal["React portal"]
  node_frontend_api["API client<br/>[api.ts]"]
end

subgraph group_api["API and access"]
  node_api_routes["API routes<br/>[api.php]"]
  node_auth["Authentication<br/>[AuthController.php]"]
  node_cookie_auth["Cookie authentication"]
  node_role_permissions["Role permissions"]
end

subgraph group_services["Care operations"]
  node_senior_admin["Senior records"]
  node_benefit_requests["Benefit requests"]
  node_release_batches["Release batches"]
  node_transactions["Benefit transactions"]
  node_analytics["Analytics"]
  node_announcements["Announcements"]
  node_messages["Messages"]
  node_advisories["Advisory delivery"]
  node_age_alerts["Age-threshold alerts"]
  node_facebook_sync["Facebook import"]
end

subgraph group_data["Records and operations"]
  node_audit["Audit logs<br/>[AuditLog.php]"]
  node_senior_model["Senior records model<br/>[SeniorCitizen.php]"]
  node_benefit_model["Benefit catalog<br/>[Benefit.php]"]
  node_transaction_model["Transaction records"]
  node_user_model["User accounts<br/>[User.php]"]
  node_barangay_model["Barangays<br/>[Barangay.php]"]
  node_database[("Railway MySQL")]
  node_backup["Database and photo backup<br/>[DatabaseBackup.php]"]
end

node_staff(("Staff users"))
node_facebook(("Facebook Page"))

node_staff -->|"uses"| node_portal
node_portal -->|"requests data"| node_frontend_api
node_frontend_api -->|"calls API"| node_api_routes
node_api_routes -->|"routes to"| node_auth
node_api_routes -->|"routes to"| node_senior_admin
node_api_routes -->|"routes to"| node_benefit_requests
node_api_routes -->|"routes to"| node_release_batches
node_api_routes -->|"routes to"| node_transactions
node_api_routes -->|"routes to"| node_analytics
node_api_routes -->|"routes to"| node_announcements
node_api_routes -->|"routes to"| node_messages
node_senior_admin -->|"updates"| node_senior_model
node_senior_admin -->|"records changes"| node_audit
node_senior_admin -->|"checks access"| node_role_permissions
node_benefit_requests -->|"checks eligibility"| node_senior_model
node_benefit_requests -->|"checks eligibility"| node_benefit_model
node_benefit_requests -->|"creates transaction"| node_transaction_model
node_release_batches -->|"lists recipients"| node_transaction_model
node_release_batches -->|"checks access"| node_role_permissions
node_analytics -->|"queries"| node_senior_model
node_analytics -->|"queries"| node_transaction_model
node_senior_model -->|"notifies"| node_age_alerts
node_advisories -->|"selects recipients"| node_senior_model
node_advisories -->|"selects recipients"| node_user_model
node_auth -->|"authenticates"| node_user_model
node_auth -->|"sets cookie"| node_cookie_auth
node_api_routes -->|"installs middleware"| node_cookie_auth
node_database -.->|"stores API data"| node_api_routes
node_facebook_sync -.->|"imports posts"| node_facebook
node_backup -.->|"backs up"| node_database
node_backup -->|"backs up photos"| node_senior_model
node_senior_model -->|"belongs to"| node_barangay_model
node_senior_model -->|"relates to"| node_benefit_model

click node_portal "https://github.com/justingojar/bulan_senior_care/tree/main/frontend/src"
click node_frontend_api "https://github.com/justingojar/bulan_senior_care/blob/main/frontend/src/lib/api.ts"
click node_api_routes "https://github.com/justingojar/bulan_senior_care/blob/main/backend/routes/api.php"
click node_auth "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/AuthController.php"
click node_cookie_auth "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Middleware/AuthenticateFromCookie.php"
click node_senior_admin "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/SeniorCitizenController.php"
click node_benefit_requests "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/BenefitRequestController.php"
click node_release_batches "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/BenefitReleaseController.php"
click node_transactions "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/BenefitTransactionController.php"
click node_analytics "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/AnalyticsController.php"
click node_announcements "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/AnnouncementController.php"
click node_messages "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/MessageController.php"
click node_advisories "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Support/AdvisoryDispatcher.php"
click node_age_alerts "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Support/AgeThresholdNotifier.php"
click node_role_permissions "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Support/RolePermissions.php"
click node_audit "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/AuditLog.php"
click node_senior_model "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/SeniorCitizen.php"
click node_benefit_model "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/Benefit.php"
click node_transaction_model "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/BenefitTransaction.php"
click node_user_model "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/User.php"
click node_barangay_model "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/Barangay.php"
click node_backup "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Support/DatabaseBackup.php"
click node_facebook_sync "https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Console/Commands/SyncFacebookAnnouncements.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_portal,node_frontend_api,node_staff toneBlue
class node_api_routes,node_auth,node_cookie_auth,node_role_permissions toneAmber
class node_senior_admin,node_benefit_requests,node_release_batches,node_transactions,node_analytics,node_announcements,node_messages,node_advisories,node_age_alerts,node_facebook_sync toneMint
class node_audit,node_senior_model,node_benefit_model,node_transaction_model,node_user_model,node_barangay_model,node_database,node_backup toneRose
class node_facebook toneIndigo
```

## Components

### Portal

- [React portal](https://github.com/justingojar/bulan_senior_care/tree/main/frontend/src): `frontend/src`
- [API client](https://github.com/justingojar/bulan_senior_care/blob/main/frontend/src/lib/api.ts): `frontend/src/lib/api.ts`

### API and access

- [API routes](https://github.com/justingojar/bulan_senior_care/blob/main/backend/routes/api.php): `backend/routes/api.php`
- [Authentication](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/AuthController.php): `backend/app/Http/Controllers/AuthController.php`
- [Cookie authentication](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Middleware/AuthenticateFromCookie.php): `backend/app/Http/Middleware/AuthenticateFromCookie.php`
- [Role permissions](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Support/RolePermissions.php): `backend/app/Support/RolePermissions.php`

### Care operations

- [Senior records](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/SeniorCitizenController.php): `backend/app/Http/Controllers/SeniorCitizenController.php`
- [Benefit requests](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/BenefitRequestController.php): `backend/app/Http/Controllers/BenefitRequestController.php`
- [Release batches](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/BenefitReleaseController.php): `backend/app/Http/Controllers/BenefitReleaseController.php`
- [Benefit transactions](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/BenefitTransactionController.php): `backend/app/Http/Controllers/BenefitTransactionController.php`
- [Analytics](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/AnalyticsController.php): `backend/app/Http/Controllers/AnalyticsController.php`
- [Announcements](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/AnnouncementController.php): `backend/app/Http/Controllers/AnnouncementController.php`
- [Messages](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Http/Controllers/MessageController.php): `backend/app/Http/Controllers/MessageController.php`
- [Advisory delivery](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Support/AdvisoryDispatcher.php): `backend/app/Support/AdvisoryDispatcher.php`
- [Age-threshold alerts](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Support/AgeThresholdNotifier.php): `backend/app/Support/AgeThresholdNotifier.php`
- [Facebook import](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Console/Commands/SyncFacebookAnnouncements.php): `backend/app/Console/Commands/SyncFacebookAnnouncements.php`

### Records and operations

- [Audit logs](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/AuditLog.php): `backend/app/Models/AuditLog.php`
- [Senior records model](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/SeniorCitizen.php): `backend/app/Models/SeniorCitizen.php`
- [Benefit catalog](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/Benefit.php): `backend/app/Models/Benefit.php`
- [Transaction records](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/BenefitTransaction.php): `backend/app/Models/BenefitTransaction.php`
- [User accounts](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/User.php): `backend/app/Models/User.php`
- [Barangays](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Models/Barangay.php): `backend/app/Models/Barangay.php`
- **Railway MySQL**
- [Database and photo backup](https://github.com/justingojar/bulan_senior_care/blob/main/backend/app/Support/DatabaseBackup.php): `backend/app/Support/DatabaseBackup.php`

### Other components

- **Staff users**
- **Facebook Page**

## Connections

- Staff users → React portal: uses (evidence: `README.md`)
- React portal → API client: requests data (evidence: `README.md`)
- API client → API routes: calls API (evidence: `README.md`)
- API routes → Authentication: routes to (evidence: `backend/routes/api.php`)
- API routes → Senior records: routes to (evidence: `backend/routes/api.php`)
- API routes → Benefit requests: routes to (evidence: `backend/routes/api.php`)
- API routes → Release batches: routes to (evidence: `backend/routes/api.php`)
- API routes → Benefit transactions: routes to (evidence: `backend/routes/api.php`)
- API routes → Analytics: routes to (evidence: `backend/routes/api.php`)
- API routes → Announcements: routes to (evidence: `backend/routes/api.php`)
- API routes → Messages: routes to (evidence: `backend/routes/api.php`)
- Senior records → Senior records model: updates (evidence: `backend/app/Http/Controllers/SeniorCitizenController.php`)
- Senior records → Audit logs: records changes (evidence: `backend/app/Http/Controllers/SeniorCitizenController.php`)
- Senior records → Role permissions: checks access (evidence: `backend/app/Http/Controllers/SeniorCitizenController.php`)
- Benefit requests → Senior records model: checks eligibility (evidence: `backend/app/Http/Controllers/BenefitRequestController.php`)
- Benefit requests → Benefit catalog: checks eligibility (evidence: `backend/app/Http/Controllers/BenefitRequestController.php`)
- Benefit requests → Transaction records: creates transaction (evidence: `backend/app/Http/Controllers/BenefitRequestController.php`)
- Release batches → Transaction records: lists recipients (evidence: `backend/app/Http/Controllers/BenefitReleaseController.php`)
- Release batches → Role permissions: checks access (evidence: `backend/app/Http/Controllers/BenefitReleaseController.php`)
- Analytics → Senior records model: queries (evidence: `backend/app/Http/Controllers/AnalyticsController.php`)
- Analytics → Transaction records: queries (evidence: `backend/app/Http/Controllers/AnalyticsController.php`)
- Senior records model → Age-threshold alerts: notifies (evidence: `backend/app/Models/SeniorCitizen.php`)
- Advisory delivery → Senior records model: selects recipients (evidence: `backend/app/Support/AdvisoryDispatcher.php`)
- Advisory delivery → User accounts: selects recipients (evidence: `backend/app/Support/AdvisoryDispatcher.php`)
- Authentication → User accounts: authenticates (evidence: `backend/app/Http/Controllers/AuthController.php`)
- Authentication → Cookie authentication: sets cookie (evidence: `backend/app/Http/Controllers/AuthController.php`)
- API routes → Cookie authentication: installs middleware
- Railway MySQL → API routes: stores API data (evidence: `README.md`)
- Facebook import → Facebook Page: imports posts (evidence: `README.md`)
- Database and photo backup → Railway MySQL: backs up
- Database and photo backup → Senior records model: backs up photos
- Senior records model → Barangays: belongs to (evidence: `backend/app/Models/SeniorCitizen.php`)
- Senior records model → Benefit catalog: relates to (evidence: `backend/app/Models/SeniorCitizen.php`)
