Coder Social home page Coder Social logo

caronaboard / caronaboard-native Goto Github PK

View Code? Open in Web Editor NEW
11.0 8.0 7.0 2.02 MB

CaronaBoard made with React Native

License: GNU General Public License v3.0

JavaScript 89.11% Python 1.17% Java 0.93% Objective-C 2.76% Ruby 6.03%
react-native firebase es6 react react-native-config react-native-navigation react-native-ui-kitten react-redux redux redux-thunk

caronaboard-native's Introduction

Build Status

What is CaronaBoard?

CaronaBoard.com is an open source project, with the goal of creating a way to optimize the use of cars in cities, contributing to reduce local traffic, reduce use of fossil fuel, and help people to connect to their friends and colleagues.

Different than other products such as BlablaCar, CaronaBoard aim is to remain free! In our view giving a ride is a matter of friendship! We based the entire idea on principles of friendship and comradery, and that you would spend the same fuel and money if you go alone or if you give ride to your friends/colleagues. If they want to give the rider a contribution it is up to them, but the tool won't be designed to make money out from it.

Another huge difference from other car pooling systems is that the focus of CaronaBoard is to serve people on their daily routine inside the cities, like going to work and back. This conceptual difference makes CaronaBoard mission a lot more challenging because daily rides are less planned and least for a very short time span. The transportation subject in big urban centers is a super complex problem but at the same time we believe that this would make our mission and work fun and inspiring.

In order to solve this problem we would like to gather brilliant people with the ideas and willigness to radically change the world!

Product vision:

Below some ideas about the concept of CaronaBoard:

  1. Free tool: CaronaBoard will be free, meaning that it won't be used to make money or provide tools for people make money
  2. Connect people: the idea is simple, CaronaBoard has to allow people to easy communicate and get ride to each other.
  3. Communities: the product will evolve to the idea of communities, so people can create a community for its workplace, or a group of soccer friends for example. This will ensure you do not risk to get/give ride to someone you do not know or someone that can offer risk, specially in the current world where there is a lot of violence, prejudice and sexism. The idea is that in the future group administrator could allow people to join group or ban other members.
  4. Collaboration: CaronaBoard idea is to be a collaborative project. Your ideas and contributions are welcome.

Tech stack

Prerequesites

  • Node.js 8+ (We recommend using nvm to manage your Node version)

Installing

  1. nvm use (optional if you use nvm)
  2. npm
  3. npm start
  4. http://localhost:8080/

Running tests

We are using elm-test for writing tests for elm. Since elm type system is already so safe and ease refactoring by a lot, we are attempting a new idea: to not write unit tests, instead, we just write fuzz tests, which checks for the edge cases, and integration tests, using elm-testable, which ensure things are working well together and provide much more safety when refactoring.

To run tests, simply run npm test.

Deployment - Circle CI

Cicle builds the app and run the Elm tests. Then, when in master branch, it deploys to github pages by creating a new commit on the repo caronaboard.github.io.

You can see Cicle CI config on .circleci/config.yml, and the pipeline here.

But if you want to deploy your changes to a temporary url and see how they look like, simply run npm run deploy:now

Kanban Wall

https://github.com/CaronaBoard/caronaboard/projects

caronaboard-native's People

Contributors

eduardomoroni avatar ehkasper avatar henriquelbsouza avatar snyk-bot avatar taniadgv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

caronaboard-native's Issues

Tela de lista das caronas desejadas

Dado que um usuario acesse a app
Quando clicar em caronas desejadas
Então deve ser exibida a lista de caronas desejadas criadas pelos usuários

Dado que um passageiro esteja na tela de lista de caronas desejadas
Quando a tela exibir uma carona desejada criada por si
Então deve ser exibido um ícone que permita ao passageiro alterar a carona desejada

Dado que um passageiro esteja na tela de lista de caronas desejadas
Quando a tela exibir uma carona desejada criada por si e que tenha sido aceita por um motorista
Então o ícone de edição deve estar desabilitado

Depende da estória #41

Observações:

  • a princípio, cada item da lista de caronas desejadas terá todas as informações suficientes da carona e não será necessário criar uma tela de detalhes da carona.

Refatorarar UI

O kitten foi atualizado e precisamos corrigir as telas.

Editar/Excluir Carona Ofertada

Dado que o motorista já tenha criado uma carona ofertada
Quando clicar nessa carona
Então deve ser capaz de editar e/ou excluir a carona ofertada

