Skip to content

Aplicativo mobile de vendas voltado para o setor de peças e acessórios para caminhões.

License

Notifications You must be signed in to change notification settings

JohnPetros/sertton

Repository files navigation

Sertton 🚚


🖥️ Sobre o Projeto

Sertton é um aplicativo e-commerce voltado para o nicho de peças de carroceria para veículos de transporte de grande porte.

Por ser um e-commerce, o usário pode procurar a peça desejada, adicionar ao carrinho e efetuar a compra por meio de um checkout externo ao aplicativo.

O objetivo da construção desse projeto é atender a demanda da empresa Sertton Industrial em potencializar suas vendas ao possuir uma maior presença online e facilitar a vida dos seus clientes que preferem utilizar um aplicativo mobile em vez de um site web.

O aplicativo consome via API Rest os dados da loja virtual da Sertton Industrial desenvolvida e mantida pela Yampi, uma plataforma de e-commerce completa.

⏹️ Demonstração

Tela home
Tela home
Tela de lista de produtos
Tela de lista de produtos
Tela de detalhes de produto
Tela de detalhes de produto
Tela de carrinho
Tela de carrinho
Tela de lista de pedidos
Tela de lista de pedidos

✨ Funcionalidades

✅ Requisitos Funcionais

Listagem de produtos

  • Deve ser possível listar todos os produtos que possuem estoque maior que 0
  • Cada produto deve exibir:
    • nome
    • imagem
    • preço
    • código sku
    • marca
    • descrição
  • As exibição dos dados do produto deve se adaptar ao espaço que ele ocupa na tela
  • Deve ser possível dar zoom na imagem do produto

Seleção de SKU (Tipo de um produto)

  • Deve ser possível selecionar um único SKU de um produto antes de adicioná-lo ao carrinho
  • A seleção do SKU deve ser com base nas variações disponíveis para o produto. Ex: Se o usuário escolher Material: Inox e Tamanho: Médio, seleciona o SKU que atende essas características
  • Caso o produto não tenha variação, o SKU é o próprio produto em si.

Filtragem de produtos

  • Deve ser possível filtrar produtos por:
    • nome
    • categoria
      • o filtro deve conter apenas uma categoria
    • marca
      • o filtro pode conter mais de uma marca
  • Deve ser possível filtrar utilizando de forma simuntânea os filtros listado acima
  • Deve ser possível pesquisar um produto pelo nome em mais de uma tela

Ordenação de produtos

  • Deve ser possível ordenar produtos por ordem alfabética, seja o inverso (Z-A) ou não (A-Z)

Cálculo de Frete

  • Deve ser possível calcular cusot de frete de um produto com base no CEP do usuário
  • Deve ser possível o usuário calcular o frete antes de ir para o checkout
  • Deve ser exibido para o usuário uma tabela de preço para cada transportadora especifica
  • Deve ser exibido para o usuário uma tabela de preço para cada transportadora especifica

Carrinho

  • Deve haver uma tela própria para o carrinho
  • Deve ser possível inserir um produto no carrinho
  • Deve ser possível alterar a quantidade do produto que está no carrinho
  • Deve ser possível remover um produto no carrinho
  • Deve ser possível remover todos os produtos do carrinho de uma vez
  • Não deve ser posível inserir produtos repetidos no carrinho
  • Não deve ser possível alterar a quantidade maior que o estoque permitido
  • Não deve ser possível alterar a quantidade menor para menor que 1
  • Todos os produtos do carrinho devem ser removidos se o usuário for redirecionado para o checkout
  • Os produtos do carrinho devem ser persistidos de modo que o usuário possa acessá-los novamente mesmo que ele feche e abre o aplicativo novamente
  • O produto no carrinho deve dizer a respeito a um do seus SKU, que por sua vez são definidos pelas variações escolhidas pelo usuário. Ex.: variações: material: Inox e tamanho: Médio definem o SKU que contém essas características

Capturador de leads

  • Deve ser possível cadastrar o e-mail do cliente/lead na tela Home
  • Não deve ser possível inserir o e-mail de um cliente/lead já cadastrado

Contato

  • Deve ser possível o usuário entrar em contato com alguém da Sertton via whatsapp ou e-mail

