# elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198 architecture

> Architecture diagram of the GitHub repository elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198
- Repository: https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198

## Overview

The product is a beekeeper-support web app: users authenticate, manage hives, plan hive activities, comment, and view hive locations; administrators also review statistics, schedule activity, and export hive reports for PDF generation in the frontend. The browser app routes these screens and calls the Laravel API, whose controllers validate requests and operate on the domain models. The README documents mapping and PDF export; their implementation details and several frontend/API connections were not sampled, so those links are omitted rather than inferred.

Main entry points: [`itehLaravel/routes/api.php`](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/routes/api.php) (API routes), [`itehreact/src/App.js`](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/App.js) (Screen routing), [`itehLaravel/app/Http/Controllers/AdminController.php`](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/AdminController.php) (Admin statistics and reports), [`itehLaravel/app/Models/User.php`](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Models/User.php) (User accounts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["React application"]
  node_routes["Screen routing<br/>[App.js]"]
  node_authui["Sign-in and registration<br/>[Register.jsx]"]
  node_authstate["Auth context<br/>[AuthContext.js]"]
  node_hiveui["Hive management<br/>[MojeKosnice.jsx]"]
  node_activityui["Activity planning<br/>[Aktivnosti.jsx]"]
  node_commentui["Hive comments"]
  node_mapui["Hive map<br/>[KosniceMapa.jsx]"]
  node_adminui["Admin dashboard<br/>[AdminDashboard.jsx]"]
  node_scheduleui["Admin scheduling"]
  node_reportui["Hive report export"]
end

subgraph group_api["Laravel API"]
  node_api["API routes<br/>[api.php]"]
  node_hivecontroller["Hive API"]
  node_activitycontroller["Activity API"]
  node_commentcontroller["Comment API"]
  node_admincontroller["Admin statistics and reports"]
  node_rolecontroller["Role and user API<br/>[RoleController.php]"]
  node_userscontroller["User API<br/>[UserController.php]"]
  node_mail["Activity email"]
end

subgraph group_domain["Hive domain"]
  node_hivemodel[("Hive records<br/>[Kosnica.php]")]
  node_activitymodel[("Activity records<br/>[Aktivnost.php]")]
  node_commentmodel[("Comment records<br/>[Komentar.php]")]
  node_usermodel[("User accounts<br/>[User.php]")]
  node_rolemodel[("Roles<br/>[Role.php]")]
end

node_beekeeper(("Beekeeper"))
node_admin(("Administrator"))
node_database[("MySQL database")]
node_openstreetmap["OpenStreetMap"]
node_pdf["PDF output"]

node_beekeeper -->|"uses screens"| node_routes
node_admin -->|"uses screens"| node_routes
node_routes -->|"routes to"| node_authui
node_routes -->|"routes to"| node_hiveui
node_routes -->|"routes to"| node_activityui
node_routes -->|"routes to"| node_commentui
node_routes -->|"routes to"| node_mapui
node_routes -->|"routes to"| node_adminui
node_routes -->|"routes to"| node_scheduleui
node_routes -->|"routes to"| node_reportui
node_routes -->|"provides auth"| node_authstate
node_api -->|"routes requests"| node_hivecontroller
node_api -->|"routes requests"| node_activitycontroller
node_api -->|"routes requests"| node_commentcontroller
node_api -->|"routes requests"| node_admincontroller
node_api -->|"routes requests"| node_rolecontroller
node_api -->|"routes requests"| node_userscontroller
node_hivecontroller -->|"reads and writes"| node_hivemodel
node_hivecontroller -->|"deletes related"| node_activitymodel
node_hivecontroller -->|"deletes related"| node_commentmodel
node_activitycontroller -->|"reads and writes"| node_activitymodel
node_activitycontroller -->|"looks up recipient"| node_usermodel
node_activitycontroller -->|"sends notification"| node_mail
node_commentcontroller -->|"reads and writes"| node_commentmodel
node_admincontroller -->|"queries statistics"| node_usermodel
node_admincontroller -->|"queries and exports"| node_hivemodel
node_admincontroller -->|"queries statistics"| node_activitymodel
node_admincontroller -->|"queries statistics"| node_commentmodel
node_rolecontroller -->|"reads and writes"| node_rolemodel
node_rolecontroller -->|"reads and writes"| node_usermodel
node_userscontroller -->|"reads and writes"| node_usermodel
node_hivemodel -.->|"persists records"| node_database
node_activitymodel -.->|"persists records"| node_database
node_commentmodel -.->|"persists records"| node_database
node_usermodel -.->|"persists accounts"| node_database
node_mapui -.->|"renders map tiles"| node_openstreetmap
node_reportui -.->|"generates PDF"| node_pdf
node_authui -.->|"authenticates"| node_api
node_hiveui -.->|"manages hives"| node_api
node_activityui -.->|"manages activities"| node_api
node_commentui -.->|"manages comments"| node_api
node_adminui -.->|"loads statistics"| node_api
node_scheduleui -.->|"schedules activity"| node_api
node_reportui -.->|"requests report data"| node_api

click node_routes "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/App.js"
click node_authui "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/LoginRegistracija/Register.jsx"
click node_authstate "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/AuthContext.js"
click node_hiveui "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/MojeKosnice.jsx"
click node_activityui "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/Aktivnosti.jsx"
click node_commentui "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/KomentariKosnice.jsx"
click node_mapui "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/KosniceMapa.jsx"
click node_adminui "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/Admin/AdminDashboard.jsx"
click node_scheduleui "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/Admin/AdminZakaziAktivnost.jsx"
click node_reportui "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/Admin/AdminKosniceReport.jsx"
click node_api "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/routes/api.php"
click node_hivecontroller "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/KosnicaController.php"
click node_activitycontroller "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/AktivnostController.php"
click node_commentcontroller "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/KomentarController.php"
click node_admincontroller "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/AdminController.php"
click node_rolecontroller "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/RoleController.php"
click node_userscontroller "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/UserController.php"
click node_hivemodel "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Models/Kosnica.php"
click node_activitymodel "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Models/Aktivnost.php"
click node_commentmodel "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Models/Komentar.php"
click node_usermodel "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Models/User.php"
click node_rolemodel "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Models/Role.php"
click node_mail "https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Mail/ObavestiPcelara.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_routes,node_authui,node_authstate,node_hiveui,node_activityui,node_commentui,node_mapui,node_adminui,node_scheduleui,node_reportui toneBlue
class node_api,node_hivecontroller,node_activitycontroller,node_commentcontroller,node_admincontroller,node_rolecontroller,node_userscontroller,node_mail,node_database toneAmber
class node_hivemodel,node_activitymodel,node_commentmodel,node_usermodel,node_rolemodel toneMint
class node_beekeeper,node_admin,node_openstreetmap,node_pdf toneIndigo
```

## Components

### React application

- [Screen routing](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/App.js): `itehreact/src/App.js`
- [Sign-in and registration](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/LoginRegistracija/Register.jsx): `itehreact/src/KomponenteAplikacije/LoginRegistracija/Register.jsx`
- [Auth context](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/AuthContext.js): `itehreact/src/KomponenteAplikacije/AuthContext.js`
- [Hive management](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/MojeKosnice.jsx): `itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/MojeKosnice.jsx`
- [Activity planning](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/Aktivnosti.jsx): `itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/Aktivnosti.jsx`
- [Hive comments](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/KomentariKosnice.jsx): `itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/KomentariKosnice.jsx`
- [Hive map](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/KosniceMapa.jsx): `itehreact/src/KomponenteAplikacije/UpravljanjeKosnicama/KosniceMapa.jsx`
- [Admin dashboard](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/Admin/AdminDashboard.jsx): `itehreact/src/KomponenteAplikacije/Admin/AdminDashboard.jsx`
- [Admin scheduling](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/Admin/AdminZakaziAktivnost.jsx): `itehreact/src/KomponenteAplikacije/Admin/AdminZakaziAktivnost.jsx`
- [Hive report export](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehreact/src/KomponenteAplikacije/Admin/AdminKosniceReport.jsx): `itehreact/src/KomponenteAplikacije/Admin/AdminKosniceReport.jsx`

### Laravel API

- [API routes](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/routes/api.php): `itehLaravel/routes/api.php`
- [Hive API](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/KosnicaController.php): `itehLaravel/app/Http/Controllers/KosnicaController.php`
- [Activity API](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/AktivnostController.php): `itehLaravel/app/Http/Controllers/AktivnostController.php`
- [Comment API](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/KomentarController.php): `itehLaravel/app/Http/Controllers/KomentarController.php`
- [Admin statistics and reports](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/AdminController.php): `itehLaravel/app/Http/Controllers/AdminController.php`
- [Role and user API](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/RoleController.php): `itehLaravel/app/Http/Controllers/RoleController.php`
- [User API](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Http/Controllers/UserController.php): `itehLaravel/app/Http/Controllers/UserController.php`
- [Activity email](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Mail/ObavestiPcelara.php): `itehLaravel/app/Mail/ObavestiPcelara.php`

### Hive domain

- [Hive records](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Models/Kosnica.php): `itehLaravel/app/Models/Kosnica.php`
- [Activity records](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Models/Aktivnost.php): `itehLaravel/app/Models/Aktivnost.php`
- [Comment records](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Models/Komentar.php): `itehLaravel/app/Models/Komentar.php`
- [User accounts](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Models/User.php): `itehLaravel/app/Models/User.php`
- [Roles](https://github.com/elab-development/internet-tehnologije-2024-projekat-pcelarstvo_2017_0198/blob/main/itehLaravel/app/Models/Role.php): `itehLaravel/app/Models/Role.php`

### Other components

- **Beekeeper**
- **Administrator**
- **MySQL database**
- **OpenStreetMap**
- **PDF output**

## Connections

- Beekeeper → Screen routing: uses screens (evidence: `itehreact/src/App.js`)
- Administrator → Screen routing: uses screens (evidence: `itehreact/src/App.js`)
- Screen routing → Sign-in and registration: routes to (evidence: `itehreact/src/App.js`)
- Screen routing → Hive management: routes to (evidence: `itehreact/src/App.js`)
- Screen routing → Activity planning: routes to (evidence: `itehreact/src/App.js`)
- Screen routing → Hive comments: routes to (evidence: `itehreact/src/App.js`)
- Screen routing → Hive map: routes to (evidence: `itehreact/src/App.js`)
- Screen routing → Admin dashboard: routes to (evidence: `itehreact/src/App.js`)
- Screen routing → Admin scheduling: routes to (evidence: `itehreact/src/App.js`)
- Screen routing → Hive report export: routes to (evidence: `itehreact/src/App.js`)
- Screen routing → Auth context: provides auth (evidence: `itehreact/src/App.js`)
- API routes → Hive API: routes requests (evidence: `itehLaravel/routes/api.php`)
- API routes → Activity API: routes requests (evidence: `itehLaravel/routes/api.php`)
- API routes → Comment API: routes requests (evidence: `itehLaravel/routes/api.php`)
- API routes → Admin statistics and reports: routes requests (evidence: `itehLaravel/routes/api.php`)
- API routes → Role and user API: routes requests (evidence: `itehLaravel/routes/api.php`)
- API routes → User API: routes requests (evidence: `itehLaravel/routes/api.php`)
- Hive API → Hive records: reads and writes (evidence: `itehLaravel/app/Http/Controllers/KosnicaController.php`)
- Hive API → Activity records: deletes related (evidence: `itehLaravel/app/Http/Controllers/KosnicaController.php`)
- Hive API → Comment records: deletes related (evidence: `itehLaravel/app/Http/Controllers/KosnicaController.php`)
- Activity API → Activity records: reads and writes (evidence: `itehLaravel/app/Http/Controllers/AktivnostController.php`)
- Activity API → User accounts: looks up recipient (evidence: `itehLaravel/app/Http/Controllers/AktivnostController.php`)
- Activity API → Activity email: sends notification (evidence: `itehLaravel/app/Http/Controllers/AktivnostController.php`)
- Comment API → Comment records: reads and writes (evidence: `itehLaravel/app/Http/Controllers/KomentarController.php`)
- Admin statistics and reports → User accounts: queries statistics (evidence: `itehLaravel/app/Http/Controllers/AdminController.php`)
- Admin statistics and reports → Hive records: queries and exports (evidence: `itehLaravel/app/Http/Controllers/AdminController.php`)
- Admin statistics and reports → Activity records: queries statistics (evidence: `itehLaravel/app/Http/Controllers/AdminController.php`)
- Admin statistics and reports → Comment records: queries statistics (evidence: `itehLaravel/app/Http/Controllers/AdminController.php`)
- Role and user API → Roles: reads and writes (evidence: `itehLaravel/app/Http/Controllers/RoleController.php`)
- Role and user API → User accounts: reads and writes (evidence: `itehLaravel/app/Http/Controllers/RoleController.php`)
- User API → User accounts: reads and writes (evidence: `itehLaravel/app/Http/Controllers/UserController.php`)
- Hive records → MySQL database: persists records
- Activity records → MySQL database: persists records
- Comment records → MySQL database: persists records
- User accounts → MySQL database: persists accounts
- Hive map → OpenStreetMap: renders map tiles
- Hive report export → PDF output: generates PDF
- Sign-in and registration → API routes: authenticates
- Hive management → API routes: manages hives
- Activity planning → API routes: manages activities
- Hive comments → API routes: manages comments
- Admin dashboard → API routes: loads statistics
- Admin scheduling → API routes: schedules activity
- Hive report export → API routes: requests report data
