# fis2021/turism4futurism architecture

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

## Overview

This JavaFX travel-booking application supports account registration and role-based login, admin destination management, and client destination search and price calculation. The client can display a confirmation, but the sampled code does not persist bookings. The graph shows the documented workflow and the service layer; some navigation and capabilities come from the README or tree, since their source was not sampled.

Main entry points: [`src/main/java/org/loose/fis/sre/controllers/LoginController.java`](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/LoginController.java) (Login), [`src/main/java/org/loose/fis/sre/services/DestinationService.java`](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/services/DestinationService.java) (Destination service), [`src/main/java/org/loose/fis/sre/controllers/AdminController.java`](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/AdminController.java) (Admin menu), [`src/main/java/org/loose/fis/sre/services/UserService.java`](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/services/UserService.java) (User service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_accounts["Accounts and access"]
  node_login["Login"]
  node_register["Registration"]
  node_user_model["User model<br/>[User.java]"]
  node_registration_ui["Registration view<br/>[register.fxml]"]
end

subgraph group_admin["Admin destination management"]
  node_admin_menu["Admin menu"]
  node_add_destination["Add destination"]
  node_remove_destination["Remove destination"]
  node_admin_ui["Admin view<br/>[admin.fxml]"]
  node_add_ui["Add destination view"]
  node_remove_ui["Remove destination view"]
end

subgraph group_client["Client trip selection"]
  node_client_menu["Client menu"]
  node_choose_destination["Choose destination"]
  node_client_ui["Client view<br/>[client.fxml]"]
  node_choose_ui["Destination view"]
end

subgraph group_services["Application services"]
  node_destination_model["Destination model<br/>[Destination.java]"]
  node_user_service["User service<br/>[UserService.java]"]
  node_destination_service["Destination service"]
  node_file_service["File system service"]
end

node_traveler(("User"))
node_app["JavaFX app<br/>[Main.java]"]
node_nitrite[("Nitrite store")]

node_traveler -->|"launches"| node_app
node_app -->|"initializes"| node_user_service
node_app -->|"initializes"| node_destination_service
node_app -->|"loads login"| node_login
node_login -->|"checks credentials"| node_user_service
node_login -->|"sets current user"| node_user_model
node_login -->|"opens admin"| node_admin_menu
node_login -->|"opens client"| node_client_menu
node_login -->|"opens registration"| node_registration_ui
node_register -->|"creates account"| node_user_service
node_admin_menu -->|"opens add screen"| node_add_destination
node_admin_menu -->|"opens remove screen"| node_remove_destination
node_admin_menu -->|"logs out to"| node_login
node_add_destination -->|"adds destination"| node_destination_service
node_remove_destination -->|"lists and removes"| node_destination_service
node_client_menu -->|"opens selection"| node_choose_destination
node_client_menu -->|"logs out to"| node_login
node_choose_destination -->|"searches and lists"| node_destination_service
node_choose_destination -->|"calculates from"| node_destination_model
node_user_service -->|"reads and writes"| node_nitrite
node_destination_service -->|"reads and writes"| node_nitrite
node_user_service -->|"resolves database path"| node_file_service
node_destination_service -->|"resolves database path"| node_file_service
node_register -->|"is wired to"| node_registration_ui
node_admin_menu -->|"is wired to"| node_admin_ui
node_add_destination -->|"is wired to"| node_add_ui
node_remove_destination -->|"is wired to"| node_remove_ui
node_client_menu -->|"is wired to"| node_client_ui
node_choose_destination -->|"is wired to"| node_choose_ui

click node_app "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/Main.java"
click node_login "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/LoginController.java"
click node_register "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/RegistrationController.java"
click node_user_model "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/model/User.java"
click node_admin_menu "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/AdminController.java"
click node_add_destination "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/AddDestinationController.java"
click node_remove_destination "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/RemoveDestinationController.java"
click node_client_menu "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/ClientController.java"
click node_choose_destination "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/ChooseDestinationController.java"
click node_destination_model "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/model/Destination.java"
click node_user_service "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/services/UserService.java"
click node_destination_service "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/services/DestinationService.java"
click node_file_service "https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/services/FileSystemService.java"
click node_registration_ui "https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/register.fxml"
click node_admin_ui "https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/admin.fxml"
click node_add_ui "https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/addDestination.fxml"
click node_remove_ui "https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/removeDestination.fxml"
click node_client_ui "https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/client.fxml"
click node_choose_ui "https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/chooseDestination.fxml"

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_login,node_register,node_user_model,node_registration_ui,node_traveler toneBlue
class node_admin_menu,node_add_destination,node_remove_destination,node_admin_ui,node_add_ui,node_remove_ui,node_nitrite toneAmber
class node_client_menu,node_choose_destination,node_client_ui,node_choose_ui toneMint
class node_destination_model,node_user_service,node_destination_service,node_file_service toneRose
class node_app toneTeal
```

## Components

### Accounts and access

- [Login](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/LoginController.java): `src/main/java/org/loose/fis/sre/controllers/LoginController.java`
- [Registration](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/RegistrationController.java): `src/main/java/org/loose/fis/sre/controllers/RegistrationController.java`
- [User model](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/model/User.java): `src/main/java/org/loose/fis/sre/model/User.java`
- [Registration view](https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/register.fxml): `src/main/resources/register.fxml`

### Admin destination management

- [Admin menu](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/AdminController.java): `src/main/java/org/loose/fis/sre/controllers/AdminController.java`
- [Add destination](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/AddDestinationController.java): `src/main/java/org/loose/fis/sre/controllers/AddDestinationController.java`
- [Remove destination](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/RemoveDestinationController.java): `src/main/java/org/loose/fis/sre/controllers/RemoveDestinationController.java`
- [Admin view](https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/admin.fxml): `src/main/resources/admin.fxml`
- [Add destination view](https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/addDestination.fxml): `src/main/resources/addDestination.fxml`
- [Remove destination view](https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/removeDestination.fxml): `src/main/resources/removeDestination.fxml`

### Client trip selection

- [Client menu](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/ClientController.java): `src/main/java/org/loose/fis/sre/controllers/ClientController.java`
- [Choose destination](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/controllers/ChooseDestinationController.java): `src/main/java/org/loose/fis/sre/controllers/ChooseDestinationController.java`
- [Client view](https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/client.fxml): `src/main/resources/client.fxml`
- [Destination view](https://github.com/fis2021/turism4futurism/blob/main/src/main/resources/chooseDestination.fxml): `src/main/resources/chooseDestination.fxml`

### Application services

- [Destination model](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/model/Destination.java): `src/main/java/org/loose/fis/sre/model/Destination.java`
- [User service](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/services/UserService.java): `src/main/java/org/loose/fis/sre/services/UserService.java`
- [Destination service](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/services/DestinationService.java): `src/main/java/org/loose/fis/sre/services/DestinationService.java`
- [File system service](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/services/FileSystemService.java): `src/main/java/org/loose/fis/sre/services/FileSystemService.java`

### Other components

- **User**
- [JavaFX app](https://github.com/fis2021/turism4futurism/blob/main/src/main/java/org/loose/fis/sre/Main.java): `src/main/java/org/loose/fis/sre/Main.java`
- **Nitrite store**

## Connections

- User → JavaFX app: launches
- JavaFX app → User service: initializes
- JavaFX app → Destination service: initializes
- JavaFX app → Login: loads login
- Login → User service: checks credentials
- Login → User model: sets current user
- Login → Admin menu: opens admin
- Login → Client menu: opens client
- Login → Registration view: opens registration
- Registration → User service: creates account
- Admin menu → Add destination: opens add screen
- Admin menu → Remove destination: opens remove screen
- Admin menu → Login: logs out to
- Add destination → Destination service: adds destination
- Remove destination → Destination service: lists and removes
- Client menu → Choose destination: opens selection
- Client menu → Login: logs out to
- Choose destination → Destination service: searches and lists
- Choose destination → Destination model: calculates from
- User service → Nitrite store: reads and writes
- Destination service → Nitrite store: reads and writes
- User service → File system service: resolves database path
- Destination service → File system service: resolves database path
- Registration → Registration view: is wired to
- Admin menu → Admin view: is wired to
- Add destination → Add destination view: is wired to
- Remove destination → Remove destination view: is wired to
- Client menu → Client view: is wired to
- Choose destination → Destination view: is wired to
