# Front-end Angular ## Nivel 1 - [ ] **JavaScript - Fundamentos**: - Conhecer os tipos primitivos - Declarar variáveis, considerando a diferença entre 'var', 'let' e 'const' - Usar estruturas condicionais ('if', 'else') - Conhecer os operadores de comparação ('=', '==', '===') - Usar estruturas de repetição e laços ('while', 'for') - Usar funções, passando parâmetros e argumentos - Manipular arrays e listas - Aprender o conceito de Orientação a Objetos - Fazer um CRUD - Obter dados de uma API - Fazer chamadas assíncronas usando 'Async/Await', 'Promise', etc - [ ] **TypeScript - Fundamentos**: - Entender a fundo o que são tipos e a importância da tipagem - Aprender o que é o TypeScript, por que foi criado, como ele funciona e sua relação com o JavaScript - Conhecer as ferramentas do TypeScript (integração com o editor de código, verificador estático e compilador) - Escrever código em TypeScript com suas ferramentas (interfaces, enum, decorators, etc) - Desenvolver aplicações em TypeScript - [ ] **RxJS - Fundamentos**: - Criar programas assíncronos - Criar programas baseados em eventos - Entender o conceito de observables e sequências de observables - Entender como usar Observers, Subscription, Subject - [ ] **Angular - Fundamentos**: - Construir interfaces utilizando HTML, CSS e TypeScript - Criar aplicações SPA - Construir aplicações web, mobile ou desktop - Integrar dados com API’s REST - Utilizar a composição para criar componentes reutilizáveis - Utilizar serviços do tipo Resolver - Manipular requisições criando serviços do tipo Interceptor - [ ] **O Pattern Observer**: - Entender o que são Design Patterns - Atualizar diversos elementos simultaneamente - Declarar os Subjects - Criar programas baseados em eventos ## Nivel 2 - [ ] **Angular - Templates**: - Como usar os templates - [ ] **Angular - Renderização**: - Exibir uma página Angular no navegador - Realizar renderização no lado do servidor - [ ] **Angular - Services**: - Criar dados que estarão sempre disponíveis - Dividir a aplicação web em diversas partes - [ ] **Angular - Roteamento**: - Navegar até um componente - Incluir um parâmetro de rota - Controlar o fluxo de navegação do seu usuário com guarda de rotas - [ ] **Angular - CLI (Interface de Linha de Comando)**: - Inicializar, desenvolver e manter aplicações Angular a partir da interface de linha de comando ## Nivel 3 - [ ] **Angular - Gerenciamento de Estado**: - Atualizar componentes em tempo real - Esperar por alterações em algum componente e executar alterações - [ ] **Angular - Formulários**: - Criar formulários com Template Forms - Criar formulários com reativos com Reactive Forms - [ ] **Angular - Módulos**: - Registrar componentes - Declarar quais componentes podem ser usados por componentes de outros módulos - Declarar quais services serão injetados - Aprender a modularizar uma aplicação - [ ] **Angular - Injeção de Dependências**: - Declarar as dependências de suas classes - Injetar dependências em um componente - [ ] **Angular - Testes**: - Usar testes unitários - Usar testes de integração - Usar testes de comportamento (behavior) - Usar mocks - [ ] **GraphQL**: - Aprender o que é GraphQL e por que foi criado - Entender como o GraphQL é utilizado no desenvolvimento de APIs - Criar APIs utilizando as bibliotecas e frameworks para GraphQL - [ ] **Apollo Client**: - Utilizar o Apollo para criar um servidor GraphQL - Conectar com uma API ## Habilidade Auxiliar: Infraestrutura e Back-end - [ ] **Design Systems**: - Criar e manter bibliotecas que serão consumidas e usadas como padrão para a construção de um projeto - [ ] **Figma - Fundamentos**: - Criar layouts de páginas e componentes - [ ] **Componentes de design**: - Conhecer os componentes descrevem um layout ou interface - [ ] **Sistemas de cores**: - Definir uma paleta de cores que faça sentido para determinada interface - [ ] **Como usar fontes**: - Escolher a fonte mais adequada para determinado projeto ## Habilidade Auxiliar: UX e Design - [ ] **Design Systems**: - Criar e manter bibliotecas que serão consumidas e usadas como padrão para a construção de um projeto - [ ] **Figma - Fundamentos**: - Criar layouts de páginas e componentes - [ ] **Componentes de design**: - Conhecer os componentes descrevem um layout ou interface - [ ] **Sistemas de cores**: - Definir uma paleta de cores que faça sentido para determinada interface - [ ] **Como usar fontes**: - Escolher a fonte mais adequada para determinado projeto