Gil Alves
Fullstack Developer
Cidade Conectada
Lançamento | 2022 |
Atribuições | Front-end, |
Tecnologias | Next, React, Typescript, Bootstrap, styled-components, Formik, Chart.js, |
Com o objetivo de unificar os serviços públicos, o projeto permite que cidadãos e prefeitura gerenciem solicitações de maneira eficiente. Por meio de um CMS os usuários podem acompanhar o andamento de suas solicitações de forma simples e intuitiva.
Aplicação
Este projeto foi o que mais me envolvi até agora e no qual tive mais responsabilidades. Participei desde a concepção até a responsabilidade pelo deploy e manutenção. Fui responsável por uma das visões da aplicação, que é o frontend reativo do CMS, onde os usuários administradores podem lidar com as solicitações dos cidadãos. Havia outra visão que era o aplicativo, onde os cidadãos podiam manter esse contato direto com a prefeitura.
Há muitos módulos (mais de 20), um para cada serviço, com listagem, criação, edição e exclusão no contexto de cada módulo, integrado por meio de REST API produzidos pelo time de backend.
Como é um projeto reservado não vou ter como mostrar imagens nem links.
Desafio
O maior desafio foi prazo, que era de apenas 20 dias para o MVP, mas conseguimos entregá-lo funcionando como esperado, sem perca de qualidade. Além disso tive que me preocupar em tomar boas escolhas porque tinha um objetivo secundário de criar uma base reutilizável para outros projetos.
Desenvolvido
- Autenticação do usuário usando cookie http-only e gestão de permissões e grupos baseados em cada usuário pelo token foram um dos maiores desafios enfrentados durante o desenvolvimento.
- Cada módulo do projeto possuía sua própria permissão para visualizar, criar, editar e excluir, o que tornou necessário criar um sistema de validação robusto.
- Para isso, foi criado um react hook para validação, que permitia ou não renderizar o elemento ou ação, dependendo das permissões do usuário.
- Além disso, foi implementado um middleware nas páginas, que só permitia o acesso a algumas delas se houvesse um token válido ou de um grupo de permissão. Essa abordagem facilitou a validação de usuário logado automaticamente caso novos módulos fossem criados no futuro, o que aumentou a escalabilidade do projeto.
- Programação DRY (Don't repeat yourself) na prática.
- Alguns components mais complexos feitos "na mão" (Paginação, Select, ...) evitando qualquer dependência de código externo para soluções muito especificas do projeto.
Desfecho e melhorias
Atualmente estou fora do projeto, mas no periodo final fiquei focado em manutenção e melhoria continua, inclusive com a implementação de testes E2E para os módulos mais criticos.