# Cursos

> Cursos com módulos e aulas em texto, imagem, vídeo ou link, matrícula e progresso por aula. A estrutura existe na API e a tela de cursos do app está sendo concluída. Como montar hoje e como vender.

O módulo **Cursos** organiza o aprendizado em três níveis:

<div class="flow">
<div class="flow-row"><span class="flow-node">Espaço de Cursos</span><span class="flow-arrow">→</span><span class="flow-node">Curso</span><span class="flow-arrow">→</span><span class="flow-node">Módulo</span><span class="flow-arrow">→</span><span class="flow-node">Aula (texto, imagem, vídeo ou link)</span></div>
</div>

O membro se matricula no curso, assiste às aulas na ordem, e o progresso de cada aula fica registrado.

> [!SOON]
> A tela de cursos do app ainda mostra um conteúdo de exemplo, e não os cursos da sua comunidade. Criar, editar e acompanhar cursos pela tela chega com a conclusão desse módulo. Até lá, a estrutura é criada pela API, como mostra este artigo.

## Para que serve

| Comunidade | Curso |
|---|---|
| Escola online | *Excel do zero*: 6 módulos, 30 aulas em vídeo |
| RH de empresa | *Onboarding*: 3 módulos com as políticas da empresa |
| Mentoria | *Trilha do mentorado*: um módulo por mês |

## Como funciona

### O curso

| Campo | Para quê |
|---|---|
| Título e slug | O nome e o endereço do curso |
| Descrição | O que se aprende |
| Nível | Iniciante, intermediário ou avançado |
| Imagem | A capa |
| Status | Nasce como **rascunho**; publicado, aceita matrícula |

### Módulos e aulas

Cada curso tem módulos, em ordem, e cada módulo tem aulas, em ordem. A aula é de um tipo: **texto**, **imagem**, **vídeo** ou **link**, com a duração.

### Matrícula e progresso

O membro se matricula num curso **publicado** (*"This course is not available for enrollment yet."* num rascunho) e marca o progresso de cada aula. Matricular-se e completar aulas dá pontos no [ranking](/espacos/ranking): 10 pontos pela matrícula, 25 por aula completa.

### Quem pode

| Ação | Quem |
|---|---|
| Criar o espaço de Cursos | Proprietário e administrador |
| Criar e editar curso, módulos e aulas | Proprietário e administrador |
| Matricular-se e fazer as aulas | Quem vê o espaço (e o curso publicado) |

## Passo a passo (hoje, pela API)

*Papel: proprietário ou administrador.*

1. Crie o espaço: **Adicionar Espaço › Cursos**, com a visibilidade de quem pode fazer o curso.
2. Crie o curso: `POST /api/courses` com `communityId`, `spaceId`, `title`, `slug` e `level`. Guarde o `id`.
3. Crie cada módulo: `POST /api/courses/module` com `courseId` e `title`.
4. Crie cada aula: `POST /api/courses/lesson` com `moduleId`, `title` e `type`.
5. Publique: `PUT /api/courses/{id}` com `status: "published"`.

A sequência completa, com os ids que passam de um passo para o outro e os erros de quem pula um passo, está em [Ordem de criação](/api/ordem-de-criacao#curso).

## Vender o curso

| Modelo | Como |
|---|---|
| Curso avulso | Um [produto](/monetizacao/produtos) que libera o espaço do curso (**Privada** › **Produtos**) |
| Curso dentro da assinatura | O espaço do curso **Privada** liberado para o [plano](/monetizacao/planos), ou **Assinantes** |
| Curso gratuito para membros | O espaço como **Membros** |

## Limites de hoje

- Não há **certificado** de conclusão.
- Não há **prova** com nota mínima.
- Não há **liberação programada** (drip): o acesso é pelo espaço, não pela data de entrada de cada pessoa.

## Perguntas frequentes

**Onde ficam os vídeos?**
A aula de vídeo aponta para o vídeo; há também o envio de vídeo pela API (`POST /api/upload/content/video`).

**Posso ter vários cursos num espaço?**
Sim. Um espaço de Cursos é uma vitrine de cursos.

**O membro vê o curso no Feed?**
Sim, como os outros itens, se tiver acesso ao espaço.

## Na API

`POST /api/courses`, `POST /api/courses/module`, `POST /api/courses/lesson`, `PUT /api/courses/{id}`, `PUT` e `DELETE /api/courses/module/{moduleId}` (renomear, reordenar, excluir um módulo com as aulas), `PUT` e `DELETE /api/courses/lesson/{lessonId}` (editar, reordenar, mover de módulo, excluir uma aula), `POST /api/courses/{courseId}/enroll`, `POST /api/courses/{courseId}/lesson/{lessonId}/progress`. Ver [Courses](/api/referencia/courses).

## Relacionados

- [Ordem de criação](/api/ordem-de-criacao)
- [Produtos](/monetizacao/produtos)
- [Módulos](/conceitos/modulos)
