# camdenslade/missouristatelacrosse architecture

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

- Interactive diagram: https://gitdiagram.com/camdenslade/missouristatelacrosse
- Repository: https://github.com/camdenslade/missouristatelacrosse

## Overview

Missouri State Lacrosse is a dual-program public and role-gated website backed by a Spring API. Visitors and team members use the Men’s or Women’s experience to view team information and media, participate in events, fundraising and payments, and shop; administrators manage program operations. The frontend routes requests through shared API services to backend controllers, which use domain services and repositories for program-scoped data. The README documents PayPal/Stripe, Printify, Firebase, email, S3, and live streaming integrations. Some feature wiring is represented at directory level because its implementation was not sampled.

Main entry points: [`src/Men/Local/Pages`](https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Pages) (Men’s pages), [`backend/src/main/java/com/mostate/lacrosse/Service`](https://github.com/camdenslade/missouristatelacrosse/tree/main/backend/src/main/java/com/mostate/lacrosse/Service) (Domain services), [`src/App.tsx`](https://github.com/camdenslade/missouristatelacrosse/blob/main/src/App.tsx) (Program router), [`backend/src/main/java/com/mostate/lacrosse/Repository`](https://github.com/camdenslade/missouristatelacrosse/tree/main/backend/src/main/java/com/mostate/lacrosse/Repository) (Repositories)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Web experience"]
  node_app["Program router<br/>[App.tsx]"]
  node_auth["Role access"]
  node_men["Men’s pages"]
  node_women["Women’s pages"]
  node_adminui["Admin tools"]
  node_api["API client<br/>[API.ts]"]
end

subgraph group_team["Team operations"]
  node_teamfeatures["Roster schedule stats"]
  node_community["Events media fundraising"]
end

subgraph group_transactions["Commerce and payments"]
  node_paymentsui["Dues and checkout"]
  node_storeui["Team store"]
end

subgraph group_backend["API and data"]
  node_controllers["REST controllers"]
  node_services["Domain services"]
  node_repos["Repositories"]
  node_models["Domain records"]
  node_postgres[("Program schemas")]
end

subgraph group_integrations["External services"]
  node_firebase{{"Firebase identity"}}
  node_payments{{"PayPal and Stripe"}}
  node_printify{{"Printify fulfillment"}}
  node_aws{{"AWS email and media"}}
  node_stream{{"Live streaming"}}
end

node_visitor(("Visitors and members"))

node_visitor -->|"opens"| node_app
node_app -->|"guards routes"| node_auth
node_app -->|"routes"| node_men
node_app -->|"routes"| node_women
node_app -->|"routes"| node_adminui
node_men -->|"requests data"| node_api
node_women -->|"requests data"| node_api
node_adminui -->|"manages records"| node_api
node_men -->|"presents"| node_teamfeatures
node_men -->|"presents"| node_community
node_men -->|"collects payments"| node_paymentsui
node_men -->|"shops"| node_storeui
node_api -->|"HTTP calls"| node_controllers
node_controllers -->|"invokes"| node_services
node_controllers -->|"queries"| node_repos
node_services -->|"uses"| node_repos
node_repos -->|"maps"| node_models
node_repos -->|"reads and writes"| node_postgres
node_auth -.->|"authenticates"| node_firebase
node_services -.->|"processes charges"| node_payments
node_services -.->|"fulfills orders"| node_printify
node_services -.->|"stores and emails"| node_aws
node_services -.->|"supports streaming"| node_stream

click node_app "https://github.com/camdenslade/missouristatelacrosse/blob/main/src/App.tsx"
click node_auth "https://github.com/camdenslade/missouristatelacrosse/blob/main/src/Global/Authentication/ProtectedRoutes.tsx"
click node_men "https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Pages"
click node_women "https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Women/Local/Pages"
click node_adminui "https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Admin"
click node_api "https://github.com/camdenslade/missouristatelacrosse/blob/main/src/Services/API.ts"
click node_teamfeatures "https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Pages"
click node_community "https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Pages"
click node_paymentsui "https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Pages/Payments"
click node_storeui "https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Pages/Store"
click node_controllers "https://github.com/camdenslade/missouristatelacrosse/tree/main/backend/src/main/java/com/mostate/lacrosse/Controller"
click node_services "https://github.com/camdenslade/missouristatelacrosse/tree/main/backend/src/main/java/com/mostate/lacrosse/Service"
click node_repos "https://github.com/camdenslade/missouristatelacrosse/tree/main/backend/src/main/java/com/mostate/lacrosse/Repository"
click node_models "https://github.com/camdenslade/missouristatelacrosse/tree/main/backend/src/main/java/com/mostate/lacrosse/Model"

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_app,node_auth,node_men,node_women,node_adminui,node_api toneBlue
class node_teamfeatures,node_community toneAmber
class node_paymentsui,node_storeui toneMint
class node_controllers,node_services,node_repos,node_models,node_postgres toneRose
class node_firebase,node_payments,node_printify,node_aws,node_stream,node_visitor toneIndigo
```

## Components

### Web experience

- [Program router](https://github.com/camdenslade/missouristatelacrosse/blob/main/src/App.tsx): `src/App.tsx`
- [Role access](https://github.com/camdenslade/missouristatelacrosse/blob/main/src/Global/Authentication/ProtectedRoutes.tsx): `src/Global/Authentication/ProtectedRoutes.tsx`
- [Men’s pages](https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Pages): `src/Men/Local/Pages`
- [Women’s pages](https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Women/Local/Pages): `src/Women/Local/Pages`
- [Admin tools](https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Admin): `src/Men/Local/Admin`
- [API client](https://github.com/camdenslade/missouristatelacrosse/blob/main/src/Services/API.ts): `src/Services/API.ts`

### Team operations

- [Roster schedule stats](https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Pages): `src/Men/Local/Pages`
- [Events media fundraising](https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Pages): `src/Men/Local/Pages`

### Commerce and payments

- [Dues and checkout](https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Pages/Payments): `src/Men/Local/Pages/Payments`
- [Team store](https://github.com/camdenslade/missouristatelacrosse/tree/main/src/Men/Local/Pages/Store): `src/Men/Local/Pages/Store`

### API and data

- [REST controllers](https://github.com/camdenslade/missouristatelacrosse/tree/main/backend/src/main/java/com/mostate/lacrosse/Controller): `backend/src/main/java/com/mostate/lacrosse/Controller`
- [Domain services](https://github.com/camdenslade/missouristatelacrosse/tree/main/backend/src/main/java/com/mostate/lacrosse/Service): `backend/src/main/java/com/mostate/lacrosse/Service`
- [Repositories](https://github.com/camdenslade/missouristatelacrosse/tree/main/backend/src/main/java/com/mostate/lacrosse/Repository): `backend/src/main/java/com/mostate/lacrosse/Repository`
- [Domain records](https://github.com/camdenslade/missouristatelacrosse/tree/main/backend/src/main/java/com/mostate/lacrosse/Model): `backend/src/main/java/com/mostate/lacrosse/Model`
- **Program schemas**

### External services

- **Firebase identity**
- **PayPal and Stripe**
- **Printify fulfillment**
- **AWS email and media**
- **Live streaming**

### Other components

- **Visitors and members**

## Connections

- Visitors and members → Program router: opens
- Program router → Role access: guards routes
- Program router → Men’s pages: routes
- Program router → Women’s pages: routes
- Program router → Admin tools: routes
- Men’s pages → API client: requests data
- Women’s pages → API client: requests data
- Admin tools → API client: manages records
- Men’s pages → Roster schedule stats: presents
- Men’s pages → Events media fundraising: presents
- Men’s pages → Dues and checkout: collects payments
- Men’s pages → Team store: shops
- API client → REST controllers: HTTP calls
- REST controllers → Domain services: invokes
- REST controllers → Repositories: queries
- Domain services → Repositories: uses
- Repositories → Domain records: maps
- Repositories → Program schemas: reads and writes
- Role access → Firebase identity: authenticates
- Domain services → PayPal and Stripe: processes charges
- Domain services → Printify fulfillment: fulfills orders
- Domain services → AWS email and media: stores and emails
- Domain services → Live streaming: supports streaming
