# mervearslan1/aviation-platform architecture

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

- Interactive diagram: https://gitdiagram.com/mervearslan1/aviation-platform
- Repository: https://github.com/mervearslan1/aviation-platform

## Overview

Aviation Platform is a modular-monolith aviation learning and publishing product, with a React flight surface and a separate OPS area. The main learner journey is to browse tower or pilot training, practise listening, speaking and scenarios, and—when signed in—retain progress; cockpit simulations are a separate capability. Writers submit articles for review, while OPS handles applications and feedback. The README documents these product areas, but most controller and service implementations were not sampled, so backend links are shown only where supported or marked unverified.

Main entry points: [`frontend/src/App.tsx`](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/App.tsx) (Flight and OPS router), [`frontend/src/shared/api.ts`](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/shared/api.ts) (Learning API), [`frontend/src/flight/FlightShell.tsx`](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/FlightShell.tsx) (Flight shell), [`frontend/src/flight/pages/Writer.tsx`](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/pages/Writer.tsx) (Article editor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Flight surface"]
  node_app["Flight and OPS router<br/>[App.tsx]"]
  node_flight["Flight shell<br/>[FlightShell.tsx]"]
end

subgraph group_training["Training"]
  node_towerui["Tower practice<br/>[TowerGame.tsx]"]
  node_pilotui["Pilot track<br/>[PathPage.tsx]"]
  node_cockpitui["Cockpit surface<br/>[Cockpit.tsx]"]
  node_learnapi["Learning API<br/>[api.ts]"]
  node_simservice["Aircraft simulation"]
  node_learnservice["Learning service"]
end

subgraph group_publishing["Publishing"]
  node_writer["Article editor<br/>[Writer.tsx]"]
  node_articleapi["Article API"]
  node_feedback["Article feedback"]
end

subgraph group_identity["Identity and operations"]
  node_authui["Sign-in page<br/>[Login.tsx]"]
  node_authservice["Authentication<br/>[AuthService.java]"]
  node_userservice["User administration<br/>[UserService.java]"]
  node_applications["OPS applications<br/>[Applications.tsx]"]
  node_teams["Team applications"]
  node_audit["Audit logs<br/>[AuditService.java]"]
end

subgraph group_platform["Backend platform"]
  node_jwt["JWT service<br/>[JwtService.java]"]
  node_apiresponse["API response envelope<br/>[ApiResponse.java]"]
end

node_visitor(("Learner or writer"))

node_visitor -->|"opens"| node_app
node_app -->|"routes to"| node_flight
node_app -->|"routes to"| node_writer
node_app -->|"routes to"| node_authui
node_app -->|"routes to"| node_applications
node_flight -.->|"offers practice"| node_towerui
node_flight -.->|"offers track"| node_pilotui
node_flight -->|"offers cockpit"| node_cockpitui
node_towerui -->|"uses"| node_learnapi
node_writer -->|"uses API client"| node_learnapi
node_cockpitui -.->|"uses API client"| node_learnapi
node_learnapi -.->|"calls backend"| node_learnservice
node_learnapi -.->|"calls backend"| node_simservice
node_writer -.->|"submits articles"| node_articleapi
node_writer -.->|"handles feedback"| node_feedback
node_authui -.->|"authenticates"| node_authservice
node_authservice -.->|"issues tokens"| node_jwt
node_applications -->|"reviews applications"| node_teams
node_app -.->|"offers OPS users"| node_userservice
node_app -.->|"offers OPS audit"| node_audit

click node_app "https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/App.tsx"
click node_flight "https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/FlightShell.tsx"
click node_towerui "https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/TowerGame.tsx"
click node_pilotui "https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/pages/PathPage.tsx"
click node_cockpitui "https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/pages/Cockpit.tsx"
click node_learnapi "https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/shared/api.ts"
click node_simservice "https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/aircraft/service/SimulationEngine.java"
click node_learnservice "https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/learning/service/LearningService.java"
click node_writer "https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/pages/Writer.tsx"
click node_articleapi "https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/article/service/ArticleService.java"
click node_feedback "https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/article/service/ArticleFeedbackService.java"
click node_authui "https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/pages/Login.tsx"
click node_authservice "https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/auth/service/AuthService.java"
click node_jwt "https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/common/security/jwt/JwtService.java"
click node_userservice "https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/user/service/UserService.java"
click node_applications "https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/ops/pages/Applications.tsx"
click node_teams "https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/user/service/TeamApplicationService.java"
click node_audit "https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/audit/service/AuditService.java"
click node_apiresponse "https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/common/response/ApiResponse.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_app,node_flight toneBlue
class node_towerui,node_pilotui,node_cockpitui,node_learnapi,node_simservice,node_learnservice toneAmber
class node_writer,node_articleapi,node_feedback toneMint
class node_authui,node_authservice,node_userservice,node_applications,node_teams,node_audit toneRose
class node_jwt,node_apiresponse,node_visitor toneIndigo
```

## Components

### Flight surface

- [Flight and OPS router](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Flight shell](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/FlightShell.tsx): `frontend/src/flight/FlightShell.tsx`

### Training

- [Tower practice](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/TowerGame.tsx): `frontend/src/flight/TowerGame.tsx`
- [Pilot track](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/pages/PathPage.tsx): `frontend/src/flight/pages/PathPage.tsx`
- [Cockpit surface](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/pages/Cockpit.tsx): `frontend/src/flight/pages/Cockpit.tsx`
- [Learning API](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/shared/api.ts): `frontend/src/shared/api.ts`
- [Aircraft simulation](https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/aircraft/service/SimulationEngine.java): `src/main/java/com/aviation/platform/module/aircraft/service/SimulationEngine.java`
- [Learning service](https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/learning/service/LearningService.java): `src/main/java/com/aviation/platform/module/learning/service/LearningService.java`

### Publishing

- [Article editor](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/pages/Writer.tsx): `frontend/src/flight/pages/Writer.tsx`
- [Article API](https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/article/service/ArticleService.java): `src/main/java/com/aviation/platform/module/article/service/ArticleService.java`
- [Article feedback](https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/article/service/ArticleFeedbackService.java): `src/main/java/com/aviation/platform/module/article/service/ArticleFeedbackService.java`

### Identity and operations

- [Sign-in page](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/flight/pages/Login.tsx): `frontend/src/flight/pages/Login.tsx`
- [Authentication](https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/auth/service/AuthService.java): `src/main/java/com/aviation/platform/module/auth/service/AuthService.java`
- [User administration](https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/user/service/UserService.java): `src/main/java/com/aviation/platform/module/user/service/UserService.java`
- [OPS applications](https://github.com/mervearslan1/aviation-platform/blob/main/frontend/src/ops/pages/Applications.tsx): `frontend/src/ops/pages/Applications.tsx`
- [Team applications](https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/user/service/TeamApplicationService.java): `src/main/java/com/aviation/platform/module/user/service/TeamApplicationService.java`
- [Audit logs](https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/module/audit/service/AuditService.java): `src/main/java/com/aviation/platform/module/audit/service/AuditService.java`

### Backend platform

- [JWT service](https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/common/security/jwt/JwtService.java): `src/main/java/com/aviation/platform/common/security/jwt/JwtService.java`
- [API response envelope](https://github.com/mervearslan1/aviation-platform/blob/main/src/main/java/com/aviation/platform/common/response/ApiResponse.java): `src/main/java/com/aviation/platform/common/response/ApiResponse.java`

### Other components

- **Learner or writer**

## Connections

- Learner or writer → Flight and OPS router: opens (evidence: `frontend/src/App.tsx`)
- Flight and OPS router → Flight shell: routes to (evidence: `frontend/src/App.tsx`)
- Flight and OPS router → Article editor: routes to (evidence: `frontend/src/App.tsx`)
- Flight and OPS router → Sign-in page: routes to (evidence: `frontend/src/App.tsx`)
- Flight and OPS router → OPS applications: routes to (evidence: `frontend/src/App.tsx`)
- Flight shell → Tower practice: offers practice (evidence: `README.md`)
- Flight shell → Pilot track: offers track (evidence: `README.md`)
- Flight shell → Cockpit surface: offers cockpit (evidence: `frontend/src/App.tsx`)
- Tower practice → Learning API: uses (evidence: `frontend/src/flight/TowerGame.tsx`)
- Article editor → Learning API: uses API client (evidence: `frontend/src/flight/pages/Writer.tsx`)
- Cockpit surface → Learning API: uses API client
- Learning API → Learning service: calls backend
- Learning API → Aircraft simulation: calls backend
- Article editor → Article API: submits articles
- Article editor → Article feedback: handles feedback
- Sign-in page → Authentication: authenticates
- Authentication → JWT service: issues tokens
- OPS applications → Team applications: reviews applications (evidence: `frontend/src/ops/pages/Applications.tsx`)
- Flight and OPS router → User administration: offers OPS users (evidence: `frontend/src/App.tsx`)
- Flight and OPS router → Audit logs: offers OPS audit (evidence: `frontend/src/App.tsx`)
