# petrovic-vladimir/sistem-za-upravljanje-parking-mestima architecture

> Architecture diagram of the GitHub repository petrovic-vladimir/sistem-za-upravljanje-parking-mestima, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima
- Repository: https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima

## Overview

This PHP/MySQL parking-management application lets customers view parking availability, select a free spot, create a timed reservation, and proceed to payment; administrators manage users and parking spots and review operational statistics. PHP page handlers coordinate session checks and domain classes, which issue SQL through a shared database connection. The graph reflects the sampled pages and SOURCE INDEX references; payment internals and several admin pages were not excerpted, so their detailed interactions are not asserted.

Main entry points: [`classes/ParkingSpot.php`](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/ParkingSpot.php) (Parking spots), [`admin/dashboard.php`](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/admin/dashboard.php) (Admin dashboard), [`reservation.php`](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/reservation.php) (Reservation form), [`classes/Reservation.php`](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/Reservation.php) (Reservations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer workflows"]
  node_availability["Availability map<br/>[index.php]"]
  node_authentication["Sign in and registration<br/>[login.php]"]
  node_reservation["Reservation form<br/>[reservation.php]"]
  node_payment_flow["Payment flow<br/>[payment.php]"]
end

subgraph group_admin["Administration"]
  node_dashboard["Admin dashboard<br/>[dashboard.php]"]
  node_spot_admin["Spot management<br/>[parking_spots.php]"]
  node_user_admin["User management<br/>[users.php]"]
  node_reporting["Statistics reporting<br/>[statistics.php]"]
end

subgraph group_domain["Domain services"]
  node_spot_service["Parking spots<br/>[ParkingSpot.php]"]
  node_reservation_service["Reservations<br/>[Reservation.php]"]
  node_payment_service["Payments<br/>[Payment.php]"]
  node_user_service["Users<br/>[User.php]"]
  node_crud["CRUD contract<br/>[CRUDInterface.php]"]
end

subgraph group_shared["Shared infrastructure"]
  node_session["Session state<br/>[Session.php]"]
  node_database_connection["Database connection<br/>[Database.php]"]
  node_mysql[("Parking database<br/>[parking_system.sql]")]
  node_page_chrome["Shared page chrome<br/>[header.php]"]
end

node_customer(("Parking customer"))
node_admin_actor(("Administrator"))

node_customer -->|"views availability"| node_availability
node_availability -->|"selects spot"| node_reservation
node_availability -->|"reads spots"| node_spot_service
node_customer -->|"signs in"| node_authentication
node_authentication -->|"authenticates user"| node_user_service
node_authentication -->|"sets session"| node_session
node_customer -->|"requests reservation"| node_reservation
node_reservation -->|"checks spot"| node_spot_service
node_reservation -->|"creates reservation"| node_reservation_service
node_reservation -->|"marks occupied"| node_spot_service
node_reservation -->|"redirects after creation"| node_payment_flow
node_payment_flow -.->|"uses reservation"| node_reservation_service
node_payment_flow -.->|"uses payments"| node_payment_service
node_admin_actor -->|"opens dashboard"| node_dashboard
node_dashboard -->|"counts users"| node_user_service
node_dashboard -->|"counts spots"| node_spot_service
node_dashboard -->|"summarizes reservations"| node_reservation_service
node_dashboard -->|"sums income"| node_payment_service
node_dashboard -->|"includes statistics"| node_reporting
node_admin_actor -->|"manages spots"| node_spot_admin
node_spot_admin -->|"manages records"| node_spot_service
node_admin_actor -->|"manages users"| node_user_admin
node_user_admin -->|"manages records"| node_user_service
node_spot_service -->|"implements contract"| node_crud
node_reservation_service -->|"implements contract"| node_crud
node_user_service -->|"implements contract"| node_crud
node_payment_service -->|"implements contract"| node_crud
node_spot_service -->|"opens connection"| node_database_connection
node_reservation_service -->|"opens connection"| node_database_connection
node_user_service -->|"opens connection"| node_database_connection
node_payment_service -->|"opens connection"| node_database_connection
node_database_connection -->|"connects to"| node_mysql
node_page_chrome -->|"starts session"| node_session

click node_availability "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/index.php"
click node_authentication "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/login.php"
click node_reservation "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/reservation.php"
click node_payment_flow "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/payment.php"
click node_dashboard "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/admin/dashboard.php"
click node_spot_admin "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/admin/parking_spots.php"
click node_user_admin "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/admin/users.php"
click node_reporting "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/admin/statistics.php"
click node_spot_service "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/ParkingSpot.php"
click node_reservation_service "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/Reservation.php"
click node_payment_service "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/Payment.php"
click node_user_service "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/User.php"
click node_crud "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/CRUDInterface.php"
click node_session "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/Session.php"
click node_database_connection "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/Database.php"
click node_mysql "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/database/parking_system.sql"
click node_page_chrome "https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/includes/header.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_availability,node_authentication,node_reservation,node_payment_flow toneBlue
class node_dashboard,node_spot_admin,node_user_admin,node_reporting toneAmber
class node_spot_service,node_reservation_service,node_payment_service,node_user_service,node_crud toneMint
class node_session,node_database_connection,node_mysql,node_page_chrome toneRose
class node_customer,node_admin_actor toneIndigo
```

## Components

### Customer workflows

- [Availability map](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/index.php): `index.php`
- [Sign in and registration](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/login.php): `login.php`
- [Reservation form](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/reservation.php): `reservation.php`
- [Payment flow](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/payment.php): `payment.php`

### Administration

- [Admin dashboard](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/admin/dashboard.php): `admin/dashboard.php`
- [Spot management](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/admin/parking_spots.php): `admin/parking_spots.php`
- [User management](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/admin/users.php): `admin/users.php`
- [Statistics reporting](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/admin/statistics.php): `admin/statistics.php`

### Domain services

- [Parking spots](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/ParkingSpot.php): `classes/ParkingSpot.php`
- [Reservations](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/Reservation.php): `classes/Reservation.php`
- [Payments](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/Payment.php): `classes/Payment.php`
- [Users](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/User.php): `classes/User.php`
- [CRUD contract](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/CRUDInterface.php): `classes/CRUDInterface.php`

### Shared infrastructure

- [Session state](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/Session.php): `classes/Session.php`
- [Database connection](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/classes/Database.php): `classes/Database.php`
- [Parking database](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/database/parking_system.sql): `database/parking_system.sql`
- [Shared page chrome](https://github.com/petrovic-vladimir/sistem-za-upravljanje-parking-mestima/blob/main/includes/header.php): `includes/header.php`

### Other components

- **Parking customer**
- **Administrator**

## Connections

- Parking customer → Availability map: views availability (evidence: `index.php`)
- Availability map → Reservation form: selects spot (evidence: `index.php`)
- Availability map → Parking spots: reads spots (evidence: `index.php`)
- Parking customer → Sign in and registration: signs in (evidence: `login.php`)
- Sign in and registration → Users: authenticates user (evidence: `login.php`)
- Sign in and registration → Session state: sets session (evidence: `login.php`)
- Parking customer → Reservation form: requests reservation (evidence: `reservation.php`)
- Reservation form → Parking spots: checks spot (evidence: `reservation.php`)
- Reservation form → Reservations: creates reservation (evidence: `reservation.php`)
- Reservation form → Parking spots: marks occupied (evidence: `reservation.php`)
- Reservation form → Payment flow: redirects after creation (evidence: `reservation.php`)
- Payment flow → Reservations: uses reservation (evidence: `payment.php`)
- Payment flow → Payments: uses payments (evidence: `payment.php`)
- Administrator → Admin dashboard: opens dashboard (evidence: `admin/dashboard.php`)
- Admin dashboard → Users: counts users (evidence: `admin/dashboard.php`)
- Admin dashboard → Parking spots: counts spots (evidence: `admin/dashboard.php`)
- Admin dashboard → Reservations: summarizes reservations (evidence: `admin/dashboard.php`)
- Admin dashboard → Payments: sums income (evidence: `admin/dashboard.php`)
- Admin dashboard → Statistics reporting: includes statistics (evidence: `admin/dashboard.php`)
- Administrator → Spot management: manages spots (evidence: `admin/parking_spots.php`)
- Spot management → Parking spots: manages records (evidence: `admin/parking_spots.php`)
- Administrator → User management: manages users (evidence: `admin/users.php`)
- User management → Users: manages records (evidence: `admin/users.php`)
- Parking spots → CRUD contract: implements contract (evidence: `classes/ParkingSpot.php`)
- Reservations → CRUD contract: implements contract (evidence: `classes/Reservation.php`)
- Users → CRUD contract: implements contract (evidence: `classes/User.php`)
- Payments → CRUD contract: implements contract (evidence: `classes/Payment.php`)
- Parking spots → Database connection: opens connection (evidence: `classes/ParkingSpot.php`)
- Reservations → Database connection: opens connection (evidence: `classes/Reservation.php`)
- Users → Database connection: opens connection (evidence: `classes/User.php`)
- Payments → Database connection: opens connection (evidence: `classes/Payment.php`)
- Database connection → Parking database: connects to (evidence: `classes/Database.php`)
- Shared page chrome → Session state: starts session (evidence: `includes/header.php`)