Listagem de pedidos

  • Deve ser possível listar todos os pedidos do usuário
  • A lista de pedidos deve ser com base no CPF ou CNPJ utilizado para fazer o pedido
  • Cada pedido deve exibir:
    • número,
    • status (pago, aguardando pagamento ou cancelado),
    • produtos, onde cada produto exibe:
      • nome
    • total de desconto,
    • total a pagar (considerando o desconto)
    • tipo de pagamento (cartão de crédito, pix ou boleto), sendo que:
      • Se for por pix, permitir o usuário acessar o QR Code gerado pelo pedido
      • Se for por boleto, permitir o usuário acessar o pdf do boleto gerado pelo pedido
  • [] Deve ser possível o usuário arquivar o pedido de forma que não seja possível mais acessá-lo no aplicativo

☑️ Requisitos não funcionais

Informações relevantes

  • Deve ser exibido ao usuário informações sobre a empresa Sertton, termos e condições, política de devolução de produto

Listagem paginada de produtos

  • Todos os produtos não devem ser carregados todos de uma vez mas conforme o usuário desce a tela para visualizar mais produtos

Banners

  • Devem ser exibidos banners que capturem a atenção do cliente

Coleções

  • Devem ser exibidos coleções de produtos que compartilham o mesmo tema ou categoria

Botão de carrinho

  • Deve ser possível adicionar um produto ao carrinho sem o usuário precisar ver a tela de detalhes desse produto
  • O botão de carrinho deve seguir as regras da funcionalidade de carrinho

⚙️ Arquitetura

🛠️ Tecnologias, ferramentas e serviços externos

Este projeto foi desenvolvido usando as seguintes tecnologias:

✔️ React Native para desevolvimento do applicativo mobile para ambas as plataformas Android e IOS

✔️ Tamagui Para a estilização e utilização de componentes acessíveis

✔️ Expo Para facilitar o processo de desenvolvimento em React Native

✔️ EAS Para automatizar o processo de deploy

✔️ Zod - para a implementação de validação de dados

✔️ Dayjs - Para a manipulação de datas

✔️ MMKV - Para a manipulação do local storage do dispositivo do usuário

✔️ Zustand - Para fazer o gerenciamento de estados complexos

✔️ Phosphor icons - Para exibição de ícones acessíveis

✔️ Yampi Api Rest - Para consumir os dados da loja virtual da Setton Industrial

✔️ Yampi Checkout - Para viabilizar o processo de checkout do usuário do fora do aplicativo

Para mais detalhes acerca das dependências do projeto, como versões específicas, veja o arquivo package.json


🚀 Como rodar a aplicação?

🔧 Pré-requisitos

Antes de baixar o projeto você necessecitará ter instalado na sua máquina as seguintes ferramentas:

Além disto é bom ter um editor para trabalhar com o código, como o VSCode

Além disto é crucial configurar as variáveis de ambiente em um arquivo chamado .env antes de executar a aplicação. veja o arquivo .env.example para ver quais variáveis devem ser configuradas

📟 Rodando a aplicação

# Clone este repositório
$ git clone https://github.com/JohnPetros/sertton.git

# Acesse a pasta do projeto
$ cd sertton

# Instale as dependências
$ npm install

# Gere o código nativo necessário para executar todas as dependências
$ npm build

# Execute a aplicação em modo de desenvolvimento
$ npm start

Você irá precisar um emulador de android para ver o aplicativo funcionando. Porém você pode gerar o expo development build do projeto e executá-lo tanto no emulador quanto no seu dispositivo físico.

# Gere o development build do projeto
$ eas build --profile development --platform android

Baixe a build gerado na plataforma do EAS no emulador ou no dispositivo seu dispositivo físico e execute npm start novamente

Veja a documentação para mais detalhes a respeito do expo development build

🧪 Rodando os testes

# Execute os testes
$ npm run test

💪 Como contribuir

# Fork este repositório
$ git clone https://github.com/JohnPetros/sertton.git

# Cria uma branch com a sua feature
$ git checkout -b minha-feature

# Commit suas mudanças:
$ git commit -m 'feat: Minha feature'

# Push sua branch:
$ git push origin minha-feature

Você deve substituir 'minha-feature' pelo nome da feature que você está adicionando

Veja a minha lista de emojis para cada tipo de commit que eu estou utilizando para manter a consistência entre as mensagens de commit

Você também pode abrir um nova issue a respeito de algum problema, dúvida ou sugestão para o projeto. Ficarei feliz em poder ajudar, assim como melhorar este projeto


🎨 Layout

O design do projeto foi feita utilizando a ferramenta Figma que pode ser acessada por esse link.


📝 Licença

Esta aplicação está sob licença do MIT. Consulte o Arquivo de licença para obter mais detalhes sobre.


Feito com 💜 por John Petros 👋🏻

About

Aplicativo mobile de vendas voltado para o setor de peças e acessórios para caminhões.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published