# mmitic99/isa_projekat architecture

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

- Interactive diagram: https://gitdiagram.com/mmitic99/isa_projekat
- Repository: https://github.com/mmitic99/isa_projekat

## Overview

This is a fishing and cottage booking application: Angular client workflows serve guests, customers, and boat/cottage owners, while a Spring Boot API models listings, appointments, reservations, reviews, and user accounts over a PostgreSQL-backed persistence layer. The principal flow is discovery and availability search, reservation creation, then customer and owner follow-up; separate branches support listing management, special offers, reports, and account administration. The tree and README establish product scope, but most controllers and service implementations were not sampled, so those links are shown as unverified rather than asserted calls.

Main entry points: [`FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReviewService.java`](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReviewService.java) (Review logic), [`FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReservationService.java`](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReservationService.java) (Reservation logic), [`FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller`](https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller) (Listing APIs), [`FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReservationEntitiesService.java`](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReservationEntitiesService.java) (Listing and availability)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Angular client"]
  node_guests["Guest browsing"]
  node_authui["Sign-in and signup"]
  node_customerui["Customer bookings"]
  node_ownerui["Owner workspace"]
  node_entityclient["Listing client"]
end

subgraph group_api["Spring API"]
  node_guestapi["Catalog API"]
  node_reservationapi["Reservation API"]
  node_listingapi["Listing APIs"]
  node_reviewapi["Review API"]
end

subgraph group_domain["Booking domain"]
  node_reservationlogic["Reservation logic"]
  node_listinglogic["Listing and availability"]
  node_reviewlogic["Review logic<br/>[ReviewService.java]"]
  node_bookingmodel["Booking records<br/>[Reservation.java]"]
  node_entitymodel["Listings and services"]
  node_reviewmodel["Reviews<br/>[Review.java]"]
  node_repositories[("Persistence repositories")]
end

subgraph group_identity["Identity and messaging"]
  node_userapi["Account API"]
  node_authapi["Authentication API"]
  node_tokensecurity["Token security"]
  node_email["Email notifications<br/>[EmailService.java]"]
end

node_actor(("App user"))
node_postgres[("PostgreSQL")]
node_mailservice["Mail service"]

node_actor -.->|"browses"| node_guests
node_actor -.->|"signs in"| node_authui
node_actor -.->|"books"| node_customerui
node_actor -.->|"manages"| node_ownerui
node_guests -.->|"searches"| node_guestapi
node_customerui -.->|"requests"| node_reservationapi
node_ownerui -.->|"manages"| node_listingapi
node_entityclient -.->|"HTTP requests"| node_listingapi
node_reservationapi -.->|"delegates"| node_reservationlogic
node_guestapi -.->|"delegates"| node_listinglogic
node_listingapi -.->|"delegates"| node_listinglogic
node_reviewapi -->|"delegates"| node_reviewlogic
node_reviewlogic -->|"uses"| node_repositories
node_reviewlogic -->|"checks reservation"| node_bookingmodel
node_reviewlogic -->|"aggregates ratings"| node_entitymodel
node_reviewlogic -->|"creates reviews"| node_reviewmodel
node_reservationlogic -.->|"persists bookings"| node_repositories
node_listinglogic -.->|"reads listings"| node_repositories
node_bookingmodel -.->|"stored in"| node_postgres
node_entitymodel -.->|"stored in"| node_postgres
node_authui -.->|"authenticates"| node_authapi
node_authapi -.->|"issues tokens"| node_tokensecurity
node_userapi -.->|"sends verification"| node_email
node_reservationlogic -.->|"notifies booking"| node_email
node_email -.->|"sends mail"| node_mailservice

