# git-flash/flash architecture

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

- Interactive diagram: https://gitdiagram.com/git-flash/flash
- Repository: https://github.com/git-flash/flash

## Overview

FLASH is a Rails application for tracking member attendance, events, RSVPs, committees, and users. Members browse event calendars and details and can RSVP; staff manage events and attendance, while executives administer committees and membership. Controllers enforce role checks and coordinate domain records, with PostgreSQL-backed Active Record as the apparent persistence layer. The graph preserves the attendance, RSVP, and help surfaces visible in the repository tree; where controller excerpts do not expose interactions, links are omitted or marked unverified.

Main entry points: [`config/routes.rb`](https://github.com/git-flash/flash/blob/master/config/routes.rb) (HTTP Routes), [`db/schema.rb`](https://github.com/git-flash/flash/blob/master/db/schema.rb) (Relational Database), [`app/controllers/events_controller.rb`](https://github.com/git-flash/flash/blob/master/app/controllers/events_controller.rb) (Event Actions), [`app/controllers/committees_controller.rb`](https://github.com/git-flash/flash/blob/master/app/controllers/committees_controller.rb) (Committee Actions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and Routing"]
  node_routes["HTTP Routes<br/>[routes.rb]"]
  node_access_control["Role Checks"]
  node_authentication["Authentication<br/>[devise.rb]"]
end

subgraph group_events["Events and RSVPs"]
  node_event_actions["Event Actions"]
  node_event_records["Event Records<br/>[event.rb]"]
  node_rsvp_actions["RSVP Actions"]
  node_rsvp_records["RSVP Records<br/>[rsvp.rb]"]
end

subgraph group_attendance["Attendance"]
  node_attendance_actions["Attendance Actions"]
  node_attendance_records["Attendance Logs<br/>[attendance_log.rb]"]
end

subgraph group_membership["Membership Administration"]
  node_committee_actions["Committee Actions"]
  node_committee_records["Committee Records<br/>[committee.rb]"]
  node_user_actions["User Administration"]
  node_user_records["User Records<br/>[user.rb]"]
  node_help["Help Pages<br/>[help_controller.rb]"]
end

subgraph group_platform["Application Platform"]
  node_database[("Relational Database<br/>[schema.rb]")]
  node_browser_tables["Interactive Tables<br/>[datatables.js]"]
end

node_member(("Member"))
node_staff(("Staff"))
node_executive(("Executive"))

node_member -->|"requests"| node_routes
node_staff -->|"requests"| node_routes
node_executive -->|"requests"| node_routes
node_routes -->|"routes events"| node_event_actions
node_routes -->|"routes RSVPs"| node_rsvp_actions
node_routes -->|"routes logs"| node_attendance_actions
node_routes -->|"routes committees"| node_committee_actions
node_routes -->|"routes users"| node_user_actions
node_routes -->|"routes help"| node_help
node_routes -->|"enables Devise"| node_authentication
node_event_actions -->|"inherits checks"| node_access_control
node_committee_actions -->|"inherits checks"| node_access_control
node_user_actions -->|"inherits checks"| node_access_control
node_event_actions -->|"queries and saves"| node_event_records
node_event_actions -->|"queries RSVPs"| node_rsvp_records
node_committee_actions -->|"queries and saves"| node_committee_records
node_user_actions -->|"queries and updates"| node_user_records
node_rsvp_actions -.->|"handles responses"| node_rsvp_records
node_attendance_actions -.->|"records attendance"| node_attendance_records
node_event_records -.->|"persists records"| node_database
node_rsvp_records -.->|"persists records"| node_database
node_attendance_records -.->|"persists records"| node_database
node_committee_records -.->|"persists records"| node_database
node_user_records -.->|"persists records"| node_database

click node_routes "https://github.com/git-flash/flash/blob/master/config/routes.rb"
click node_access_control "https://github.com/git-flash/flash/blob/master/app/controllers/application_controller.rb"
click node_authentication "https://github.com/git-flash/flash/blob/master/config/initializers/devise.rb"
click node_event_actions "https://github.com/git-flash/flash/blob/master/app/controllers/events_controller.rb"
click node_event_records "https://github.com/git-flash/flash/blob/master/app/models/event.rb"
click node_rsvp_actions "https://github.com/git-flash/flash/blob/master/app/controllers/rsvps_controller.rb"
click node_rsvp_records "https://github.com/git-flash/flash/blob/master/app/models/rsvp.rb"
click node_attendance_actions "https://github.com/git-flash/flash/blob/master/app/controllers/attendance_logs_controller.rb"
click node_attendance_records "https://github.com/git-flash/flash/blob/master/app/models/attendance_log.rb"
click node_committee_actions "https://github.com/git-flash/flash/blob/master/app/controllers/committees_controller.rb"
click node_committee_records "https://github.com/git-flash/flash/blob/master/app/models/committee.rb"
click node_user_actions "https://github.com/git-flash/flash/blob/master/app/controllers/users_controller.rb"
click node_user_records "https://github.com/git-flash/flash/blob/master/app/models/user.rb"
click node_help "https://github.com/git-flash/flash/blob/master/app/controllers/help_controller.rb"
click node_database "https://github.com/git-flash/flash/blob/master/db/schema.rb"
click node_browser_tables "https://github.com/git-flash/flash/blob/master/app/javascript/datatables.js"

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_routes,node_access_control,node_authentication toneBlue
class node_event_actions,node_event_records,node_rsvp_actions,node_rsvp_records toneAmber
class node_attendance_actions,node_attendance_records toneMint
class node_committee_actions,node_committee_records,node_user_actions,node_user_records,node_help toneRose
class node_database,node_browser_tables,node_member,node_staff,node_executive toneIndigo
```

## Components

### Access and Routing

- [HTTP Routes](https://github.com/git-flash/flash/blob/master/config/routes.rb): `config/routes.rb`
- [Role Checks](https://github.com/git-flash/flash/blob/master/app/controllers/application_controller.rb): `app/controllers/application_controller.rb`
- [Authentication](https://github.com/git-flash/flash/blob/master/config/initializers/devise.rb): `config/initializers/devise.rb`

### Events and RSVPs

- [Event Actions](https://github.com/git-flash/flash/blob/master/app/controllers/events_controller.rb): `app/controllers/events_controller.rb`
- [Event Records](https://github.com/git-flash/flash/blob/master/app/models/event.rb): `app/models/event.rb`
- [RSVP Actions](https://github.com/git-flash/flash/blob/master/app/controllers/rsvps_controller.rb): `app/controllers/rsvps_controller.rb`
- [RSVP Records](https://github.com/git-flash/flash/blob/master/app/models/rsvp.rb): `app/models/rsvp.rb`

### Attendance

- [Attendance Actions](https://github.com/git-flash/flash/blob/master/app/controllers/attendance_logs_controller.rb): `app/controllers/attendance_logs_controller.rb`
- [Attendance Logs](https://github.com/git-flash/flash/blob/master/app/models/attendance_log.rb): `app/models/attendance_log.rb`

### Membership Administration

- [Committee Actions](https://github.com/git-flash/flash/blob/master/app/controllers/committees_controller.rb): `app/controllers/committees_controller.rb`
- [Committee Records](https://github.com/git-flash/flash/blob/master/app/models/committee.rb): `app/models/committee.rb`
- [User Administration](https://github.com/git-flash/flash/blob/master/app/controllers/users_controller.rb): `app/controllers/users_controller.rb`
- [User Records](https://github.com/git-flash/flash/blob/master/app/models/user.rb): `app/models/user.rb`
- [Help Pages](https://github.com/git-flash/flash/blob/master/app/controllers/help_controller.rb): `app/controllers/help_controller.rb`

### Application Platform

- [Relational Database](https://github.com/git-flash/flash/blob/master/db/schema.rb): `db/schema.rb`
- [Interactive Tables](https://github.com/git-flash/flash/blob/master/app/javascript/datatables.js): `app/javascript/datatables.js`

### Other components

- **Member**
- **Staff**
- **Executive**

## Connections

- Member → HTTP Routes: requests (evidence: `config/routes.rb`)
- Staff → HTTP Routes: requests (evidence: `config/routes.rb`)
- Executive → HTTP Routes: requests (evidence: `config/routes.rb`)
- HTTP Routes → Event Actions: routes events (evidence: `config/routes.rb`)
- HTTP Routes → RSVP Actions: routes RSVPs (evidence: `config/routes.rb`)
- HTTP Routes → Attendance Actions: routes logs (evidence: `config/routes.rb`)
- HTTP Routes → Committee Actions: routes committees (evidence: `config/routes.rb`)
- HTTP Routes → User Administration: routes users (evidence: `config/routes.rb`)
- HTTP Routes → Help Pages: routes help (evidence: `config/routes.rb`)
- HTTP Routes → Authentication: enables Devise (evidence: `config/routes.rb`)
- Event Actions → Role Checks: inherits checks (evidence: `app/controllers/events_controller.rb`)
- Committee Actions → Role Checks: inherits checks (evidence: `app/controllers/committees_controller.rb`)
- User Administration → Role Checks: inherits checks (evidence: `app/controllers/users_controller.rb`)
- Event Actions → Event Records: queries and saves (evidence: `app/controllers/events_controller.rb`)
- Event Actions → RSVP Records: queries RSVPs (evidence: `app/controllers/events_controller.rb`)
- Committee Actions → Committee Records: queries and saves (evidence: `app/controllers/committees_controller.rb`)
- User Administration → User Records: queries and updates (evidence: `app/controllers/users_controller.rb`)
- RSVP Actions → RSVP Records: handles responses
- Attendance Actions → Attendance Logs: records attendance
- Event Records → Relational Database: persists records
- RSVP Records → Relational Database: persists records
- Attendance Logs → Relational Database: persists records
- Committee Records → Relational Database: persists records
- User Records → Relational Database: persists records
