# minhazur-rahman250/nextjs_-_golang-merge architecture

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

- Interactive diagram: https://gitdiagram.com/minhazur-rahman250/nextjs_-_golang-merge
- Repository: https://github.com/minhazur-rahman250/nextjs_-_golang-merge

## Overview

This is a NestJS course-learning backend, rather than the generic starter described by the README. Its main workflow is account registration/login, teacher course and lesson management, then student enrollment and progress tracking; administrators moderate users and courses and inspect audit logs. The graph uses sampled controller and service code plus SOURCE INDEX references. Persistence is represented as a database boundary; the excerpts show repository operations but do not identify a concrete database service.

Main entry points: [`src/teaching/course.controller.ts`](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/teaching/course.controller.ts) (Course API), [`src/learning/learning.controller.ts`](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/learning/learning.controller.ts) (Learning API), [`src/admin/admin.controller.ts`](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/admin/admin.controller.ts) (Admin API), [`src/auth/auth.controller.ts`](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/auth/auth.controller.ts) (Authentication API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and access"]
  node_auth_api["Authentication API<br/>[auth.controller.ts]"]
  node_auth_logic["Authentication<br/>[auth.service.ts]"]
  node_user_logic["User accounts<br/>[user.service.ts]"]
  node_access["Role access<br/>[roles.guards.ts]"]
end

subgraph group_teaching["Course authoring"]
  node_courses_api["Course API"]
  node_course_logic["Course authoring<br/>[course.service.ts]"]
  node_course_data["Courses and lessons<br/>[course.entity.ts]"]
end

subgraph group_learning["Student learning"]
  node_learning_api["Learning API"]
  node_learning_logic["Enrollment and progress"]
  node_enrollment_data["Enrollment records"]
  node_progress_data["Lesson progress<br/>[progress.entity.ts]"]
end

subgraph group_governance["Administration"]
  node_admin_api["Admin API"]
  node_admin_logic["Moderation and audit<br/>[admin.service.ts]"]
  node_audit_data["Admin audit log"]
end

node_student(("Student"))
node_teacher(("Teacher"))
node_admin_actor(("Administrator"))
node_database[("Relational database")]

node_student -->|"register or log in"| node_auth_api
node_teacher -->|"register or log in"| node_auth_api
node_auth_api -->|"dispatches"| node_auth_logic
node_auth_logic -->|"creates or looks up"| node_user_logic
node_user_logic -->|"reads and writes"| node_database
node_teacher -->|"manages courses"| node_courses_api
node_courses_api -->|"dispatches"| node_course_logic
node_course_logic -->|"reads and writes"| node_database
node_student -->|"enrolls and tracks"| node_learning_api
node_learning_api -->|"dispatches"| node_learning_logic
node_learning_logic -->|"reads and writes"| node_database
node_admin_actor -->|"moderates"| node_admin_api
node_admin_api -->|"dispatches"| node_admin_logic
node_admin_logic -->|"reads and writes"| node_database
node_courses_api -->|"guards teacher routes"| node_access
node_learning_api -->|"guards student routes"| node_access
node_admin_api -->|"guards admin routes"| node_access

click node_auth_api "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/auth/auth.controller.ts"
click node_auth_logic "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/auth/auth.service.ts"
click node_user_logic "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/user/user.service.ts"
click node_access "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/common/guards/roles.guards.ts"
click node_courses_api "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/teaching/course.controller.ts"
click node_course_logic "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/teaching/course.service.ts"
click node_course_data "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/teaching/entities/course.entity.ts"
click node_learning_api "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/learning/learning.controller.ts"
click node_learning_logic "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/learning/learning.service.ts"
click node_enrollment_data "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/learning/entities/enrollment.entity.ts"
click node_progress_data "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/learning/entities/progress.entity.ts"
click node_admin_api "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/admin/admin.controller.ts"
click node_admin_logic "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/admin/admin.service.ts"
click node_audit_data "https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/admin/entities/admin-log.entity.ts"

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_api,node_auth_logic,node_user_logic,node_access toneBlue
class node_courses_api,node_course_logic,node_course_data,node_database toneAmber
class node_learning_api,node_learning_logic,node_enrollment_data,node_progress_data toneMint
class node_admin_api,node_admin_logic,node_audit_data toneRose
class node_student,node_teacher,node_admin_actor toneIndigo
```

## Components

### Identity and access

- [Authentication API](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/auth/auth.controller.ts): `src/auth/auth.controller.ts`
- [Authentication](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/auth/auth.service.ts): `src/auth/auth.service.ts`
- [User accounts](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/user/user.service.ts): `src/user/user.service.ts`
- [Role access](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/common/guards/roles.guards.ts): `src/common/guards/roles.guards.ts`

### Course authoring

- [Course API](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/teaching/course.controller.ts): `src/teaching/course.controller.ts`
- [Course authoring](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/teaching/course.service.ts): `src/teaching/course.service.ts`
- [Courses and lessons](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/teaching/entities/course.entity.ts): `src/teaching/entities/course.entity.ts`

### Student learning

- [Learning API](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/learning/learning.controller.ts): `src/learning/learning.controller.ts`
- [Enrollment and progress](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/learning/learning.service.ts): `src/learning/learning.service.ts`
- [Enrollment records](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/learning/entities/enrollment.entity.ts): `src/learning/entities/enrollment.entity.ts`
- [Lesson progress](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/learning/entities/progress.entity.ts): `src/learning/entities/progress.entity.ts`

### Administration

- [Admin API](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/admin/admin.controller.ts): `src/admin/admin.controller.ts`
- [Moderation and audit](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/admin/admin.service.ts): `src/admin/admin.service.ts`
- [Admin audit log](https://github.com/minhazur-rahman250/nextjs_-_golang-merge/blob/main/src/admin/entities/admin-log.entity.ts): `src/admin/entities/admin-log.entity.ts`

### Other components

- **Student**
- **Teacher**
- **Administrator**
- **Relational database**

## Connections

- Student → Authentication API: register or log in (evidence: `src/auth/auth.controller.ts`)
- Teacher → Authentication API: register or log in (evidence: `src/auth/auth.controller.ts`)
- Authentication API → Authentication: dispatches (evidence: `src/auth/auth.controller.ts`)
- Authentication → User accounts: creates or looks up (evidence: `src/auth/auth.service.ts`)
- User accounts → Relational database: reads and writes (evidence: `src/user/user.service.ts`)
- Teacher → Course API: manages courses (evidence: `src/teaching/course.controller.ts`)
- Course API → Course authoring: dispatches (evidence: `src/teaching/course.controller.ts`)
- Course authoring → Relational database: reads and writes (evidence: `src/teaching/course.service.ts`)
- Student → Learning API: enrolls and tracks (evidence: `src/learning/learning.controller.ts`)
- Learning API → Enrollment and progress: dispatches (evidence: `src/learning/learning.controller.ts`)
- Enrollment and progress → Relational database: reads and writes (evidence: `src/learning/learning.service.ts`)
- Administrator → Admin API: moderates (evidence: `src/admin/admin.controller.ts`)
- Admin API → Moderation and audit: dispatches (evidence: `src/admin/admin.controller.ts`)
- Moderation and audit → Relational database: reads and writes (evidence: `src/admin/admin.service.ts`)
- Course API → Role access: guards teacher routes (evidence: `src/teaching/course.controller.ts`)
- Learning API → Role access: guards student routes (evidence: `src/learning/learning.controller.ts`)
- Admin API → Role access: guards admin routes (evidence: `src/admin/admin.controller.ts`)
