Giter Club home page Giter Club logo

hopin's Introduction

Basemap image

O Hopin é um projeto desenvolvido para fins de estudo do Spring Boot, com o objetivo de replicar funcionalidades básicas do Uber.

Stack

My Skills Descrição da imagem

Sobre o projeto

Simulação de uma API para um aplicativo de transporte que permita:

  • Registro e autenticação de usuários e motoristas.
  • Solicitação e conclusão de corridas.

3. Funcionalidades do Sistema

3.1 Registro e Autenticação

  • Registro de Usuários: Usuários podem criar contas usando email, número de telefone e senha.
  • Registro de Motoristas: Motoristas podem criar contas.
  • Autenticação: Login e logout para usuários e motoristas..

3.2 Gerenciamento de Perfil

  • Perfil do Usuário: Visualizar e editar informações pessoais, histórico de corridas.
  • Perfil do Motorista: Visualizar e editar informações pessoais, histórico de corridas, status de disponibilidade.

3.3 Solicitação de Corridas

  • Solicitação de Corrida: Usuários podem solicitar corridas especificando o ponto de partida e destino.

3.4 Pagamentos e Faturamento

  • Processamento de Pagamentos: Integração com gateways de pagamento para cobrar usuários e pagar motoristas.

hopin's People

Contributors

lucasramallo avatar

Watchers

 avatar

hopin's Issues

Gerenciamento de Perfil

Gerenciamento de Perfil

Perfil do Usuário

Os usuários têm a capacidade de visualizar e editar informações pessoais, além de acessar seu histórico de corridas. Essas funcionalidades permitem uma experiência personalizada e a gestão das informações relevantes para cada usuário.

Funcionalidades:
  • Visualizar Informações Pessoais: Os usuários podem ver detalhes como nome, email e outras informações pessoais.
  • Editar Informações Pessoais: Permite aos usuários atualizarem seus dados pessoais quando necessário.
  • Histórico de Corridas: Acesso ao histórico detalhado de todas as corridas realizadas, incluindo datas, destinos e valores.

Perfil do Motorista

Os motoristas têm funcionalidades adicionais em comparação com os usuários. Além de visualizar e editar suas próprias informações pessoais e histórico de corridas, eles também podem gerenciar seu status de disponibilidade para aceitar solicitações de corrida.

Funcionalidades:
  • Visualizar Informações Pessoais: Os motoristas podem ver detalhes como nome, email, documentos e outras informações relevantes.
  • Editar Informações Pessoais: Permite aos motoristas atualizarem seus dados pessoais e documentação quando necessário.
  • Histórico de Corridas: Acesso ao histórico completo de todas as corridas realizadas, incluindo detalhes dos passageiros, datas e valores.
  • Status de Disponibilidade: Opção para definir disponibilidade para aceitar novas corridas.

Essas funcionalidades são essenciais para oferecer uma experiência de usuário completa tanto para os passageiros quanto para os motoristas, garantindo que eles possam gerenciar suas informações e interações com o sistema de forma eficaz.

Gerenciamento de Perfil

  • GET /api/user/profile/{userId}: Endpoint para obter o perfil de um usuário específico.
  • PUT /api/user/profile/{userId}: Endpoint para atualizar o perfil de um usuário.
  • GET /api/driver/profile/{driverId}: Endpoint para obter o perfil de um motorista específico.
  • PUT /api/driver/profile/{driverId}: Endpoint para atualizar o perfil de um motorista.

Upload de foto de perfil

Implementar integração com o S2 da AWS para upload de fotos de perfil dos customers e drivers

Solicitação de Corridas

Documentação da Issue: Solicitação de Corridas

Descrição

Usuários podem solicitar corridas especificando o ponto de partida e destino. Esta funcionalidade permite que um usuário inicie uma solicitação de corrida fornecendo os detalhes necessários para encontrar um motorista disponível e iniciar a corrida.

Requisição

A solicitação deve ser feita via uma chamada POST para o endpoint /api/rides/request.

JSON de Requisição

O corpo da requisição deve ser enviado no formato JSON e deve incluir os seguintes campos:

  • userId: ID do usuário que está solicitando a corrida.
  • pickupLocation: Objeto contendo as informações do ponto de partida.
    • latitude: Latitude do ponto de partida.
    • longitude: Longitude do ponto de partida.
    • address: (Opcional) Endereço do ponto de partida.
  • dropoffLocation: Objeto contendo as informações do destino.
    • latitude: Latitude do destino.
    • longitude: Longitude do destino.
    • address: (Opcional) Endereço do destino.

Exemplo de JSON de requisição:

{
  "userId": "12345",
  "pickupLocation": {
    "latitude": -23.561414,
    "longitude": -46.656540,
    "address": "Av. Paulista, 1000, São Paulo, SP"
  },
  "dropoffLocation": {
    "latitude": -23.550520,
    "longitude": -46.633309,
    "address": "Praça da Sé, São Paulo, SP"
  }
}

Resposta

A resposta será um JSON contendo os detalhes da solicitação de corrida, incluindo o status da solicitação e, se disponível, os detalhes do motorista e do veículo que atenderão à solicitação.

JSON de Resposta

A resposta bem-sucedida incluirá os seguintes campos:

  • rideId: ID da corrida criada.
  • status: Status da solicitação da corrida (ex: pending, accepted, rejected).
  • driver: (Opcional) Objeto contendo informações sobre o motorista.
    • driverId: ID do motorista.
    • name: Nome do motorista.
    • rating: Avaliação do motorista.
    • vehicle: Objeto contendo informações sobre o veículo.
      • make: Marca do veículo.
      • model: Modelo do veículo.
      • plateNumber: Placa do veículo.
  • estimatedPickupTime: Estimativa de tempo para o motorista chegar ao ponto de partida.
  • estimatedFare: Estimativa do valor da corrida.

Exemplo de JSON de resposta:

{
  "rideId": "67890",
  "status": "pending",
  "driver": {
    "driverId": "54321",
    "name": "João Silva",
    "rating": 4.8,
    "vehicle": {
      "make": "Toyota",
      "model": "Corolla",
      "plateNumber": "ABC-1234"
    }
  },
  "estimatedPickupTime": "2024-06-20T14:30:00Z",
  "estimatedFare": 35.50
}

Possíveis Erros

A API pode retornar os seguintes códigos de erro:

  • 400 Bad Request: Se algum campo obrigatório estiver ausente ou se os valores forem inválidos.
  • 401 Unauthorized: Se o usuário não estiver autenticado.
  • 500 Internal Server Error: Se ocorrer um erro inesperado no servidor.
Exemplo de Resposta de Erro
{
  "error": "Bad Request",
  "message": "pickupLocation.latitude is required"
}

Considerações

  • A localização (latitude e longitude) deve ser validada para garantir que seja uma coordenada válida.
  • O serviço deve assegurar que o usuário está autenticado antes de permitir a solicitação de corrida.
  • O status inicial da solicitação de corrida será pending até que um motorista aceite a corrida.
  • O sistema deve lidar com situações em que não há motoristas disponíveis e retornar uma mensagem apropriada ao usuário.

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.