# Módulo 2 - JavaScript moderno

## Identificação

- **Status:** concluído
- **Nível:** iniciante
- **Carga horária:** 16 horas
- **Formato sugerido:** 8 aulas de 2 horas
- **Projeto:** painel de tarefas e métricas no navegador

## Propósito

Este módulo aprofunda a linguagem JavaScript antes da adoção de frameworks. O aluno aprenderá a representar dados, tomar decisões, criar funções, transformar coleções, organizar módulos e consumir APIs de maneira assíncrona.

## Competências

Ao final do módulo, o aluno será capaz de:

- escolher tipos adequados para representar informações;
- escrever expressões previsíveis;
- tomar decisões e repetir operações;
- criar funções pequenas e reutilizáveis;
- transformar arrays sem alterar dados indevidamente;
- modelar entidades com objetos;
- converter dados para JSON;
- organizar código em módulos;
- tratar erros;
- trabalhar com promises e `async/await`;
- consumir APIs;
- armazenar preferências não sensíveis;
- testar regras da aplicação.

## Sequência de aulas

| Aula | Tema | Produto da aula |
|---|---|---|
| [2.1](renderizadas/aula-01.html) | Valores, variáveis, tipos e operadores | Explorador interativo de tipos |
| [2.2](renderizadas/aula-02.html) | Condições e repetições | Classificador de tarefas |
| [2.3](renderizadas/aula-03.html) | Funções, escopo e closures | Biblioteca de regras |
| [2.4](renderizadas/aula-04.html) | Arrays e transformação de dados | Painel de métricas |
| [2.5](renderizadas/aula-05.html) | Objetos, JSON e modelagem | Modelo de tarefas |
| [2.6](renderizadas/aula-06.html) | Módulos e tratamento de erros | Aplicação modular |
| [2.7](renderizadas/aula-07.html) | Promises, `async/await` e Fetch | Consumo de API |
| [2.8](renderizadas/aula-08.html) | Armazenamento, testes e projeto | Painel de tarefas final |

## Projeto do módulo

O aluno criará um painel de tarefas que:

- cadastra tarefas;
- classifica prioridade;
- filtra e ordena;
- calcula métricas;
- importa e exporta JSON;
- consulta dados de uma API;
- salva apenas preferências não sensíveis;
- apresenta estados de carregamento, vazio e erro;
- possui regras testáveis.

## Avaliação

| Critério | Pontos |
|---|---:|
| Representação e validação de dados | 20 |
| Funções e organização | 20 |
| Arrays e objetos | 20 |
| Assincronismo e erros | 15 |
| Interface e acessibilidade | 10 |
| Testes | 10 |
| Documentação | 5 |
| **Total** | **100** |

## Critérios de conclusão

- obter pelo menos 70 pontos;
- entregar o painel funcionando;
- explicar as principais conversões de tipo;
- não utilizar `eval`;
- tratar falhas assíncronas;
- apresentar testes para regras essenciais;
- não armazenar informações sensíveis no navegador.
