Você deverá criar um pequeno sistema georreferenciado para visualização e cadastramento de ocorrências policiais. Estas deverão ser categorizadas conforme indicação abaixo e receberão iconografia que permita ao Usuário distinguir visualmente sua natureza.
A visão inicial do sistema oferecerá dois painéis: à direita, um mapa da cidade do Rio de Janeiro em nível de zoom que abranja todo o município; à esquerda, à guisa de sidebar, uma lista de ocorrências pertinentes à área de visualização atual.
À medida que o Usuário navegar pela interface de mapa, a lista à esquerda será atualizada para conter apenas as ocorrências na nova área de visualização (isto é, se mais próximo da escala mínima, um número menor de ocorrências surgirá; se mais afastado, maior.) Estas deverão ser ordenadas por sua data e hora de registro.
O Usuário poderá a qualquer momento escolher um ponto do mapa para registrar uma nova ocorrência. Esta deverá contemplar os seguintes aspectos:
- Tipo
- Acidente de Trânsito Sem Vítima
- Furto
- Pessoa Desaparecida
- Data do Fato
- Hora Aproximada (em Janelas de 1h)
- De 08:00 às 08:59
- De 09:00 às 09:59
- ...
- Declarante
- Nome
- Endereço
- Rua, Av., Estrada...
- Número
- Complemento
- CEP
- Naturalidade
- Telefone
- Detalhes (campo textual)
Ao cadastrar uma nova ocorrência, esta deverá surgir, naturalmente, na listagem na sidebar à esquerda na primeira posição.
Ao clicar em qualquer uma das ocorrências na sidebar à esquerda, um popup indicando o tipo, data, hora aproximada e nome do declarante deverá surgir no mapa. O mesmo vale para os cliques diretamente nos pontos indicando os locais de ocorrência.
- Banco de dados espacial (preferencialmente spatialite, para facilitar a avaliação)
- Dados georreferenciados no datum WGS84, sistema de coordenadas geográfico
- Mapas via Leaflet.js
- Rails 3.2
- Seed com várias ocorrências de cada tipo distribuidas aleatoriamente na bounding box do município do Rio de Janeiro
- Testes unitários (pontos de bônus se abrangerem também o código em JavaScript)
A seu critério:
- Uso de biblioteca MV* (Backbone, Angular.JS, Ember, SproutCore, Cappuccino, Spine, ExtJS...)
- Biblioteca de testes
- Fluxos de interface, iconografia, tipografia, cores
Se você sentiu que consegue fazer, envie um email para [email protected] indicando seu aceite. Você terá cinco dias úteis a partir da manifestação de interesse para enviar sua solução com um link para um repositório público no GitHub ou bitbucket. Sua solução deverá acompanhar um README indicando quaisquer passos necessários para fazê-la rodar (dependências de sistema, setup de BD).
Após a entrega, marcaremos uma conversa com você para discutir sua visão do problema e dar feedback mesmo que você não seja nossa escolha (caso seja de seu interesse).
Boa sorte!