# Learning

The `Learning` directory contains all modules and components for managing the learning experience in **Humand**.
2

### Folder Structure

```
Learning/
├── common/           # Shared components, hooks, types, and utilities
├── Courses/          # Courses module
├── Paths/            # Paths module
├── Sessions/         # Sessions module
├── Settings/         # Settings module
└── README.md
```

## Modules

### 1. Courses (`/Courses`)

The **Courses** module handles the creation and management of learning courses. A course is composed of modules, and each module contains tasks (lessons).

**Key Features:**

- Create, edit, duplicate, and delete courses
- Organize content into modules and tasks
- Support for multiple task types:
  - **Video** - External/internal video content
  - **Reading** - PDF or manual text content
  - **Questionnaire** - Evaluations with multiple question types
  - **SCORM** - SCORM-compliant packages
  - **Lesson** - Rich text content
- Course categorization
- Audience segmentation
- Progress tracking and reporting
- Certificate issuance
- Digital signature support
- Satisfaction surveys

**Main Routes:**

- `/List` - Course listing and metrics
- `/New` - Course creation wizard
- `/Report` - Course analytics and user progress

---

### 2. Paths (`/Paths`)

The **Paths** module manages learning paths, which are curated sequences of courses that guide users through a structured learning journey.

**Key Features:**

- Create and manage learning paths
- Add multiple courses to a path
- Sequential or non-sequential course completion
- Due date configuration (fixed or custom periods)
- Mandatory/optional path settings
- Push notifications
- Certificate issuance upon path completion
- Participation tracking

**Main Routes:**

- `/List` - Path listing with statistics
- `/New` - Path creation wizard with step-by-step configuration

**Path Steps:**

1. Basic Information (title, description, cover image)
2. Configuration (obligatory, sequential, notifications, certificates)
3. Content (course selection and ordering)
4. Segmentation (audience targeting)
5. Revision (used to review the data before submit)

---

### 3. Sessions (`/Sessions`)

The **Sessions** module handles live learning sessions, which can be virtual (online meetings) or presential (in-person events).

**Key Features:**

- Create and manage learning sessions
- Support for session types:
  - **Virtual** - Online sessions with meeting links
  - **Presential** - In-person sessions with physical addresses
- Date and time scheduling with timezone support
- Attendance tracking and management
- Session statistics and reporting
- Tutorial/onboarding for new users
- Push notifications

**Main Routes:**

- `/List` - Session listing with stats
- `/New` - Session creation wizard
- `/ManageAttendance` - Attendance tracking with charts and user management

**Session Steps:**

1. Basic Information (title, description, cover picture, date/time)
2. Configuration (type, location/link, collaborator, notifications)
3. Segmentation (audience targeting)

---

### 4. Settings (`/Settings`)

Learning-specific settings and configuration:

- **Categories** - Manage course categories and subcategories
- **Home** - Settings dashboard

---

## Technical debt

1. Choose one table pattern and migrate tables from (paths, courses, sessions)

- Explanation: Currently we have 3 core table on **Learning** modules. (Courses,paths,sessions).
  Every table have their own design, business logic, loading states, empty states, etc.
  It could be a good idea simplify this tables and have only one core concept to use on the learning module tables.
  Doing this we unify the way to show the data and the dev experience is better since we only have to deal with one concept. Also we can reduce code lines creating shared components, etc.
