Desenvolvedor Mobile Senior
Descrição da Vaga
Dart + Flutter: desenvolvimento de aplicações utilizando Dart e Flutter, incluindo widgets (Stateless e Stateful), construção de layouts responsivos, gerenciamento de temas, animações e otimização básica de performance.
Arquitetura e padrões: aplicação de Clean Architecture (arquitetura em camadas), princípios SOLID, organização do projeto por features, padrões de interface como MVVM ou MVI e gerenciamento de dependências (Dependency Injection - DI).
Gerenciamento de estado: experiência com BLoC/Cubit, Provider ou Riverpod (conforme padrão do time), incluindo tratamento de side effects e utilização de conceitos de imutabilidade.
Integração com APIs: consumo de APIs REST utilizando JSON, implementação de interceptors, paginação, retries, timeouts, tratamento padronizado de erros e integração com especificações OpenAPI, quando disponível.
Autenticação e segurança: implementação de OAuth2, OpenID Connect (OIDC) e JWT, armazenamento seguro de credenciais utilizando Keychain/Keystore por meio do Secure Storage, proteção de dados sensíveis e aplicação das boas práticas OWASP Mobile.
Persistência local e cache: utilização de SQLite (sqflite), Hive e SharedPreferences, implementação de estratégias offline-first quando aplicável, sincronização de dados e gerenciamento de cache com TTL.
Testes automatizados: desenvolvimento de testes unitários (Dart Test), Widget Tests, Integration Tests, utilização de mocks com Mocktail ou Mockito e Golden Tests, quando aplicável.
Qualidade e build: utilização do Flutter Analyze e lints, formatação de código com Dart Format, acompanhamento de cobertura de testes, controle de versões, padrões de commit e organização do repositório.
CI/CD Mobile: implementação e manutenção de pipelines utilizando GitHub Actions ou Jenkins, gerenciamento de versionamento (build number), assinatura de aplicações, distribuição via Firebase App Distribution, TestFlight ou Play Console e automação de releases.
Observabilidade: implementação de logs estruturados, monitoramento com Crashlytics, acompanhamento de métricas básicas como tempo de renderização e startup, monitoramento de erros e rastreamento de eventos.
Plataformas e integração nativa: conhecimentos em iOS e Android, incluindo permissões, ciclo de vida da aplicação (lifecycle), execução em background/foreground, Platform Channels e Push Notifications utilizando Firebase Cloud Messaging (FCM).
UI/UX e acessibilidade: desenvolvimento baseado em Design System, criação de componentes reutilizáveis, implementação de acessibilidade utilizando Semantics, internacionalização (i18n) e suporte a diferentes densidades e tamanhos de tela.