Projeto Cuidando do Meu Bairro/sandbox
Buscando ampliar a chance de reuso do código desenvolvido e permitir um nível maior de interação com outros aplicativos, o projeto seguiu uma arquitetura de micro serviços. Ou seja, ao invés de ter um único código monolítico que implementasse todas as funcionalidades desejadas, elas foram distribuídas em pequenos módulos, cada um com uma funcionalidade específica:
- provimento de dados orçamentários
- sistema de comentários
- pedidos de informação
- autenticação
Cada um desses módulos está desenvolvido em Python (framework Flask) e pode ser acessado por qualquer pessoa através de uma API REST. O site do Cuidando do Meu Bairro, desenvolvido em JavaScript, se torna então um cliente dessas APIs, usando-as para obter e guardar as informações desejadas. A arquitetura utilizada permite que ele não seja o único a fazer isso. Outros aplicativos podem ser desenvolvidos para utilizar as mesmas APIs, possivelmente interagindo com o próprio Cuidando do Meu Bairro, e criando assim uma comunidade de aplicativos que se comunicam, compartilhando a mesma base de usuários, comentários, dados orçamentários e pedidos de informação.
Todos os módulos utilizados, incluindo o próprio site do Cuidando do Meu Bairro, são software livre.
Como os dados que pegamos da prefeitura não têm as latitudes e longitudes de cada despesa (no máximo algumas tem a região a que se destinam), tentamos mapeá-las procurando automaticamente por endereços nos textos das descrições dessas despesas, utilizando expressões regulares. Uma vez extraídos esses endereços usamos serviços como Open Street Maps ou Google Maps para obter suas possíveis latitudes e longitudes e então, finalmente, colocá-los em um mapa. Porém, esse processo não é perfeito, e a maioria das despesas não são mapeadas.
Os dados da prefeitura são baixados, padronizados, geolocalizados e inseridos no banco de dados diariamente, através de um processo automático, buscando exibir no Cuidando do Meu Bairro sempre a versão mas atual dos mesmos.