Skip to content

Back-End do projeto do Food Explorer. Um app de e-commerce focado em um restaurante de delivery. / Back-End of the Food Explorer project. An e-commerce app focused on a delivery restaurant.

Notifications You must be signed in to change notification settings

LeonardoSPereira/FoodExplorerBackEnd

Repository files navigation

Food Explorer: Back-End


Português

📝 Tabela de conteúdos

🧐 Sobre

Esse projeto é o back-end do Food Explorer, desafio final do curso Explorer da Rocketseat.
Ele é uma API RESTful que fornece dados para o front-end do projeto, que pode ser encontrado aqui.
A API foi desenvolvida utilizando Node.js, Express e SQLite e permite criar, ler, atualizar e deletar dados de usuários, produtos e pedidos.
O projeto possui dois tipos de usuários: administradores e clientes. Os administradores podem criar, ler, atualizar e deletar produtos e pedidos, enquanto os clientes podem criar e ler pedidos.

Para acessar a aplicação como administrador, utilize os seguintes dados:

email: [email protected]
senha: admin@123

Para acessar a aplicação como cliente, basta criar uma conta utilizando o formulário de cadastro.

🏁 Iniciando a aplicação

Essas instruções vão te permitir obter uma cópia do projeto e rodar a aplicação localmente para propósitos de desenvolvimento e teste.

Pre-requisitos

Para rodar a aplicação, você precisa ter o Node.js e o npm instalados na sua máquina. Sendo a versão LTS do Node.js recomendada.
Além disso, você precisará de um editor de código, como o VSCode, um terminal e um aplicativo para testar as rotas da API, como o Insomnia ou Postman.

Instalação

Para acessar o projeto, basta clonar o repositório ou realizar o download dos arquivos do projeto.
Para clonar o repositório, utilize o seguinte comando no seu terminal:

git clone https://github.com/LeonardoSPereira/FoodExplorerBackEnd

Após clonar o repositório, acesse a pasta do projeto e instale as dependências utilizando o seguinte comando no seu terminal:

npm install

Antes de iniciar a aplicação, você precisará criar um arquivo .env na raiz do projeto, com as variáveis de ambiente necessárias para o seu funcionamento. O arquivo .env.example contém as variáveis necessárias para o funcionamento da aplicação, basta copiá-las e preencher com os valores necessários.

Após criar o arquivo .env, utilize o seguinte comando no seu terminal para iniciar a aplicação:

npm run dev

Com isso, o banco de dados será criado, mas você precisará popular as tabelas com dados para que a aplicação funcione corretamente. Para isso, utilize o seguinte comando no seu terminal:

npm run migrate

Após isso, você poderá acessar a aplicação através do endereço http://localhost:3333. Ou o endereço que você definiu no arquivo .env.

📁 Estrutura do projeto

A estrutura do projeto é a seguinte:

├── src: pasta onde se encontram os arquivos da aplicação

│   ├── config: pasta onde se encontram os arquivos de configuração da aplicação, como o arquivo de autenticação e o arquivo de upload de arquivos.

│   ├── controllers: pasta onde se encontram os arquivos que controlam as rotas da aplicação. Cada arquivo controla as rotas de um tipo de dado, como usuários, produtos e pedidos, por exemplo.

│   ├── database: pasta onde se encontram os arquivos de configuração do banco de dados. Nela, se encontram os arquivos de criação das tabelas do banco de dados, o arquivo de conexão com o banco de dados e o próprio arquivo do banco de dados.

│   ├── middlewares: pasta onde se encontram os arquivos de middlewares da aplicação, como o middleware de autenticação e middleware de verificação de tipo de usuário.

│   ├── providers: pasta onde se encontram os arquivos de providers da aplicação, como o provider de upload de arquivos.

│   ├── repositories: pasta onde se encontram os arquivos de repositórios da aplicação, que são responsáveis por realizar as operações no banco de dados. Além disso, nela se encontram os arquivos de repositórios na memória, que são utilizados para testar as rotas da aplicação.

│   ├── routes: pasta onde se encontram os arquivos de rotas da aplicação.

│   ├── services: pasta onde se encontram os arquivos de serviços da aplicação, que são responsáveis por realizar as operações necessárias para o funcionamento das rotas da aplicação. Juntamente com os arquivos de testes, essa pasta contém os arquivos mais importantes da aplicação.

│   ├── utils: pasta onde se encontram os arquivos de utilidades da aplicação, como o arquivo tratamento de erros.

│   └── server.js: arquivo que inicia a aplicação.

├── tmp: pasta onde se encontram os arquivos de upload da aplicação.

├── .env.example: arquivo de exemplo de variáveis de ambiente.

🔧 Rodando os testes

A aplicação possui testes unitários para as rotas de usuários, produtos e pedidos. Para rodar os testes, utilize o seguinte comando no seu terminal:

