# Corsi

> Corsi con moduli e lezioni di testo, immagine, video o link, iscrizione e avanzamento per lezione. La struttura esiste nell'API e la schermata dei corsi dell'app è in fase di completamento. Come costruirli oggi e come venderli.

Il modulo **Corsi** organizza l'apprendimento su tre livelli:

<div class="flow">
<div class="flow-row"><span class="flow-node">Spazio Corsi</span><span class="flow-arrow">→</span><span class="flow-node">Corso</span><span class="flow-arrow">→</span><span class="flow-node">Modulo</span><span class="flow-arrow">→</span><span class="flow-node">Lezione (testo, immagine, video o link)</span></div>
</div>

Il membro si iscrive al corso, segue le lezioni in ordine, e l'avanzamento di ogni lezione viene registrato.

> [!SOON]
> La schermata dei corsi dell'app mostra ancora un contenuto di esempio, e non i corsi della tua community. Creare, modificare e seguire i corsi dall'interfaccia arriverà con il completamento di questo modulo. Fino ad allora, la struttura si crea tramite API, come mostra questo articolo.

## A cosa serve

| Community | Corso |
|---|---|
| Scuola online | *Excel da zero*: 6 moduli, 30 lezioni video |
| Risorse umane aziendali | *Onboarding*: 3 moduli con le policy aziendali |
| Mentoring | *Percorso del mentee*: un modulo al mese |

## Come funziona

### Il corso

| Campo | A cosa serve |
|---|---|
| Titolo e slug | Il nome e l'indirizzo del corso |
| Descrizione | Cosa si impara |
| Livello | Principiante, intermedio o avanzato |
| Immagine | La copertina |
| Stato | Nasce come **bozza**; una volta pubblicato, accetta iscrizioni |

### Moduli e lezioni

Ogni corso ha moduli, in ordine, e ogni modulo ha lezioni, in ordine. La lezione è di un tipo: **testo**, **immagine**, **video** o **link**, con la durata.

### Iscrizione e avanzamento

Il membro si iscrive a un corso **pubblicato** (*"This course is not available for enrollment yet."* per una bozza) e segna l'avanzamento di ogni lezione. Iscriversi e completare lezioni dà punti nella [classifica](/espacos/ranking): 10 punti per l'iscrizione, 25 per ogni lezione completata.

### Chi può

| Azione | Chi |
|---|---|
| Creare lo spazio Corsi | Proprietario e admin |
| Creare e modificare corso, moduli e lezioni | Proprietario e admin |
| Iscriversi e seguire le lezioni | Chi vede lo spazio (e il corso pubblicato) |

## Passo dopo passo (oggi, tramite API)

*Ruolo: proprietario o admin.*

1. Crea lo spazio: **Aggiungi Spazio › Corsi**, con la visibilità di chi può seguire il corso.
2. Crea il corso: `POST /api/courses` con `communityId`, `spaceId`, `title`, `slug` e `level`. Conserva l'`id`.
3. Crea ogni modulo: `POST /api/courses/module` con `courseId` e `title`.
4. Crea ogni lezione: `POST /api/courses/lesson` con `moduleId`, `title` e `type`.
5. Pubblica: `PUT /api/courses/{id}` con `status: "published"`.

La sequenza completa, con gli id che passano da un passaggio all'altro e gli errori di chi salta un passaggio, è in [Ordine di creazione](/api/ordem-de-criacao#corso).

## Vendere il corso

| Modello | Come |
|---|---|
| Corso singolo | Un [prodotto](/monetizacao/produtos) che sblocca lo spazio del corso (**Privata** › **Prodotti**) |
| Corso incluso nell'abbonamento | Lo spazio del corso **Privata** sbloccato per il [piano](/monetizacao/planos), oppure **Abbonati** |
| Corso gratuito per i membri | Lo spazio come **Membri** |

## Limiti attuali

- Non c'è un **certificato** di completamento.
- Non c'è un **esame** con punteggio minimo.
- Non c'è un **rilascio programmato** (drip): l'accesso dipende dallo spazio, non dalla data di ingresso di ciascuno.

## Domande frequenti

**Dove stanno i video?**
La lezione video punta al video; c'è anche il caricamento dei video tramite API (`POST /api/upload/content/video`).

**Posso avere più corsi in uno spazio?**
Sì. Uno spazio Corsi è una vetrina di corsi.

**Il membro vede il corso nel Feed?**
Sì, come gli altri elementi, se ha accesso allo spazio.

## Nell'API

`POST /api/courses`, `POST /api/courses/module`, `POST /api/courses/lesson`, `PUT /api/courses/{id}`, `PUT` e `DELETE /api/courses/module/{moduleId}` (rinominare, riordinare, eliminare un modulo con le sue lezioni), `PUT` e `DELETE /api/courses/lesson/{lessonId}` (modificare, riordinare, spostare di modulo, eliminare una lezione), `POST /api/courses/{courseId}/enroll`, `POST /api/courses/{courseId}/lesson/{lessonId}/progress`. Vedi [Courses](/api/referencia/courses).

## Correlati

- [Ordine di creazione](/api/ordem-de-criacao)
- [Prodotti](/monetizacao/produtos)
- [Moduli](/conceitos/modulos)
