Giter Club home page Giter Club logo

bikedeboa's Introduction

Screenshot of webapp the main map view

bike de boa

bike de boa is an open and colaborative map of places to park your bike. It's focused on being super easy to use and also educative. With the app you can search for bike parkings nearby, and at the same time you learn if they are safe to use and why they are so.

We believe that the bicycle is the future of urban mobility, and that having better bike parkings is a great way of incentivating the bike culture in the cities. This project intends to push forward the discussion of what are good bike parkings, at the same time we collect data about the presence and evolution of this kind of structure in the cities of Brazil.

This project is a (Progressive) Web App, which means it loads and runs fast accross all platforms and device sizes, as well as is fully indexable by search engines.

Data

This web client consumes from an open API. It licensed under Creative Commons Attribution 4.0 International. It basically means you can use its data to build your own bike app, academic research, as however you want - as long as you give us credit. :)

If you're not a developer you can still easily access all of our data using our web dashboard at https://www.bikedeboa.com.br/dados. Visualize, search, filter and even download all of our data in several formats. Still not what you need? Let us know!

License: CC BY 4.0

Contributing

We have dozens of cool things we want to do, from small bugfixes to whole new features. Our tasks are all neatly documented in the Github Issues session (sorry, Portuguese only). Please let us know if you'd like to help us. Feel free to propose new stuff as well! :)

Contributing should be super easy even if you have very basic Front-end skills. The web client was developed with popular libraries like JQuery and Twitter Bootstra aiming to be the most accessible possible for developers of any skill level. Still, always feel free to reach to us if you have any questions.

Getting started

git clone https://github.com/bikedeboa.git
npm install
npm start

If you get errors make sure you have the Node version as specified in package.json. Pro tip: use nvm to easily manage multiple node versions on your machine.

License

The source code is available under a MIT License.


Contact

Come say hello to us! Let's chat about urban cycling, mobility, UX Design, apps, PWAs, etc.

EmailFacebookInstagramMedium

bikedeboa's People

Contributors

cmdalbem avatar dennerevaldt avatar gutobenn avatar henriquegeremia avatar raianandrades avatar raphaelkieling avatar tsaldanha avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bikedeboa's Issues

Galeria de fotos

Atualmente no nosso Guia não tem como navegar entre as fotos de uma sequencia de fotos. O usuário é obrigado a clicar na primeira foto, fechar, clicar na segunda, fechar, ...
A biblioteca que usamos pra ver a foto em fullscreen, a Featherlight, tem uma extensão pronta que aparentemente já resolve isso pra nós.
Link: https://github.com/noelboss/featherlight/#featherlight-gallery

image

image

Deeplink: mapa não inicializando na posição do bicicletário aberto

