# mateusz-bogacz-collegiumwitelona/faily architecture

> Architecture diagram of the GitHub repository mateusz-bogacz-collegiumwitelona/faily, 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/mateusz-bogacz-collegiumwitelona/faily
- Repository: https://github.com/mateusz-bogacz-collegiumwitelona/faily

## Overview

Faily is a Laravel application for organizing events and coordinating attendance and shared rides, with Vue/Leaflet map and event-form interfaces. The main web workflow takes event requests through EventController and EventService to the event repository and persistent models; the service also creates related rides and manages caching. Separate branches cover API access, registration, profiles, photos, reports, administration, and map/geocoding features. Several of these branches are visible in the file tree but were not sampled, so their internal links are omitted rather than inferred.

Main entry points: [`src/app/Services/EventService.php`](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Services/EventService.php) (Event service), [`src/app/Repositories/EventRepository.php`](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Repositories/EventRepository.php) (Event repository), [`src/app/Http/Controllers/Api/EventController.php`](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/Api/EventController.php) (Event API), [`src/app/Http/Controllers/Api/RideRequestController.php`](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/Api/RideRequestController.php) (Ride request API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_event_ui["Event form<br/>[EventForm.vue]"]
  node_map_ui["Map interface<br/>[LeafletMap.vue]"]
  node_web_events["Web event actions"]
end

subgraph group_domain["Events and rides"]
  node_attendees["Attendance workflow"]
  node_event_service["Event service<br/>[EventService.php]"]
  node_event_repo["Event repository"]
  node_event_model["Event records<br/>[Event.php]"]
  node_ride["Ride sharing<br/>[Ride.php]"]
  node_ride_requests["Ride requests"]
  node_photos["Event photos<br/>[Photo.php]"]
  node_cache["Event cache<br/>[CacheService.php]"]
end

subgraph group_identity["Identity and governance"]
  node_registration["Registration"]
  node_login["Login sessions"]
  node_profiles["Profile management"]
  node_locale["Locale middleware<br/>[SetLocale.php]"]
  node_admin["Admin and reports"]
end

subgraph group_interfaces["API and maps"]
  node_api_events["Event API"]
  node_api_rides["Ride request API"]
  node_map["Map data and geocoding"]
end

node_user(("Visitor or member"))
node_database[("Application database")]

node_user -->|"submits event"| node_web_events
node_web_events -->|"calls"| node_event_service
node_event_service -->|"queries and writes"| node_event_repo
node_event_repo -->|"uses records"| node_event_model
node_event_service -->|"creates ride"| node_ride
node_event_service -->|"stores photos"| node_photos
node_event_service -->|"uses cache"| node_cache
node_event_repo -.->|"persists data"| node_database
node_event_model -->|"relates rides"| node_ride
node_event_ui -.->|"submits form"| node_web_events
node_user -->|"registers"| node_registration
node_registration -->|"creates account"| node_database
node_user -->|"signs in"| node_login
node_login -.->|"authenticates"| node_database
node_user -.->|"manages profile"| node_profiles
node_user -.->|"uses API"| node_api_events
node_api_events -->|"reads and writes"| node_event_model
node_api_events -->|"queries records"| node_database
node_user -.->|"requests ride"| node_api_rides
node_api_rides -->|"reads ride"| node_ride
node_api_rides -.->|"queries records"| node_database
node_user -.->|"browses map"| node_map_ui
node_map_ui -.->|"loads map data"| node_map
node_user -.->|"applies to event"| node_attendees
node_attendees -.->|"updates attendance"| node_database
node_user -.->|"administers platform"| node_admin

click node_event_ui "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/resources/js/components/EventForm.vue"
click node_map_ui "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/resources/js/components/LeafletMap.vue"
click node_web_events "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/EventController.php"
click node_registration "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/Auth/RegisteredUserController.php"
click node_login "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/Auth/AuthenticatedSessionController.php"
click node_profiles "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/ProfileController.php"
click node_locale "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Middleware/SetLocale.php"
click node_admin "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/AdminController.php"
click node_attendees "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Services/EventAttendeeService.php"
click node_event_service "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Services/EventService.php"
click node_event_repo "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Repositories/EventRepository.php"
click node_event_model "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Models/Event.php"
click node_ride "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Models/Ride.php"
click node_ride_requests "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/RideRequestController.php"
click node_photos "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Models/Photo.php"
click node_cache "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Services/CacheService.php"
click node_api_events "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/Api/EventController.php"
click node_api_rides "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/Api/RideRequestController.php"
click node_map "https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/MainMapController.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_event_ui,node_map_ui,node_web_events toneBlue
class node_attendees,node_event_service,node_event_repo,node_event_model,node_ride,node_ride_requests,node_photos,node_cache,node_database toneAmber
class node_registration,node_login,node_profiles,node_locale,node_admin toneMint
class node_api_events,node_api_rides,node_map toneRose
class node_user toneIndigo
```

## Components

### Web experience

- [Event form](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/resources/js/components/EventForm.vue): `src/resources/js/components/EventForm.vue`
- [Map interface](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/resources/js/components/LeafletMap.vue): `src/resources/js/components/LeafletMap.vue`
- [Web event actions](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/EventController.php): `src/app/Http/Controllers/EventController.php`

### Events and rides

- [Attendance workflow](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Services/EventAttendeeService.php): `src/app/Services/EventAttendeeService.php`
- [Event service](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Services/EventService.php): `src/app/Services/EventService.php`
- [Event repository](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Repositories/EventRepository.php): `src/app/Repositories/EventRepository.php`
- [Event records](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Models/Event.php): `src/app/Models/Event.php`
- [Ride sharing](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Models/Ride.php): `src/app/Models/Ride.php`
- [Ride requests](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/RideRequestController.php): `src/app/Http/Controllers/RideRequestController.php`
- [Event photos](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Models/Photo.php): `src/app/Models/Photo.php`
- [Event cache](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Services/CacheService.php): `src/app/Services/CacheService.php`

### Identity and governance

- [Registration](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/Auth/RegisteredUserController.php): `src/app/Http/Controllers/Auth/RegisteredUserController.php`
- [Login sessions](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/Auth/AuthenticatedSessionController.php): `src/app/Http/Controllers/Auth/AuthenticatedSessionController.php`
- [Profile management](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/ProfileController.php): `src/app/Http/Controllers/ProfileController.php`
- [Locale middleware](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Middleware/SetLocale.php): `src/app/Http/Middleware/SetLocale.php`
- [Admin and reports](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/AdminController.php): `src/app/Http/Controllers/AdminController.php`

### API and maps

- [Event API](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/Api/EventController.php): `src/app/Http/Controllers/Api/EventController.php`
- [Ride request API](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/Api/RideRequestController.php): `src/app/Http/Controllers/Api/RideRequestController.php`
- [Map data and geocoding](https://github.com/mateusz-bogacz-collegiumwitelona/faily/blob/main/src/app/Http/Controllers/MainMapController.php): `src/app/Http/Controllers/MainMapController.php`

### Other components

- **Visitor or member**
- **Application database**

## Connections

- Visitor or member → Web event actions: submits event
- Web event actions → Event service: calls (evidence: `src/app/Http/Controllers/EventController.php`)
- Event service → Event repository: queries and writes (evidence: `src/app/Services/EventService.php`)
- Event repository → Event records: uses records (evidence: `src/app/Repositories/EventRepository.php`)
- Event service → Ride sharing: creates ride (evidence: `src/app/Services/EventService.php`)
- Event service → Event photos: stores photos (evidence: `src/app/Services/EventService.php`)
- Event service → Event cache: uses cache (evidence: `src/app/Services/EventService.php`)
- Event repository → Application database: persists data
- Event records → Ride sharing: relates rides (evidence: `src/app/Models/Event.php`)
- Event form → Web event actions: submits form
- Visitor or member → Registration: registers
- Registration → Application database: creates account (evidence: `src/app/Http/Controllers/Auth/RegisteredUserController.php`)
- Visitor or member → Login sessions: signs in
- Login sessions → Application database: authenticates
- Visitor or member → Profile management: manages profile
- Visitor or member → Event API: uses API
- Event API → Event records: reads and writes (evidence: `src/app/Http/Controllers/Api/EventController.php`)
- Event API → Application database: queries records (evidence: `src/app/Http/Controllers/Api/EventController.php`)
- Visitor or member → Ride request API: requests ride
- Ride request API → Ride sharing: reads ride (evidence: `src/app/Http/Controllers/Api/RideRequestController.php`)
- Ride request API → Application database: queries records
- Visitor or member → Map interface: browses map
- Map interface → Map data and geocoding: loads map data
- Visitor or member → Attendance workflow: applies to event
- Attendance workflow → Application database: updates attendance
- Visitor or member → Admin and reports: administers platform
