# anas2703/generations-lumiere architecture

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

- Interactive diagram: https://gitdiagram.com/anas2703/generations-lumiere
- Repository: https://github.com/anas2703/generations-lumiere

## Overview

Generations Lumière is a role-based association-management application: members, animators, and administrators use a Vue frontend to access association workflows backed by a Spring API and persistence layer. The main journey is a user action in a role-specific view, sent through the frontend API client to a controller, which reads or changes domain data and returns a response. Capabilities visible in the tree include member and child records, activities and registrations, dues and donations, requests, meetings, communications, documents, facilities, expenses, and audit/notification features. Source excerpts are limited; links for unsampled feature wiring are therefore kept at the module level.

Main entry points: [`gl-persistence/src/main/java/be/asbl/Generations/Lumiere/repository`](https://github.com/anas2703/generations-lumiere/tree/main/gl-persistence/src/main/java/be/asbl/Generations/Lumiere/repository) (Repositories), [`gl-frontend/src/views`](https://github.com/anas2703/generations-lumiere/tree/main/gl-frontend/src/views) (Role views), [`gl-service/src/main/java/be/asbl/Generations/Lumiere/service/impl`](https://github.com/anas2703/generations-lumiere/tree/main/gl-service/src/main/java/be/asbl/Generations/Lumiere/service/impl) (Domain services), [`gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller/MembreController.java`](https://github.com/anas2703/generations-lumiere/blob/main/gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller/MembreController.java) (Member endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web frontend"]
  node_vue_app["Vue app shell<br/>[App.vue]"]
  node_role_routes["Role routes<br/>[index.ts]"]
  node_role_views["Role views"]
  node_api_client["API client<br/>[api.ts]"]
  node_auth_store["Auth state<br/>[auth.ts]"]
end

subgraph group_api["API and access"]
  node_spring_app["Spring application"]
  node_security["JWT security"]
  node_auth_controller["Auth endpoints"]
  node_auth_service["Authentication service"]
end

subgraph group_domain["Association workflows"]
  node_member_controller["Member endpoints"]
  node_agenda_controller["Meeting endpoints"]
  node_domain_controllers["Domain endpoints"]
  node_domain_services["Domain services"]
end

subgraph group_data["Data and security"]
  node_domain_models["Domain models"]
  node_dto["API DTOs"]
  node_repositories["Repositories"]
  node_database[("Application database")]
  node_encryption["Field encryption"]
end

node_users(("Association users"))

node_users -->|"use"| node_vue_app
node_vue_app -->|"renders routes"| node_role_routes
node_role_routes -->|"select views"| node_role_views
node_role_views -->|"request data"| node_api_client
node_role_views -->|"use session"| node_auth_store
node_api_client -->|"HTTP requests"| node_spring_app
node_spring_app -->|"configures"| node_security
node_security -->|"protects endpoints"| node_auth_controller
node_auth_controller -->|"delegates login"| node_auth_service
node_auth_service -->|"checks and saves users"| node_repositories
node_member_controller -->|"updates member data"| node_domain_services
node_member_controller -->|"reads and saves"| node_repositories
node_agenda_controller -->|"reads and saves meetings"| node_repositories
node_agenda_controller -->|"maps meeting data"| node_domain_models
node_domain_controllers -->|"delegates operations"| node_domain_services
node_domain_services -->|"reads and writes"| node_repositories
node_repositories -->|"persists entities"| node_database
node_domain_controllers -->|"accepts and returns"| node_dto
node_domain_models -.->|"uses for encryption"| node_encryption

click node_vue_app "https://github.com/anas2703/generations-lumiere/blob/main/gl-frontend/src/App.vue"
click node_role_routes "https://github.com/anas2703/generations-lumiere/blob/main/gl-frontend/src/router/index.ts"
click node_role_views "https://github.com/anas2703/generations-lumiere/tree/main/gl-frontend/src/views"
click node_api_client "https://github.com/anas2703/generations-lumiere/blob/main/gl-frontend/src/services/api.ts"
click node_auth_store "https://github.com/anas2703/generations-lumiere/blob/main/gl-frontend/src/stores/auth.ts"
click node_spring_app "https://github.com/anas2703/generations-lumiere/blob/main/gl-app/src/main/java/be/asbl/Generations/Lumiere/GenerationsLumiereApplication.java"
click node_security "https://github.com/anas2703/generations-lumiere/tree/main/gl-app/src/main/java/be/asbl/Generations/Lumiere/security"
click node_auth_controller "https://github.com/anas2703/generations-lumiere/blob/main/gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller/AuthController.java"
click node_auth_service "https://github.com/anas2703/generations-lumiere/blob/main/gl-service/src/main/java/be/asbl/Generations/Lumiere/service/impl/AuthServiceImpl.java"
click node_member_controller "https://github.com/anas2703/generations-lumiere/blob/main/gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller/MembreController.java"
click node_agenda_controller "https://github.com/anas2703/generations-lumiere/blob/main/gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller/ReunionController.java"
click node_domain_controllers "https://github.com/anas2703/generations-lumiere/tree/main/gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller"
click node_domain_services "https://github.com/anas2703/generations-lumiere/tree/main/gl-service/src/main/java/be/asbl/Generations/Lumiere/service/impl"
click node_domain_models "https://github.com/anas2703/generations-lumiere/tree/main/gl-common/src/main/java/be/asbl/Generations/Lumiere/model"
click node_dto "https://github.com/anas2703/generations-lumiere/tree/main/gl-common/src/main/java/be/asbl/Generations/Lumiere/dto"
click node_repositories "https://github.com/anas2703/generations-lumiere/tree/main/gl-persistence/src/main/java/be/asbl/Generations/Lumiere/repository"
click node_encryption "https://github.com/anas2703/generations-lumiere/blob/main/gl-common/src/main/java/be/asbl/Generations/Lumiere/security/ChiffrementService.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_vue_app,node_role_routes,node_role_views,node_api_client,node_auth_store,node_users toneBlue
class node_spring_app,node_security,node_auth_controller,node_auth_service toneAmber
class node_member_controller,node_agenda_controller,node_domain_controllers,node_domain_services toneMint
class node_domain_models,node_dto,node_repositories,node_database,node_encryption toneRose
```

## Components

### Web frontend

- [Vue app shell](https://github.com/anas2703/generations-lumiere/blob/main/gl-frontend/src/App.vue): `gl-frontend/src/App.vue`
- [Role routes](https://github.com/anas2703/generations-lumiere/blob/main/gl-frontend/src/router/index.ts): `gl-frontend/src/router/index.ts`
- [Role views](https://github.com/anas2703/generations-lumiere/tree/main/gl-frontend/src/views): `gl-frontend/src/views`
- [API client](https://github.com/anas2703/generations-lumiere/blob/main/gl-frontend/src/services/api.ts): `gl-frontend/src/services/api.ts`
- [Auth state](https://github.com/anas2703/generations-lumiere/blob/main/gl-frontend/src/stores/auth.ts): `gl-frontend/src/stores/auth.ts`

### API and access

- [Spring application](https://github.com/anas2703/generations-lumiere/blob/main/gl-app/src/main/java/be/asbl/Generations/Lumiere/GenerationsLumiereApplication.java): `gl-app/src/main/java/be/asbl/Generations/Lumiere/GenerationsLumiereApplication.java`
- [JWT security](https://github.com/anas2703/generations-lumiere/tree/main/gl-app/src/main/java/be/asbl/Generations/Lumiere/security): `gl-app/src/main/java/be/asbl/Generations/Lumiere/security`
- [Auth endpoints](https://github.com/anas2703/generations-lumiere/blob/main/gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller/AuthController.java): `gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller/AuthController.java`
- [Authentication service](https://github.com/anas2703/generations-lumiere/blob/main/gl-service/src/main/java/be/asbl/Generations/Lumiere/service/impl/AuthServiceImpl.java): `gl-service/src/main/java/be/asbl/Generations/Lumiere/service/impl/AuthServiceImpl.java`

### Association workflows

- [Member endpoints](https://github.com/anas2703/generations-lumiere/blob/main/gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller/MembreController.java): `gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller/MembreController.java`
- [Meeting endpoints](https://github.com/anas2703/generations-lumiere/blob/main/gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller/ReunionController.java): `gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller/ReunionController.java`
- [Domain endpoints](https://github.com/anas2703/generations-lumiere/tree/main/gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller): `gl-controller/src/main/java/be/asbl/Generations/Lumiere/controller`
- [Domain services](https://github.com/anas2703/generations-lumiere/tree/main/gl-service/src/main/java/be/asbl/Generations/Lumiere/service/impl): `gl-service/src/main/java/be/asbl/Generations/Lumiere/service/impl`

### Data and security

- [Domain models](https://github.com/anas2703/generations-lumiere/tree/main/gl-common/src/main/java/be/asbl/Generations/Lumiere/model): `gl-common/src/main/java/be/asbl/Generations/Lumiere/model`
- [API DTOs](https://github.com/anas2703/generations-lumiere/tree/main/gl-common/src/main/java/be/asbl/Generations/Lumiere/dto): `gl-common/src/main/java/be/asbl/Generations/Lumiere/dto`
- [Repositories](https://github.com/anas2703/generations-lumiere/tree/main/gl-persistence/src/main/java/be/asbl/Generations/Lumiere/repository): `gl-persistence/src/main/java/be/asbl/Generations/Lumiere/repository`
- **Application database**
- [Field encryption](https://github.com/anas2703/generations-lumiere/blob/main/gl-common/src/main/java/be/asbl/Generations/Lumiere/security/ChiffrementService.java): `gl-common/src/main/java/be/asbl/Generations/Lumiere/security/ChiffrementService.java`

### Other components

- **Association users**

## Connections

- Association users → Vue app shell: use
- Vue app shell → Role routes: renders routes
- Role routes → Role views: select views
- Role views → API client: request data
- Role views → Auth state: use session
- API client → Spring application: HTTP requests
- Spring application → JWT security: configures
- JWT security → Auth endpoints: protects endpoints
- Auth endpoints → Authentication service: delegates login
- Authentication service → Repositories: checks and saves users
- Member endpoints → Domain services: updates member data
- Member endpoints → Repositories: reads and saves
- Meeting endpoints → Repositories: reads and saves meetings
- Meeting endpoints → Domain models: maps meeting data
- Domain endpoints → Domain services: delegates operations
- Domain services → Repositories: reads and writes
- Repositories → Application database: persists entities
- Domain endpoints → API DTOs: accepts and returns
- Domain models → Field encryption: uses for encryption
