- Motors Shop API - Compra, Venda e Leição de Veículos e Motos
- Shalom!
Essa aplicação foi desenvolvida para o Projeto Final realizado nas sprints 4-8 do módulo 6 para a Kenzie Academy Brasil no intuito de revisar, treinar e validar os conhecimentos adquiridos ao longo do curso, que serão usados no mercado de trabalho.
O objetivo dessa aplicação é servir como um backend para o projeto fullstack, chamado de Motors Shop, uma "Olx de veículos".
Frontend
Backend
Tecnologias usadas nesse projeto:
Clone o projeto em sua máquina local e instale as dependências do projeto com o comando:
yarn install
ou
npm install
Crie um arquivo .env no diretório raiz do projeto, copiando o exemplo do .env.example:
cp .env.example .env
ATENÇÃO: Recomendamos fortemente o uso de PostgreSQL nesse sistema, visto que as Models estão configuradas para o sistema supracitado. Caso queira usar outro sgbd, alterações devem ocorrer no arquivo "./prisma/schema.prisma", essas alterações podem ser encontradas aqui: https://www.prisma.io/dataguide/postgresql/introduction-to-data-types
Atribua as credenciais do seu PostgreSQL ao link da variável de ambiente DATABASE_URL:
DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE_NAME"
- USER=seu_nome_de_usuário_psql
- PASSWORD=sua_senha_psql
- HOST=localhost
- PORT=5432
- DATABASE_NAME=nome_do_database
OBS: Não é necessário criar o database usando "psql" já que durante a migração, o Prisma criará o database automaticamente com o nome colocado no DATABASE_NAME.
Caso queira configurar outro database, configure o "provider" em "./prisma/schema.prisma" colocando o nome do Sistema de Gerenciamento de Banco de Dados. Para dirimir as dúvidas do que se deve configurar para outros Banco de dados, siga essa documentação: http://l1nq.com/conectaroutro
Outras variáveis:
- SECRET_KEY=coloque_a_secret_key-da_aplicacao
- EMAIL_USER=conta_de_email_usada_para_envio_de_mensagens
- EMAIL_PASS=senha_de_email_usada_para_envio_de_mensagens
yarn prisma migrate dev
OBS: caso o banco de dados não exista, automaticamente é gerado a database com o nome colocado no final da varíavel de ambiente do link
Agora que tudo está instalado e configurado, rode a aplicação usando o comando:
yarn dev
Aguarde o processamento e sua aplicação já estará disponível para uso em (colocar o link do vercel quando front estiver pronto) ou localmente em http://localhost:4000/ .
Observação: Rode a aplicação como descrito no passo 3
O consumo pode ser feito tanto pelo deploy do frontend (links logo abaixo), pelo Insonmia e pelo clone do repositório do frontend.
É possível acessar à documentação completa para poder utilizar a API.
Nessa mesma documentação é possível adquirir informações sobre os requests, chaves necessárias do request e outras informações importantes para a utilização da API.
Interfaces e Models desenvolvidas: (adicionar mais até o fim do projeto)
- Vehicle (CRUD completo)
- Image (CRUD completo)
- User (CRUD completo)
- Address (CRUD completo)
- Comments (CRUD completo)
O Objetivo principal dessa aplicação é a validação dos conhecimentos do time nos seguintes tópicos:
- Javascript;
- NodeJs;
- Express;
- Prisma
- Solucionar demandas;
- Criar um projeto fullstack com API restfull;
- Utilizar Frameworks ou bibliotecas (Opcional)
- Inicialmente, decidimos por começar pela análise da proposta, com isso, pudemos observar e pesquisar quais eram as tecnologias, frameworks e libs que poderiam ser usadas no desenvolvimento.
- Fizemos o estudo das tecnologias que fossem necessárias.
- Iniciamos o desenvolvimento por duas frentes (backend e frontend) em concomitante. No backend iniciamos com a criação da arquitetura do servidor
- Interfaces e Models;
- Middlewares
- Services e Controllers
- Routes
- Error e tratamentos
- Por fim, fizemos os demais fix necessários do código e a documentação da API
Foram criados, no total, 6 models (1 extra):
- Vehicle: Onde é feito o CRUD do anuncio que será o responsável listar e adicionar novos veículos ao front;
- Image: Aqui está o CRUD das imagens que são adicionadas a cada Vehicle;
- User: Onde é feito toda a parte de registro e gerenciamento de usuário;
- Address: Local em que fica armazenado os dados de endereço de usuário;
- Comments: Model usada para armazenamento de comentários dentro da aplicação
Nessa arquitetura, há duas pastas importantes:
- Middlewares: Onde ficam armazenados os arquivos funcionam como um serviço intermediário ao services e controllers. São utilizados quando é necessário fazer algum tipo de verificação constante no código, evitando o retrabalho:
- error.middleware: Usado para repassar ao cliente as mensagens de erro;
- yupValidate.middleware: Usado para o tratamento dos Schemas de validação feitas pelo YUP;
- Schemas: Onde ficam os arquivos utilizados pela biblioteca YUP para verificar possíveis erros de requisição nas rotas, gerando uma camada de proteção maior na API.
Queremos agradecer pela oportunidade de fazer esse projeto e pela dedicação do PO Marcelo Cabral por nos auxiliar do início ao fim.