# aliou-8/ag35 architecture

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

- Interactive diagram: https://gitdiagram.com/aliou-8/ag35
- Repository: https://github.com/aliou-8/ag35

## Overview

AG35 is a Rennes student association portal: people register and are approved as members, then use community, administration, and association services. The map follows those user-facing stages and includes the real-time browser layer. README evidence is only the project name and student-in-Rennes description; workflow relationships below are limited to those shown in sampled source or the source index, so unsampled routes and integrations are not inferred.

Main entry points: [`resources/js/app.js`](https://github.com/aliou-8/ag35/blob/main/resources/js/app.js) (JavaScript entry), [`app/Http/Controllers/Admin/MemberController.php`](https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/Admin/MemberController.php) (Member administration), [`app/Http/Controllers/MessageController.php`](https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/MessageController.php) (Messaging), [`app/Http/Controllers/Admin/DuesController.php`](https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/Admin/DuesController.php) (Dues management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_accounts["Accounts &amp; governance"]
  node_auth["Authentication"]
  node_members["Member administration"]
  node_user[("Member accounts<br/>[User.php]")]
  node_routes["Web routing<br/>[web.php]"]
end

subgraph group_community["Member community"]
  node_conversation[("Conversations<br/>[Conversation.php]")]
  node_messages["Messaging"]
  node_posts["Social feed<br/>[PostController.php]"]
  node_postdata[("Posts &amp; comments<br/>[Post.php]")]
  node_notifications["Notifications"]
  node_messageevent["Message event<br/>[MessageSent.php]"]
end

subgraph group_services["Association services"]
  node_meetings["Meetings"]
  node_dues["Dues management<br/>[DuesController.php]"]
  node_fees[("Membership fees<br/>[MembershipFee.php]")]
  node_settings[("Association settings<br/>[Setting.php]")]
end

subgraph group_realtime["Browser experience"]
  node_realtime_support["Realtime support<br/>[Realtime.php]"]
  node_chatjs["Chat interface<br/>[chat.js]"]
  node_feedjs["Feed interface<br/>[feed.js]"]
  node_meetingjs["Meeting interface<br/>[meeting.js]"]
  node_shelljs["Application shell<br/>[shell.js]"]
  node_notifyjs["Notification interface<br/>[notifications.js]"]
  node_frontend["JavaScript entry<br/>[app.js]"]
end

node_visitor(("Visitor / member"))

node_visitor -.->|"requests pages"| node_routes
node_routes -.->|"routes to"| node_auth
node_auth -->|"creates account"| node_user
node_auth -->|"activates first"| node_members
node_members -->|"manages members"| node_user
node_members -->|"adds participant"| node_conversation
node_members -->|"reads dues"| node_fees
node_members -->|"reads defaults"| node_settings
node_dues -->|"reports payments"| node_fees
node_dues -->|"finds members"| node_user
node_dues -->|"reads association"| node_settings
node_dues -->|"sends reminders"| node_notifications
node_messages -->|"uses threads"| node_conversation
node_messages -->|"dispatches event"| node_messageevent
node_messages -->|"publishes updates"| node_realtime_support
node_messages -->|"notifies members"| node_notifications
node_posts -->|"manages posts"| node_postdata
node_posts -->|"notifies members"| node_notifications
node_frontend -->|"registers chat"| node_chatjs
node_frontend -->|"registers feed"| node_feedjs
node_frontend -->|"registers meetings"| node_meetingjs
node_frontend -->|"registers shell"| node_shelljs
node_frontend -->|"registers alerts"| node_notifyjs

click node_auth "https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/Auth/RegisteredUserController.php"
click node_members "https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/Admin/MemberController.php"
click node_user "https://github.com/aliou-8/ag35/blob/main/app/Models/User.php"
click node_conversation "https://github.com/aliou-8/ag35/blob/main/app/Models/Conversation.php"
click node_messages "https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/MessageController.php"
click node_posts "https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/PostController.php"
click node_postdata "https://github.com/aliou-8/ag35/blob/main/app/Models/Post.php"
click node_meetings "https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/MeetingController.php"
click node_dues "https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/Admin/DuesController.php"
click node_fees "https://github.com/aliou-8/ag35/blob/main/app/Models/MembershipFee.php"
click node_settings "https://github.com/aliou-8/ag35/blob/main/app/Models/Setting.php"
click node_notifications "https://github.com/aliou-8/ag35/blob/main/app/Notifications/MemberNotification.php"
click node_messageevent "https://github.com/aliou-8/ag35/blob/main/app/Events/MessageSent.php"
click node_realtime_support "https://github.com/aliou-8/ag35/blob/main/app/Support/Realtime.php"
click node_chatjs "https://github.com/aliou-8/ag35/blob/main/resources/js/components/chat.js"
click node_feedjs "https://github.com/aliou-8/ag35/blob/main/resources/js/components/feed.js"
click node_meetingjs "https://github.com/aliou-8/ag35/blob/main/resources/js/components/meeting.js"
click node_shelljs "https://github.com/aliou-8/ag35/blob/main/resources/js/components/shell.js"
click node_notifyjs "https://github.com/aliou-8/ag35/blob/main/resources/js/components/notifications.js"
click node_frontend "https://github.com/aliou-8/ag35/blob/main/resources/js/app.js"
click node_routes "https://github.com/aliou-8/ag35/blob/main/routes/web.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_auth,node_members,node_user,node_routes toneBlue
class node_conversation,node_messages,node_posts,node_postdata,node_notifications,node_messageevent toneAmber
class node_meetings,node_dues,node_fees,node_settings toneMint
class node_realtime_support,node_chatjs,node_feedjs,node_meetingjs,node_shelljs,node_notifyjs,node_frontend toneRose
class node_visitor toneIndigo
```

## Components

### Accounts & governance

- [Authentication](https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/Auth/RegisteredUserController.php): `app/Http/Controllers/Auth/RegisteredUserController.php`
- [Member administration](https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/Admin/MemberController.php): `app/Http/Controllers/Admin/MemberController.php`
- [Member accounts](https://github.com/aliou-8/ag35/blob/main/app/Models/User.php): `app/Models/User.php`
- [Web routing](https://github.com/aliou-8/ag35/blob/main/routes/web.php): `routes/web.php`

### Member community

- [Conversations](https://github.com/aliou-8/ag35/blob/main/app/Models/Conversation.php): `app/Models/Conversation.php`
- [Messaging](https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/MessageController.php): `app/Http/Controllers/MessageController.php`
- [Social feed](https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/PostController.php): `app/Http/Controllers/PostController.php`
- [Posts & comments](https://github.com/aliou-8/ag35/blob/main/app/Models/Post.php): `app/Models/Post.php`
- [Notifications](https://github.com/aliou-8/ag35/blob/main/app/Notifications/MemberNotification.php): `app/Notifications/MemberNotification.php`
- [Message event](https://github.com/aliou-8/ag35/blob/main/app/Events/MessageSent.php): `app/Events/MessageSent.php`

### Association services

- [Meetings](https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/MeetingController.php): `app/Http/Controllers/MeetingController.php`
- [Dues management](https://github.com/aliou-8/ag35/blob/main/app/Http/Controllers/Admin/DuesController.php): `app/Http/Controllers/Admin/DuesController.php`
- [Membership fees](https://github.com/aliou-8/ag35/blob/main/app/Models/MembershipFee.php): `app/Models/MembershipFee.php`
- [Association settings](https://github.com/aliou-8/ag35/blob/main/app/Models/Setting.php): `app/Models/Setting.php`

### Browser experience

- [Realtime support](https://github.com/aliou-8/ag35/blob/main/app/Support/Realtime.php): `app/Support/Realtime.php`
- [Chat interface](https://github.com/aliou-8/ag35/blob/main/resources/js/components/chat.js): `resources/js/components/chat.js`
- [Feed interface](https://github.com/aliou-8/ag35/blob/main/resources/js/components/feed.js): `resources/js/components/feed.js`
- [Meeting interface](https://github.com/aliou-8/ag35/blob/main/resources/js/components/meeting.js): `resources/js/components/meeting.js`
- [Application shell](https://github.com/aliou-8/ag35/blob/main/resources/js/components/shell.js): `resources/js/components/shell.js`
- [Notification interface](https://github.com/aliou-8/ag35/blob/main/resources/js/components/notifications.js): `resources/js/components/notifications.js`
- [JavaScript entry](https://github.com/aliou-8/ag35/blob/main/resources/js/app.js): `resources/js/app.js`

### Other components

- **Visitor / member**

## Connections

- Visitor / member → Web routing: requests pages
- Web routing → Authentication: routes to
- Authentication → Member accounts: creates account (evidence: `app/Http/Controllers/Auth/RegisteredUserController.php`)
- Authentication → Member administration: activates first (evidence: `app/Http/Controllers/Auth/RegisteredUserController.php`)
- Member administration → Member accounts: manages members (evidence: `app/Http/Controllers/Admin/MemberController.php`)
- Member administration → Conversations: adds participant (evidence: `app/Http/Controllers/Admin/MemberController.php`)
- Member administration → Membership fees: reads dues (evidence: `app/Http/Controllers/Admin/MemberController.php`)
- Member administration → Association settings: reads defaults (evidence: `app/Http/Controllers/Admin/MemberController.php`)
- Dues management → Membership fees: reports payments (evidence: `app/Http/Controllers/Admin/DuesController.php`)
- Dues management → Member accounts: finds members (evidence: `app/Http/Controllers/Admin/DuesController.php`)
- Dues management → Association settings: reads association (evidence: `app/Http/Controllers/Admin/DuesController.php`)
- Dues management → Notifications: sends reminders (evidence: `app/Http/Controllers/Admin/DuesController.php`)
- Messaging → Conversations: uses threads (evidence: `app/Http/Controllers/MessageController.php`)
- Messaging → Message event: dispatches event (evidence: `app/Http/Controllers/MessageController.php`)
- Messaging → Realtime support: publishes updates (evidence: `app/Http/Controllers/MessageController.php`)
- Messaging → Notifications: notifies members (evidence: `app/Http/Controllers/MessageController.php`)
- Social feed → Posts & comments: manages posts (evidence: `app/Http/Controllers/PostController.php`)
- Social feed → Notifications: notifies members (evidence: `app/Http/Controllers/PostController.php`)
- JavaScript entry → Chat interface: registers chat (evidence: `resources/js/app.js`)
- JavaScript entry → Feed interface: registers feed (evidence: `resources/js/app.js`)
- JavaScript entry → Meeting interface: registers meetings (evidence: `resources/js/app.js`)
- JavaScript entry → Application shell: registers shell (evidence: `resources/js/app.js`)
- JavaScript entry → Notification interface: registers alerts (evidence: `resources/js/app.js`)