What do you think about using real firebase for integration tests, instead of mocks?

When it comes to database, it's hard to ensure with mocking that your code actually works, mainly because it's a big chaing of function calls that you don't even ensure it works, since you're basically testing the mock.

Usually what fails when it comes to database are configurations, and configuration you can only test using the actual thing.

Here's how to setup firebase locally:
https://firebase.googleblog.com/2015/04/end-to-end-testing-with-firebase-server_16.html

Esqueci Minha Senha

Dado que o usuário inseriu o e-mail e esqueceu a senha
Quando clicar em "Esqueci minha senha" na tela de Login
Então deve receber um email com o link do firebase para trocar a senha e ser notificado na UI que o link foi enviado

Editar perfil de usuário

Dado que um usuário está logado
Quando entrar na tela do seu perfil
Então deve poder editar os seus dados e Salvar

caronaboard_editar_perfil

Tela única para Login e Registro

O carobaboard web tem uma feature legal. Na tela de login é pedido somente o email da pessoa, caso a pessoa já tenha um email cadastro ela é direcionada para a tela de login. Caso a pessoa não tenha email cadastrado no carona board, ela é encaminhada para a tela de registro de novo usuário.

Entrar em contato com motorista

Dado que um passageiro escolhe uma carona ofertada
Quando clicar em salvar na tela de pedido de carona
Então deve poder falar com o motorista através do contato registrado (WhatsApp/Telegram)

Criar uma Carona Desejada

Carona Desejada - quando um passageiro proativamente cadastra sua carona desejada para que motoristas possam vê-la.

Cenário: "Não tenho carro e preciso de caronas"

Observação:

  • Estória não envolve criar tela parar isso, somente preparar a funcionalidade no firebase a na comunicação entre a app e o firebase.

Verificação de Número de Telefone no Perfil

Dado que um usuário esteja editando seu perfil e inserir/modificar o número de telefone
Quando clicar em "Salvar"
Então deve receber um SMS de confirmação do número com um código de confirmação

Dado que um usuário receba um SMS de confirmação de telefone
Quando inserir o código de confirmação na tela de confirmação
Então terá seu telefone verificado

Escolha de grupo de caronas

Dado que existam múltiplos grupos de caronas
Quando o usuário entrar em seu perfil
Então poderá escolher qual grupo usar na app

Ao clicar deve ser criado um registro seguindo o padrão do caronabaord web que é:
image

Tela para registrar uma Carona Desejada

Dado que um passageiro deseja uma carona que não está sendo ofertada
Quando clicar em "Criar carona desejada"
Então deve poder registrar os dados da carona desejada

Depende da estória #41

Why are we speaking english?

Hey folks, vocês não acham que deixar as conversas do nosso repositório todo em inglês pode dificultar a participação de pessoas que não são confiantes com seu inglês? Para nós que temos uma certa vivência é até tranquilo, mas se a nossa ideia é rodar um workshop e depois abrir para Open source. Não seria melhor falarmos em português?

Injetar .env na build do BuddyBuild

Isolamos os segredos em um arquivo .env em #23. Precisamos descobrir como fazemos para injetar o arquivo .env no processo de build do BuddyBuild.
Atualmente geramos o APK no BuddyBuild e deployamos esse APK para o Appetize. Só que o APK ta sendo gerado sem as variavéis que deveriam estar contidas no .env, logo, o firebase não funciona.

Caso queira jogar esta história favor entrar em contato comigo para eu dar acesso ao BuddyBuild.

Possiveis estórias para o workshop

  • Autenticação

    • Verificação de número de telefone.
    • Esqueci minha senha
    • Entrar/Sair de um grupo de caronas
  • Registro de Caronas

    • Editar/Excluir oferta de carona
    • Editar/Excluir pedido de carona
    • CRUD Pedir caronas que não existem
    • CRUD Caronas coletivas (Dividir taxis e afins)
  • Notificação

    • Push Notification para quem oferece carona quando alguém pede
    • Push Notification lembrete para a carona (para ambos)
    • Push Notification para sugerir carona em dias chuvosos
    • Opt-in email de sugestão de caronas para dias chuvosos
    • Opt-out das push notifications
  • UI

    • Criar estórias de UI para cada uma das sugestões acima, dando a opção da pessoa escolher se quer jogar UI junto ou deixar para outra pessoa fazer.
  • Aprimoramento

    • Tela inicial receber somente email, baseado nisso decidir se é um Sign in ou Sign up.

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.