# karthik-scs/incrito_lms architecture

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

- Interactive diagram: https://gitdiagram.com/karthik-scs/incrito_lms
- Repository: https://github.com/karthik-scs/incrito_lms

## Overview

Incrito LMS is a cohort-based learning platform with a Next.js frontend and a separate Express API. Learners authenticate, access courses and lessons, and participate in cohort activities; staff manage cohorts, curriculum, enrollments, certificates, and platform settings. The README also describes communities, chat, calls, bookings, analytics, and notifications. The graph preserves these product areas, but many frontend-to-API and backend feature links are inferred from the product description rather than sampled calls, so they are shown as unverified dashed edges.

Main entry points: [`lib/authClient.ts`](https://github.com/karthik-scs/incrito_lms/blob/master/lib/authClient.ts) (API client), [`server/src/services/enrollment.service.ts`](https://github.com/karthik-scs/incrito_lms/blob/master/server/src/services/enrollment.service.ts) (Enrollment service), [`app/(auth)/login/page.tsx`](https://github.com/karthik-scs/incrito_lms/blob/master/app/(auth)/login/page.tsx) (Sign-in flow), [`components/providers/AuthProvider.tsx`](https://github.com/karthik-scs/incrito_lms/blob/master/components/providers/AuthProvider.tsx) (Session state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and access"]
  node_auth_pages["Sign-in flow<br/>[page.tsx]"]
  node_auth_state["Session state<br/>[AuthProvider.tsx]"]
  node_api_client["API client<br/>[authClient.ts]"]
  node_app_shell["Role-aware shell<br/>[AdminLayout.tsx]"]
end

subgraph group_learning["Learning and cohorts"]
  node_course_browse["Course catalog<br/>[page.tsx]"]
  node_lesson_learning["Lesson learning<br/>[page.tsx]"]
  node_cohort_mgmt["Cohort management<br/>[page.tsx]"]
  node_curriculum["Curriculum editor"]
  node_certificates["Certificates<br/>[page.tsx]"]
end

subgraph group_engagement["Community and engagement"]
  node_community["Premium communities<br/>[page.tsx]"]
  node_chat["Direct messaging<br/>[page.tsx]"]
  node_calls["Voice video calls<br/>[CallManager.tsx]"]
  node_bookings["Mentor bookings<br/>[BookingPanel.tsx]"]
end

subgraph group_operations["Administration"]
  node_admin_analytics["Admin analytics<br/>[page.tsx]"]
  node_reports["Reports<br/>[page.tsx]"]
  node_settings["Platform settings<br/>[page.tsx]"]
end

subgraph group_backend["API and persistence"]
  node_enrollment_routes["Enrollment routes"]
  node_enrollment_controller["Enrollment controller"]
  node_enrollment_service["Enrollment service"]
  node_database[("PostgreSQL data<br/>[prisma.ts]")]
  node_notification_service["Notifications"]
  node_api_server["Express API<br/>[app.ts]"]
end

node_learner(("Learner"))
node_staff(("Staff"))

node_learner -.->|"signs in"| node_auth_pages
node_staff -.->|"signs in"| node_auth_pages
node_auth_pages -->|"updates session"| node_auth_state
node_auth_state -->|"loads identity"| node_api_client
node_app_shell -->|"checks role"| node_auth_state
node_learner -.->|"browses courses"| node_course_browse
node_course_browse -->|"requests courses"| node_api_client
node_learner -.->|"studies lessons"| node_lesson_learning
node_staff -.->|"manages cohorts"| node_cohort_mgmt
node_staff -.->|"edits curriculum"| node_curriculum
node_learner -.->|"views awards"| node_certificates
node_learner -.->|"participates"| node_community
node_learner -.->|"messages peers"| node_chat
node_chat -->|"opens bookings"| node_bookings
node_learner -.->|"places calls"| node_calls
node_calls -->|"signals calls"| node_api_client
node_learner -.->|"books mentors"| node_bookings
node_staff -.->|"reviews analytics"| node_admin_analytics
node_staff -.->|"exports reports"| node_reports
node_staff -.->|"configures platform"| node_settings
node_api_client -.->|"sends requests"| node_api_server
node_enrollment_routes -->|"dispatches requests"| node_enrollment_controller
node_enrollment_controller -->|"invokes operations"| node_enrollment_service
node_enrollment_service -->|"reads and writes"| node_database
node_enrollment_service -->|"notifies user"| node_notification_service

click node_auth_pages "https://github.com/karthik-scs/incrito_lms/blob/master/app/(auth)/login/page.tsx"
click node_auth_state "https://github.com/karthik-scs/incrito_lms/blob/master/components/providers/AuthProvider.tsx"
click node_api_client "https://github.com/karthik-scs/incrito_lms/blob/master/lib/authClient.ts"
click node_app_shell "https://github.com/karthik-scs/incrito_lms/blob/master/components/layout/AdminLayout.tsx"
click node_course_browse "https://github.com/karthik-scs/incrito_lms/blob/master/app/courses/page.tsx"
click node_lesson_learning "https://github.com/karthik-scs/incrito_lms/blob/master/app/courses/%5Bslug%5D/learn/%5BlessonId%5D/page.tsx"
click node_cohort_mgmt "https://github.com/karthik-scs/incrito_lms/blob/master/app/admin/cohorts/page.tsx"
click node_curriculum "https://github.com/karthik-scs/incrito_lms/blob/master/components/admin/CurriculumEditor.tsx"
click node_certificates "https://github.com/karthik-scs/incrito_lms/blob/master/app/courses/%5Bslug%5D/certificate/page.tsx"
click node_community "https://github.com/karthik-scs/incrito_lms/blob/master/app/community/%5Bid%5D/page.tsx"
click node_chat "https://github.com/karthik-scs/incrito_lms/blob/master/app/chat/page.tsx"
click node_calls "https://github.com/karthik-scs/incrito_lms/blob/master/components/calls/CallManager.tsx"
click node_bookings "https://github.com/karthik-scs/incrito_lms/blob/master/components/bookings/BookingPanel.tsx"
click node_admin_analytics "https://github.com/karthik-scs/incrito_lms/blob/master/app/admin/dashboard/page.tsx"
click node_reports "https://github.com/karthik-scs/incrito_lms/blob/master/app/admin/reports/page.tsx"
click node_settings "https://github.com/karthik-scs/incrito_lms/blob/master/app/admin/settings/page.tsx"
click node_enrollment_routes "https://github.com/karthik-scs/incrito_lms/blob/master/server/src/routes/enrollments.routes.ts"
click node_enrollment_controller "https://github.com/karthik-scs/incrito_lms/blob/master/server/src/controllers/enrollment.controller.ts"
click node_enrollment_service "https://github.com/karthik-scs/incrito_lms/blob/master/server/src/services/enrollment.service.ts"
click node_database "https://github.com/karthik-scs/incrito_lms/blob/master/server/src/lib/prisma.ts"
click node_notification_service "https://github.com/karthik-scs/incrito_lms/blob/master/server/src/services/notification.service.ts"
click node_api_server "https://github.com/karthik-scs/incrito_lms/blob/master/server/src/app.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_pages,node_auth_state,node_api_client,node_app_shell toneBlue
class node_course_browse,node_lesson_learning,node_cohort_mgmt,node_curriculum,node_certificates toneAmber
class node_community,node_chat,node_calls,node_bookings toneMint
class node_admin_analytics,node_reports,node_settings toneRose
class node_enrollment_routes,node_enrollment_controller,node_enrollment_service,node_database,node_notification_service,node_api_server,node_learner,node_staff toneIndigo
```

## Components

### Identity and access

- [Sign-in flow](https://github.com/karthik-scs/incrito_lms/blob/master/app/(auth)/login/page.tsx): `app/(auth)/login/page.tsx`
- [Session state](https://github.com/karthik-scs/incrito_lms/blob/master/components/providers/AuthProvider.tsx): `components/providers/AuthProvider.tsx`
- [API client](https://github.com/karthik-scs/incrito_lms/blob/master/lib/authClient.ts): `lib/authClient.ts`
- [Role-aware shell](https://github.com/karthik-scs/incrito_lms/blob/master/components/layout/AdminLayout.tsx): `components/layout/AdminLayout.tsx`

### Learning and cohorts

- [Course catalog](https://github.com/karthik-scs/incrito_lms/blob/master/app/courses/page.tsx): `app/courses/page.tsx`
- [Lesson learning](https://github.com/karthik-scs/incrito_lms/blob/master/app/courses/%5Bslug%5D/learn/%5BlessonId%5D/page.tsx): `app/courses/[slug]/learn/[lessonId]/page.tsx`
- [Cohort management](https://github.com/karthik-scs/incrito_lms/blob/master/app/admin/cohorts/page.tsx): `app/admin/cohorts/page.tsx`
- [Curriculum editor](https://github.com/karthik-scs/incrito_lms/blob/master/components/admin/CurriculumEditor.tsx): `components/admin/CurriculumEditor.tsx`
- [Certificates](https://github.com/karthik-scs/incrito_lms/blob/master/app/courses/%5Bslug%5D/certificate/page.tsx): `app/courses/[slug]/certificate/page.tsx`

### Community and engagement

- [Premium communities](https://github.com/karthik-scs/incrito_lms/blob/master/app/community/%5Bid%5D/page.tsx): `app/community/[id]/page.tsx`
- [Direct messaging](https://github.com/karthik-scs/incrito_lms/blob/master/app/chat/page.tsx): `app/chat/page.tsx`
- [Voice video calls](https://github.com/karthik-scs/incrito_lms/blob/master/components/calls/CallManager.tsx): `components/calls/CallManager.tsx`
- [Mentor bookings](https://github.com/karthik-scs/incrito_lms/blob/master/components/bookings/BookingPanel.tsx): `components/bookings/BookingPanel.tsx`

### Administration

- [Admin analytics](https://github.com/karthik-scs/incrito_lms/blob/master/app/admin/dashboard/page.tsx): `app/admin/dashboard/page.tsx`
- [Reports](https://github.com/karthik-scs/incrito_lms/blob/master/app/admin/reports/page.tsx): `app/admin/reports/page.tsx`
- [Platform settings](https://github.com/karthik-scs/incrito_lms/blob/master/app/admin/settings/page.tsx): `app/admin/settings/page.tsx`

### API and persistence

- [Enrollment routes](https://github.com/karthik-scs/incrito_lms/blob/master/server/src/routes/enrollments.routes.ts): `server/src/routes/enrollments.routes.ts`
- [Enrollment controller](https://github.com/karthik-scs/incrito_lms/blob/master/server/src/controllers/enrollment.controller.ts): `server/src/controllers/enrollment.controller.ts`
- [Enrollment service](https://github.com/karthik-scs/incrito_lms/blob/master/server/src/services/enrollment.service.ts): `server/src/services/enrollment.service.ts`
- [PostgreSQL data](https://github.com/karthik-scs/incrito_lms/blob/master/server/src/lib/prisma.ts): `server/src/lib/prisma.ts`
- [Notifications](https://github.com/karthik-scs/incrito_lms/blob/master/server/src/services/notification.service.ts): `server/src/services/notification.service.ts`
- [Express API](https://github.com/karthik-scs/incrito_lms/blob/master/server/src/app.ts): `server/src/app.ts`

### Other components

- **Learner**
- **Staff**

## Connections

- Learner → Sign-in flow: signs in
- Staff → Sign-in flow: signs in
- Sign-in flow → Session state: updates session (evidence: `app/(auth)/login/page.tsx`)
- Session state → API client: loads identity (evidence: `components/providers/AuthProvider.tsx`)
- Role-aware shell → Session state: checks role (evidence: `components/layout/AdminLayout.tsx`)
- Learner → Course catalog: browses courses
- Course catalog → API client: requests courses (evidence: `app/courses/page.tsx`)
- Learner → Lesson learning: studies lessons
- Staff → Cohort management: manages cohorts
- Staff → Curriculum editor: edits curriculum
- Learner → Certificates: views awards
- Learner → Premium communities: participates
- Learner → Direct messaging: messages peers
- Direct messaging → Mentor bookings: opens bookings (evidence: `app/chat/page.tsx`)
- Learner → Voice video calls: places calls
- Voice video calls → API client: signals calls (evidence: `components/calls/CallManager.tsx`)
- Learner → Mentor bookings: books mentors
- Staff → Admin analytics: reviews analytics
- Staff → Reports: exports reports
- Staff → Platform settings: configures platform
- API client → Express API: sends requests
- Enrollment routes → Enrollment controller: dispatches requests (evidence: `server/src/routes/enrollments.routes.ts`)
- Enrollment controller → Enrollment service: invokes operations (evidence: `server/src/controllers/enrollment.controller.ts`)
- Enrollment service → PostgreSQL data: reads and writes (evidence: `server/src/services/enrollment.service.ts`)
- Enrollment service → Notifications: notifies user (evidence: `server/src/services/enrollment.service.ts`)
