Participe+

Participe, opine e transforme sua cidade!
Aqui você tem voz ativa!

Saiba mais

Contextos e Objetivos do projeto

O projeto surgiu a partir da identificação de limitações no site Brasil Participativo, uma iniciativa importante que visa dar voz à população na criação de regulações, leis e políticas públicas.

Alguns objetivos que adotamos ao escolhermos esse projeto:

  • Melhorar a visualização e a navegação das informações do Brasil Participativo, oferecendo uma experiência mais fluida e acessível no mobile.
  • Aumentar o engajamento popular, utilizando estratégias de gamificação para tornar a participação mais atrativa e interativa.
  • Organizar e agrupar informações similares, por meio de técnicas de clusterização, facilitando a compreensão do conteúdo e reduzindo redundâncias.

Esses objetivos buscam potencializar o alcance e a efetividade da plataforma Brasil Participativo, ampliando sua usabilidade e impacto social.

Quais problemas o aplicativo visou resolver?

Apesar de sua proposta relevante, o site atualmente só funciona em computadores e apresenta diversos desafios de usabilidade: as informações são pouco explicadas, mal organizadas e muitas vezes, difíceis de navegar, especialmente para usuários não familiarizados com plataformas digitais mais complexas.

Nosso software resolve esse problema ao transformar a experiência do Brasil Participativo em uma plataforma mobile acessível, organizada e amigável. Além de tornar o acesso universal por meio de smartphones, o aplicativo clusteriza e estrutura melhor as informações, permitindo uma navegação clara, compreensível e centrada no usuário.

O que foi entregue nesta release

  • Backend completo e robusto, com API REST desenvolvida em Django DRF, totalmente dockerizada e integrada à base de dados PostgreSQL.
  • Frontend mobile funcional com React Native, focado em retenção e usabilidade, garantindo uma experiência intuitiva e acessível para o usuário final.
  • Integração total entre frontend, backend e base de dados, permitindo o funcionamento fluido do aplicativo em tempo real.
  • Deploy completo na nuvem AWS, com geração de APK funcional para testes e distribuição.
  • Agrupamento automático de dados semelhantes, com base em técnicas de clusterização e embeddings semânticos, otimizando a visualização das propostas no app.

Essas entregas representam um marco importante no projeto, pois consolidam a base técnica e funcional do produto, já em condições de ser testado com usuários reais.

O que mudou em relação ao release anterior

Desde a primeira release, houve uma transformação profunda em todas as frentes do projeto. Inicialmente, trabalhávamos com um webscraper simples e protótipos de UX/UI, focando apenas na extração e visualização inicial de dados. Nesta segunda release, mudamos completamente os frameworks e a arquitetura, passando a contar com um frontend e backend totalmente funcionais, integrados e prontos para uso real.

Implementamos um aplicativo mobile completo com React Native, criamos uma API robusta com Django DRF, estruturamos o ambiente com Docker e Docker Compose, e realizamos deploy em nuvem com geração de APK. Além disso, os dados deixaram de ser tratados de forma isolada e bruta: agora estão organizados e agrupados com técnicas de machine learning, como embeddings semânticos e clusterização.

Em resumo, saímos de uma ideia inicial para uma solução concreta, testável e escalável, pronta para atingir os usuários finais.

Desafios Técnicos Importantes Superados

  • A construção de um webscraper de alta complexidade, capaz de extrair dados estruturados de forma confiável;
  • Um frontend mobile com múltiplas telas, interações e responsividade elevada, exigindo atenção a performance e experiência do usuário;
  • Um backend escalável e banco de dados capazes de lidar com grandes volumes de informações.

No entanto, o maior desafio surgiu entre a 4ª e a 5ª sprint, quando percebemos que precisaríamos reconstruir toda a aplicação praticamente do zero, com uma nova arquitetura, novas tecnologias e um escopo mais robusto — tudo isso com menos de 8 sprints totais para entregar o MVP final.

Mesmo com o time enfrentando pressões acadêmicas, como provas simultâneas, conseguimos manter o compromisso de entregar o que foi prometido. Essa superação exigiu organização extrema, revezamento de responsabilidades e muito aprendizado em tempo real.

Práticas XP, Qualidade e Testes

  • Pair Programming foi amplamente utilizado, com os membros da equipe trabalhando em duplas para trocar ideias e revisar o código em tempo real.
  • O código foi tratado de forma coletiva, com padrões de codificação definidos e propriedade compartilhada, o que favoreceu a colaboração e facilitou a manutenção do sistema.
  • Na verificação de qualidade, usamos ferramentas como pylint (para Python) e eslint (para JavaScript), além da integração posterior do SonarQube, que analisou o repositório em busca de duplicações, problemas de segurança e cobertura de código.
  • Reconhecemos que não conseguimos implementar todas as práticas ideais de qualidade e testes automatizados, principalmente por conta da alta carga de trabalho, prazos curtos e provas universitárias coincidentes. No entanto, dentro do possível, nos esforçamos ao máximo para aplicar práticas de qualidade, sempre buscando equilíbrio entre entrega funcional e manutenção da base de código.

Pipeline de Integração e Entrega (CI/CD)

Durante o desenvolvimento, mantivemos o projeto em um repositório Git no GitHub, com uma organização por branches (main, dev e outras específicas por funcionalidade). Os membros da equipe faziam commits frequentes, e a integração de código acontecia via Pull Requests com revisão entre pares, o que garantiu um bom controle de qualidade colaborativa.

Como parte do processo de verificação antes do merge, utilizamos ferramentas de análise estática de código, como pylint e eslint, além da análise do SonarQube, que identificava problemas de estilo, segurança e duplicação.

Embora não tenhamos automatizado totalmente o processo de deploy (CD), seguimos um fluxo bem definido com critérios de validação antes de cada entrega, o que garantiu segurança e previsibilidade nas versões entregues.

Também disponibilizamos um README completo, com instruções claras para rodar o projeto localmente, o que facilitou o trabalho em equipe mesmo com a falta de tempo para montar uma infraestrutura CI/CD mais robusta.

Métricas de Evolução (Produtividade)

  • ≈ 300 commits realizados, demonstrando trabalho contínuo e progressivo na base de código.
  • 65 issues resolvidas, envolvendo tarefas técnicas, correções e melhorias organizadas de forma estruturada.
  • Mais de 20 pull requests abertos e revisados entre os membros da equipe, garantindo integração consciente e segura do código.

Esses números refletem um time comprometido com a entrega e com a qualidade, mesmo sob pressão de tempo e alta complexidade técnica.

Lições Técnicas e de Trabalho em Equipe

Durante o desenvolvimento do projeto, tivemos um aprendizado profundo e diversificado em diversas áreas. Cada integrante teve a oportunidade de explorar stacks diferentes da sua especialidade — aprendendo mais sobre backend, frontend, web scraping, machine learning e também ferramentas como Docker e novos frameworks.

No entanto, os maiores aprendizados foram humanos e organizacionais. Evoluímos muito na gestão do tempo, no comprometimento individual, na comunicação clara entre a equipe e na colaboração ativa para superarmos os desafios, especialmente sob prazos curtos e responsabilidades acadêmicas simultâneas.

Além disso, o projeto nos aproximou como grupo e como amigos, criando um ambiente de parceria, confiança e crescimento coletivo que certamente levaremos para outros contextos da vida profissional.