Quando um usuário chega no bike de boa por um deeplink, ou seja, um link de bicicletario (ex.: https://www.bikedeboa.com.br/b/1669-bicicletario-shopping-morumbi) o mapa por baixo deveria inicializar centralizado na posição daquele bicicletário. Em algum momento esse comportamento foi implementado, mas não está funcionando mais.

Exemplo de vídeo de usuário se deparando com esse problema (repare que o mapa por baixo está em Porto Alegre, apesar do bicicletário ser de São Paulo):
https://insights.hotjar.com/p?site=476334&recording=1123625919&token=1b9a30347e226fc9b93a7811b2bf0902

Trocar tags "mailto"?

Recebemos um feedback por email muito legal sobre não ser recomendado usar links "mailto" na Internet:

"
Quando pensei em fazer essa sugestão, procurei no site se indicava o melhor canal pra isso, achei no FAQ. Mas please não usem mailto e ainda mais sem o endereço de e-mail, quantas serão as pessoas que usam clientes desktop de e-mail ou sabem configurar links mailto para abrir com cliente web?
https://blog.seibert-media.com/2014/10/06/why-mailto-links-should-be-avoided-on-websites/
http://www.problogger.net/10-reasons-to-avoid-mailto-links/
Esses foram os primeiros resultados do Google por "why don't use mailto", devem ter referências melhores.
"

Extrair geolocalização das fotos (EXIF) para setar posição do bicicletário no mapa

Hoje em dia a maioria dos celulares podem gravar no arquivo da foto a posição de GPS de onde ela foi tirada. Se for fácil de ler esse dado, podemos abrir aqui uma nova maneira de entrar com bicicletários. Imagine uma nova forma de adicionar bicicletários "em massa", onde tu mandaria várias fotos pro bike de boa de uma vez e a gente criaria automaticamente os pins e daria uma forma simples pro usuário de entrar com os detalhes de cada um. Essa issue é pra começar a investigar se isso é possível.

https://stackoverflow.com/a/7585267/1088186
https://github.com/exif-js/exif-js

Importar ciclovias do OpenStreetMaps

Há muito discutimos a relevância de mostrar ciclovias no bike de boa. Há uma série de pontos positivos e negativos sobre isso, mas esse ticket não é pra discutir isso (ainda).

Um dos maiores pontos negativos de mostrar ciclovias no bike de boa é que não tínhamos dados confiáveis e atualizados das ciclovias ao redor do Brasil. Em Porto Alegre, por exemplo, os dados do Google Maps estão uns 3 anos no passado, e foi um parto conseguir dados oficiais com a prefeitura. Essa abordagem obviamente não é escalável pro Brasil inteiro.
Uma solução que surgiu então foi o OpenStreetMaps, onde os ciclistas de todo Brasil juntam seus esforços e conseguem de fato manter um mapeamento atualizado da estrutura cicloviária das cidades. MAS essa solução não é de toda-maravilhosa, porque simplesmente não há um cliente web decente pra visualizar esses dados. Diferentes apps e sites consomem esses dados de maneiras diferentes, e o usuário comum acaba não sabendo onde procurar isso.
Este ticket então é pra desenvolver algum tipo de integração com esse mapeamento e responder, dentre outras, essas perguntas:

  • Como ler os dados do OSM?
  • Como persistir esses dados?
    • salvar no nosso banco de dados?
    • puxar dinamicamente sempre de lá? (só se a resposta não for muito pesada)
    • puxar de lá E salvar no LocalStorage? (é um dado que se atualiza com pouca frequencia? poderia salvar um metadado dizendo qual foi a ultima vez que esse dado foi puxado, e só puxar denovo se fizer mais do que tipo 1 semana)
  • Como mostrar no mapa de maneira que seja:
    • intuitivo (não precisar de legendas no mapa)
    • útil
    • bonito (como tudo no bike de boa ❤️ )
  • De que outras maneiras podemos aproveitar esses dados? Talvez ele seja útil pra algo além de só traçar os caminhos no mapa e trazer essa informação pros usuários. Por exemplo: dar mais proeminência pra bicicletários próximos de ciclovias?

Melhorar SEO p/ Google

O crawler do Google está devidamente reconhecendo as diferentes páginas do site, mas não está carregando corretamente as metatags, como título e descrição.
Esse problema pode ser constatado fazendo uma busca filtrada por domínio: https://www.google.com.br/?q=site:www.bikedeboa.com.br
Além disso podemos fazer outras coisas pra melhorar o SEO dos bicicletários

  • mandar sitemap inicial pro Google Search Console
  • microformatos

Sistema de versão de release

Seria interessante a gente começar a taggear as releases em master e integrar isso com o front de alguma forma.
Alguns dos benefícios interessantes:

  • Mostrar na interface a versão do aplicativo que a pessoa tá usando, e de quando ela é (pras pessoas verem que estamos sempre melhorando ele)
  • Quando tiver uma versão nova com uma feature muito bacana, poderia ter algo no aplicativo que falasse sobre isso (release notes)
  • Tracker pelo Analytics quais versões as pessoas estão usando (provavelmente usando uma Custom Dimension, assim podemos cruzar dados de uso com qual versão a pessoa tava usando). Isso é importante porque usamos Service Workers com precache, o que acarreta que a pessoa na primeira vez que acessa ela está com a versão anteriormente baixada do app, e só na próxima visita estará atualizado com a última versão.

Inicializar mapa sempre contendo a posição do usuário + pelo menos um pin

Ideia

Acho que gera uma UX estranha quando o app abre centrado no usuário porém sem nenhum pin na tela. Talvez fosse interessante que a gente garantisse que no mapa sempre aparecesse o usuário + o pin mais próximo dele.
TALVEZ seja uma boa ideia que essa feature respeite um raio de distância máximo. Digamos que um usuário no meio da Amazônia abre o app, mas o bicicletário mais próximo é em Fortaleza. Isso faria o app abrir mostrando quase o mapa do Brasil inteiro, mas talvez isso não faria tanto sentido.

Implementação

Usando a estrutura de bounds e a função map.fitBounds() do Google Maps é fácil. Ele calcula automaticamente o bounding box entre os elementos que são inseridos no bound, e calcula qual é o ponto do mapa onde ele deve estar centrado e o zoom necessário pra fazer todos pontos ficarem visíveis.

Exemplos

Ruim

image

Melhor

image

Bug com feature de LatestPosition

Hoje abri o bike de boa aqui e aparecia como se minha ultima posição salva fosse lá em Porto Alegre! Provavelmente a ultima vez que entrei no site eu explorei aquela região, e algum bug no código misturou o centro do mapa com a posição do usuário e acabou salvando no localstorage aquela posição.

image

Internacionalização

Internacionalizar o site significa criar um sistema de mapeamento de textos que permitirá ter traduções pra várias línguas.

Sinalizar se a posição do usuário foi recuperada do LocalStorage e não foi atualizada ainda

Tava usando o Google Maps esses dias e reparei num comportamento interessante: o marcadorzinho de posição atual do usuário fica cinza enquanto ele não tem informações atualizadas sobre a posição.
Ou seja, provavelmente eles aplicam uma estratégia parecida com a nossa de lembrar onde o usuário estava da última vez, mas eles sinalizam de uma maneira sutil que essa informação pode não estar correta.
Acho que seria legal ter isso no bike de boa.

Offline Google Analytics

Importantíssimo pra quando tivermos o bike de boa funcionando offline. Há ferramentas prontas que fazem isso bem fácil.

Melhorar persistência do Login

Atualmente sempre autenticamos o login batendo com as APIs das redes sociais. Acho que não precisamos fazer isso. Poderíamos salvar todos dados do perfil do usuário no nosso banco de dados, e salvar um Cookie pra logar a pessoa automaticamente depois de ela já ter autenticado uma vez.
Pra tornar esse processo seguro acho que poderíamos salvar no cookie o JWT token que usamos no Backend.

Busca offline

No modo offline (mas talvez em outros modos também) seria legal ter busca não só de endereços no mapa mas também nos próprios bicicletários já cadastrados. A ideia seria o texto ser buscado tanto no campo de Título quanto no endereço propriamente dito. Mas não dá pra usar uma busca simples de strings, tem que ser algo mais inteligente.
Felizmente tem algumas libs JS bem maneiras que fazem tudo pra nós:

Melhoramentos sobre dados de ciclovias

Atualmente mostramos as ciclovias apenas das principais cidades onde há bicicletários pois os arquivos GeoJSONs que importamos do OpenStreetMaps são relativamente pesados.
Seria legal estudar uma maneira melhor de importar esses dados, ou de otimizá-los, pra que conseguissemos mostrar TODAS ciclovias do país.
Eu teorizo que talvez não conseguiremos otimizar muito fazer muito sobre a compactação dos dados, pois eu já estou minificando os GeoJSON. Talvez conseguiríamos aliviar um pouco o peso se simplificássemos as curvas , mas não dá pra exagerar nisso senão a curva fica estranha e não condiz mais com a realidade.
Talvez também conseguiríamos melhorar um pouco retirando todos metadados do arquivo (como nome de cada trecho, quando foi criado, etc.), mas ACHO que isso não serve muito, porque a grande maior parte do arquivo é composto pelas coordenadas mesmo.
O pessoal do UseBike (http://usebikeapp.com/) mostra esses dados pra todo país, mas acho que é porque eles usam Mapbox e ele provê automaticamente esta camada a mais. O Google Maps também provê com muita facilidade essa camada, mas como já vimos os dados deles são MUITO ruins, extremamente incompletos e/ou desatualizados.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.