click node_guests "https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-frontend/src/app/unauthorized-user"
click node_authui "https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-frontend/src/app/unauthorized-user"
click node_customerui "https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-frontend/src/app/regular-user"
click node_ownerui "https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-frontend/src/app/special-user"
click node_entityclient "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-frontend/src/app/special-user/service/entities.service.ts"
click node_guestapi "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReservationEntitiesController.java"
click node_reservationapi "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReservationController.java"
click node_listingapi "https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller"
click node_reviewapi "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReviewController.java"
click node_reservationlogic "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReservationService.java"
click node_listinglogic "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReservationEntitiesService.java"
click node_reviewlogic "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReviewService.java"
click node_bookingmodel "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/model/Reservation.java"
click node_entitymodel "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/model/ReservationEntities.java"
click node_reviewmodel "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/model/Review.java"
click node_repositories "https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/repository"
click node_userapi "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/UserController.java"
click node_authapi "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/AuthController.java"
click node_tokensecurity "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/security/auth/TokenAuthenticationFilter.java"
click node_email "https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/impl/EmailService.java"

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_guests,node_authui,node_customerui,node_ownerui,node_entityclient,node_actor toneBlue
class node_guestapi,node_reservationapi,node_listingapi,node_reviewapi,node_postgres toneAmber
class node_reservationlogic,node_listinglogic,node_reviewlogic,node_bookingmodel,node_entitymodel,node_reviewmodel,node_repositories toneMint
class node_userapi,node_authapi,node_tokensecurity,node_email toneRose
class node_mailservice toneIndigo
```

## Components

### Angular client

- [Guest browsing](https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-frontend/src/app/unauthorized-user): `FishingBookingApp-frontend/src/app/unauthorized-user`
- [Sign-in and signup](https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-frontend/src/app/unauthorized-user): `FishingBookingApp-frontend/src/app/unauthorized-user`
- [Customer bookings](https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-frontend/src/app/regular-user): `FishingBookingApp-frontend/src/app/regular-user`
- [Owner workspace](https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-frontend/src/app/special-user): `FishingBookingApp-frontend/src/app/special-user`
- [Listing client](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-frontend/src/app/special-user/service/entities.service.ts): `FishingBookingApp-frontend/src/app/special-user/service/entities.service.ts`

### Spring API

- [Catalog API](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReservationEntitiesController.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReservationEntitiesController.java`
- [Reservation API](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReservationController.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReservationController.java`
- [Listing APIs](https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller`
- [Review API](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReviewController.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReviewController.java`

### Booking domain

- [Reservation logic](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReservationService.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReservationService.java`
- [Listing and availability](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReservationEntitiesService.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReservationEntitiesService.java`
- [Review logic](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReviewService.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/ReviewService.java`
- [Booking records](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/model/Reservation.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/model/Reservation.java`
- [Listings and services](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/model/ReservationEntities.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/model/ReservationEntities.java`
- [Reviews](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/model/Review.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/model/Review.java`
- [Persistence repositories](https://github.com/mmitic99/isa_projekat/tree/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/repository): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/repository`

### Identity and messaging

- [Account API](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/UserController.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/UserController.java`
- [Authentication API](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/AuthController.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/AuthController.java`
- [Token security](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/security/auth/TokenAuthenticationFilter.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/security/auth/TokenAuthenticationFilter.java`
- [Email notifications](https://github.com/mmitic99/isa_projekat/blob/master/FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/impl/EmailService.java): `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/impl/EmailService.java`

### Other components

- **App user**
- **PostgreSQL**
- **Mail service**

## Connections

- App user → Guest browsing: browses
- App user → Sign-in and signup: signs in
- App user → Customer bookings: books
- App user → Owner workspace: manages
- Guest browsing → Catalog API: searches
- Customer bookings → Reservation API: requests
- Owner workspace → Listing APIs: manages
- Listing client → Listing APIs: HTTP requests
- Reservation API → Reservation logic: delegates (evidence: `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReservationController.java`)
- Catalog API → Listing and availability: delegates (evidence: `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReservationEntitiesController.java`)
- Listing APIs → Listing and availability: delegates (evidence: `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReservationEntitiesController.java`)
- Review API → Review logic: delegates (evidence: `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/controller/ReviewController.java`)
- Review logic → Persistence repositories: uses (evidence: `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/impl/ReviewServiceImpl.java`)
- Review logic → Booking records: checks reservation (evidence: `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/impl/ReviewServiceImpl.java`)
- Review logic → Listings and services: aggregates ratings (evidence: `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/impl/ReviewServiceImpl.java`)
- Review logic → Reviews: creates reviews (evidence: `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/impl/ReviewServiceImpl.java`)
- Reservation logic → Persistence repositories: persists bookings
- Listing and availability → Persistence repositories: reads listings
- Booking records → PostgreSQL: stored in
- Listings and services → PostgreSQL: stored in
- Sign-in and signup → Authentication API: authenticates
- Authentication API → Token security: issues tokens
- Account API → Email notifications: sends verification
- Reservation logic → Email notifications: notifies booking
- Email notifications → Mail service: sends mail (evidence: `FishingBookingApp-backend/src/main/java/isa/FishingBookingApp/service/impl/EmailService.java`)