npm test

Os testes foram desenvolvidos utilizando o Jest.

🚀 Deploy

O deploy da aplicação foi realizado utilizando o plano gratuito do Render e por isso, a aplicação pode demorar alguns segundos para iniciar devido ao plano gratuito do Render colocar a aplicação em modo de hibernação após 30 minutos de inatividade. O deploy pode ser acessado através do endereço: https://foodexplorer-api-nxjr.onrender.com.

🎈 Usando

Para utilizar a aplicação, você pode utilizar o front-end desenvolvido para ela, que pode ser encontrado aqui.
Você também pode utilizar um aplicativo para testar as rotas da API, como o Insomnia ou Postman.
Eu disponibilizei uma collection do Insomnia com todas as rotas da API, que pode ser encontrada junto com os arquivos do projeto, com o nome de "Insomnia_Routes.json".

⛏️ Tecnologias

  • NodeJs - Ambiente de desenvolvimento de aplicações
  • Express - Framework de desenvolvimento de aplicações
  • Knex - SQL Query Builder
  • SQLite - Database
  • Jsonwebtoken - Autenticação JWT
  • Bcrypt - Criptografia de Senhas
  • Multer - Upload de Arquivos
  • CORS
  • Dotenv - Variáveis de Ambiente
  • Jest - Framework de Testes

English

📝 Table of Contents

🧐 About

This project is the backend for Food Explorer, the final challenge of Rocketseat's Explorer course.
It is a RESTful API that provides data to the frontend of the project, which can be found here.
The API was developed using Node.js, Express, and SQLite, allowing for creating, reading, updating, and deleting user, product, and order data.
The project has two types of users: administrators and customers. Administrators can perform CRUD operations on products and orders, while customers can create and read orders.

To access the application as an administrator, use the following credentials:

email: [email protected]
password: admin@123

To access the application as a customer, simply create an account using the registration form.

🏁 Getting Started

These instructions will allow you to get a copy of the project and run the application locally for development and testing purposes.

Prerequisites

To run the application, you need to have Node.js and npm installed on your machine, with the recommended LTS version of Node.js.
Additionally, you will need a code editor like VSCode, a terminal, and an application to test API routes, such as Insomnia or Postman.

Installation

To access the project, either clone the repository or download the project files.
To clone the repository, use the following command in your terminal:

git clone https://github.com/LeonardoSPereira/FoodExplorerBackEnd

After cloning the repository, navigate to the project folder and install dependencies using the following command in your terminal:

npm install

Before starting the application, you'll need to create a .env file at the project's root with the necessary environment variables for its operation. The .env.example file contains the necessary variables. Simply copy them and fill in the values.

After creating the .env file, use the following command in your terminal to start the application:

npm run dev

This will create the database, but you need to populate the tables with data for the application to work correctly. To do this, use the following command in your terminal:

npm run migrate

After that, you can access the application at http://localhost:3333, or the address you defined in the .env file.

📁 Project Structure

The project structure is as follows:

├── src: folder containing application files

│   ├── config: folder containing application configuration files, such as authentication and file upload.

│   ├── controllers: folder containing files that control application routes. Each file controls routes for a type of data, such as users, products, and orders, for example.

│   ├── database: folder containing database configuration files. It includes files for creating database tables, the database connection file, and the database file itself.

│   ├── middlewares: folder containing application middleware files, such as authentication middleware and user type verification middleware.

│   ├── providers: folder containing application provider files, such as the file upload provider.

│   ├── repositories: folder containing application repository files, responsible for database operations. Additionally, it includes in-memory repository files used to test application routes.

│   ├── routes: folder containing application route files.

│   ├── services: folder containing application service files, responsible for operations needed for the functioning of application routes. Along with test files, this folder contains the most important files in the application.

│   ├── utils: folder containing application utility files, such as error handling.

│   └── server.js: file that starts the application.

├── tmp: folder containing application upload files.

├── .env.example: example file for environment variables.

🔧 Running Tests

The application has unit tests for user, product, and order routes. To run the tests, use the following command in your terminal:

npm test

The tests were developed using Jest.

🚀 Deployment

The application was deployed using the free Render plan. Therefore, the application may take a few seconds to start due to the Render free plan putting the application in hibernation mode after 30 minutes of inactivity. The deployment can be accessed at the address: https://foodexplorer-api-nxjr.onrender.com.

🎈 Usage

To use the application, you can use the frontend developed for it, which can be found here.
You can also use an application to test API routes, such as Insomnia or Postman.
I have provided an Insomnia collection with all API routes, which can be found along with the project files, named "Insomnia_Routes.json".

⛏️ Technologies

About

Back-End do projeto do Food Explorer. Um app de e-commerce focado em um restaurante de delivery. / Back-End of the Food Explorer project. An e-commerce app focused on a delivery restaurant.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published