# dream-hun/droneverse architecture

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

- Interactive diagram: https://gitdiagram.com/dream-hun/droneverse
- Repository: https://github.com/dream-hun/droneverse

## Overview

This is a Laravel/Inertia drone-flight learning platform: pilots browse courses, fly graded simulator challenges, complete quizzes, and track progress; paid plans unlock features, while staff administer content, accounts, and billing. The tree also shows analytics, leaderboards, drone photos, and account security. Sampled controllers confirm course catalog/progress assembly, challenge-run grading and recording, and Creem billing operations. README content was empty, and most source was not sampled, so uncertain subsystem wiring is omitted.

Main entry points: [`resources/js/app.tsx`](https://github.com/dream-hun/droneverse/blob/main/resources/js/app.tsx) (Inertia app entry), [`app/Http/Controllers/ChallengeController.php`](https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/ChallengeController.php) (Challenge runs), [`resources/js/pages/challenges/play.tsx`](https://github.com/dream-hun/droneverse/blob/main/resources/js/pages/challenges/play.tsx) (Challenge simulator page), [`app/Actions/RecordChallengeAttempt.php`](https://github.com/dream-hun/droneverse/blob/main/app/Actions/RecordChallengeAttempt.php) (Record challenge attempt)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_learning["Learning and progress"]
  node_course_controller["Course catalog"]
  node_courses[("Courses and missions<br/>[Course.php]")]
  node_challenge_controller["Challenge runs"]
  node_grade_run["Grade simulator run"]
  node_record_attempt["Record challenge attempt"]
  node_progress[("Pilot progress")]
  node_quiz["Quiz experience<br/>[QuizController.php]"]
  node_quiz_grade["Grade quiz submission"]
  node_analytics["Pilot analytics"]
end

subgraph group_sim["Flight simulator"]
  node_sim_page["Challenge simulator page<br/>[play.tsx]"]
  node_sim_canvas["Simulator canvas"]
  node_sim_engine["Flight simulation"]
  node_sim_grader["Run grader<br/>[grader.ts]"]
end

subgraph group_billing["Plans and billing"]
  node_billing_controller["Checkout and billing"]
  node_creem["Creem integration<br/>[Creem.php]"]
end

subgraph group_admin["Administration"]
  node_admin_controller["Admin content and accounts"]
  node_admin_pages["Admin workspace<br/>[index.tsx]"]
end

subgraph group_web["Web experience"]
  node_quiz_page["Quiz page<br/>[show.tsx]"]
  node_analytics_page["Analytics page<br/>[analytics.tsx]"]
  node_inertia["Inertia app entry<br/>[app.tsx]"]
end

node_pilot(("Pilot"))
node_browser(("Browser"))
node_creem_service{{"Creem"}}

node_pilot -->|"uses"| node_browser
node_browser -->|"loads"| node_inertia
node_inertia -->|"renders"| node_sim_page
node_inertia -->|"renders"| node_quiz_page
node_inertia -->|"renders"| node_analytics_page
node_inertia -->|"renders"| node_admin_pages
node_course_controller -->|"queries"| node_courses
node_challenge_controller -->|"grades"| node_grade_run
node_challenge_controller -->|"records"| node_record_attempt
node_record_attempt -->|"updates"| node_progress
node_challenge_controller -->|"renders"| node_sim_page
node_challenge_controller -->|"accepts graded run"| node_sim_grader
node_sim_page -->|"displays"| node_sim_canvas
node_sim_canvas -->|"runs"| node_sim_engine
node_quiz -->|"grades"| node_quiz_grade
node_billing_controller -->|"invokes"| node_creem
node_creem -->|"requests billing"| node_creem_service
node_admin_controller -->|"renders"| node_admin_pages

click node_course_controller "https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/CourseController.php"
click node_courses "https://github.com/dream-hun/droneverse/blob/main/app/Models/Course.php"
click node_challenge_controller "https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/ChallengeController.php"
click node_grade_run "https://github.com/dream-hun/droneverse/blob/main/app/Actions/GradeSimulatorRun.php"
click node_record_attempt "https://github.com/dream-hun/droneverse/blob/main/app/Actions/RecordChallengeAttempt.php"
click node_progress "https://github.com/dream-hun/droneverse/blob/main/app/Models/UserChallengeProgress.php"
click node_quiz "https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/QuizController.php"
click node_quiz_grade "https://github.com/dream-hun/droneverse/blob/main/app/Actions/GradeQuizSubmission.php"
click node_analytics "https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/AnalyticsController.php"
click node_sim_page "https://github.com/dream-hun/droneverse/blob/main/resources/js/pages/challenges/play.tsx"
click node_sim_canvas "https://github.com/dream-hun/droneverse/blob/main/resources/js/components/simulator/simulator-canvas.tsx"
click node_sim_engine "https://github.com/dream-hun/droneverse/blob/main/resources/js/hooks/use-drone-simulation.ts"
click node_sim_grader "https://github.com/dream-hun/droneverse/blob/main/resources/js/lib/simulator/grader.ts"
click node_billing_controller "https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/CheckoutController.php"
click node_creem "https://github.com/dream-hun/droneverse/blob/main/app/Http/Integrations/Creem.php"
click node_admin_controller "https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/Admin/CourseController.php"
click node_admin_pages "https://github.com/dream-hun/droneverse/blob/main/resources/js/pages/admin/courses/index.tsx"
click node_quiz_page "https://github.com/dream-hun/droneverse/blob/main/resources/js/pages/quizzes/show.tsx"
click node_analytics_page "https://github.com/dream-hun/droneverse/blob/main/resources/js/pages/analytics.tsx"
click node_inertia "https://github.com/dream-hun/droneverse/blob/main/resources/js/app.tsx"

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_course_controller,node_courses,node_challenge_controller,node_grade_run,node_record_attempt,node_progress,node_quiz,node_quiz_grade,node_analytics,node_browser toneBlue
class node_sim_page,node_sim_canvas,node_sim_engine,node_sim_grader toneAmber
class node_billing_controller,node_creem toneMint
class node_admin_controller,node_admin_pages toneRose
class node_quiz_page,node_analytics_page,node_inertia,node_pilot,node_creem_service toneIndigo
```

## Components

### Learning and progress

- [Course catalog](https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/CourseController.php): `app/Http/Controllers/CourseController.php`
- [Courses and missions](https://github.com/dream-hun/droneverse/blob/main/app/Models/Course.php): `app/Models/Course.php`
- [Challenge runs](https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/ChallengeController.php): `app/Http/Controllers/ChallengeController.php`
- [Grade simulator run](https://github.com/dream-hun/droneverse/blob/main/app/Actions/GradeSimulatorRun.php): `app/Actions/GradeSimulatorRun.php`
- [Record challenge attempt](https://github.com/dream-hun/droneverse/blob/main/app/Actions/RecordChallengeAttempt.php): `app/Actions/RecordChallengeAttempt.php`
- [Pilot progress](https://github.com/dream-hun/droneverse/blob/main/app/Models/UserChallengeProgress.php): `app/Models/UserChallengeProgress.php`
- [Quiz experience](https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/QuizController.php): `app/Http/Controllers/QuizController.php`
- [Grade quiz submission](https://github.com/dream-hun/droneverse/blob/main/app/Actions/GradeQuizSubmission.php): `app/Actions/GradeQuizSubmission.php`
- [Pilot analytics](https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/AnalyticsController.php): `app/Http/Controllers/AnalyticsController.php`

### Flight simulator

- [Challenge simulator page](https://github.com/dream-hun/droneverse/blob/main/resources/js/pages/challenges/play.tsx): `resources/js/pages/challenges/play.tsx`
- [Simulator canvas](https://github.com/dream-hun/droneverse/blob/main/resources/js/components/simulator/simulator-canvas.tsx): `resources/js/components/simulator/simulator-canvas.tsx`
- [Flight simulation](https://github.com/dream-hun/droneverse/blob/main/resources/js/hooks/use-drone-simulation.ts): `resources/js/hooks/use-drone-simulation.ts`
- [Run grader](https://github.com/dream-hun/droneverse/blob/main/resources/js/lib/simulator/grader.ts): `resources/js/lib/simulator/grader.ts`

### Plans and billing

- [Checkout and billing](https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/CheckoutController.php): `app/Http/Controllers/CheckoutController.php`
- [Creem integration](https://github.com/dream-hun/droneverse/blob/main/app/Http/Integrations/Creem.php): `app/Http/Integrations/Creem.php`

### Administration

- [Admin content and accounts](https://github.com/dream-hun/droneverse/blob/main/app/Http/Controllers/Admin/CourseController.php): `app/Http/Controllers/Admin/CourseController.php`
- [Admin workspace](https://github.com/dream-hun/droneverse/blob/main/resources/js/pages/admin/courses/index.tsx): `resources/js/pages/admin/courses/index.tsx`

### Web experience

- [Quiz page](https://github.com/dream-hun/droneverse/blob/main/resources/js/pages/quizzes/show.tsx): `resources/js/pages/quizzes/show.tsx`
- [Analytics page](https://github.com/dream-hun/droneverse/blob/main/resources/js/pages/analytics.tsx): `resources/js/pages/analytics.tsx`
- [Inertia app entry](https://github.com/dream-hun/droneverse/blob/main/resources/js/app.tsx): `resources/js/app.tsx`

### Other components

- **Pilot**
- **Browser**
- **Creem**

## Connections

- Pilot → Browser: uses
- Browser → Inertia app entry: loads
- Inertia app entry → Challenge simulator page: renders
- Inertia app entry → Quiz page: renders
- Inertia app entry → Analytics page: renders
- Inertia app entry → Admin workspace: renders
- Course catalog → Courses and missions: queries
- Challenge runs → Grade simulator run: grades
- Challenge runs → Record challenge attempt: records
- Record challenge attempt → Pilot progress: updates
- Challenge runs → Challenge simulator page: renders
- Challenge runs → Run grader: accepts graded run
- Challenge simulator page → Simulator canvas: displays
- Simulator canvas → Flight simulation: runs
- Quiz experience → Grade quiz submission: grades
- Checkout and billing → Creem integration: invokes
- Creem integration → Creem: requests billing
- Admin content and accounts → Admin workspace: renders
