Este projeto consiste em uma API RESTful para uma loja de itens medievais, como espadas feitas sob encomenda para uma pessoa específica. A API foi desenvolvida em Typescript e Sequelize, seguindo o padrão REST, e oferece operações para criação, leitura e atualização de informações relacionadas a pessoas usuárias, produtos e pedidos.
- Node.js: plataforma de desenvolvimento em JavaScript do lado do servidor.
- Typescript: linguagem que adiciona tipagem estática ao JavaScript.
- Sequelize: ORM (Object-Relational Mapping) para interagir com o banco de dados e gerenciar models e migrations.
- Express.js: framework web para construção de APIs RESTful.
- JSON Web Tokens (JWT) para autenticação.
- Docker: plataforma para empacotar, distribuir e executar aplicações em containers.
- Mocha e Chai para testes automatizados.
A API oferece as seguintes funcionalidades:
-
Cadastro de Usuário:
- Endpoint:
POST /api/users
- Descrição: Permite criar uma nova pessoa usuária com informações como nome, e-mail e senha.
- Endpoint:
-
Autenticação de Usuário:
- Endpoint:
POST /api/auth/#
- Descrição: Permite autenticar uma pessoa usuária e obter um token JWT para acesso às rotas protegidas.
- Endpoint:
-
Gerenciamento de Usuários:
- Endpoint:
GET /api/users/:id
- Descrição: Obtém informações de uma pessoa usuária específica por ID.
- Endpoint:
PUT /api/users/:id
- Descrição: Atualiza informações de uma pessoa usuária por ID.
- Endpoint:
DELETE /api/users/:id
- Descrição: Exclui uma pessoa usuária por ID.
- Endpoint:
-
Gerenciamento de Produtos:
- Endpoint:
POST /api/products
- Descrição: Permite criar um novo produto.
- Endpoint:
GET /api/products
- Descrição: Obtém a lista de todos os produtos disponíveis.
- Endpoint:
GET /api/products/:id
- Descrição: Obtém informações de um produto específico por ID.
- Endpoint:
PUT /api/products/:id
- Descrição: Atualiza informações de um produto por ID.
- Endpoint:
DELETE /api/products/:id
- Descrição: Exclui um produto por ID.
- Endpoint:
-
Gerenciamento de Pedidos:
- Endpoint:
POST /api/orders
- Descrição: Permite criar um novo pedido.
- Endpoint:
GET /api/orders
- Descrição: Obtém a lista de todos os pedidos.
- Endpoint:
GET /api/orders/:id
- Descrição: Obtém informações de um pedido específico por ID.
- Endpoint:
PUT /api/orders/:id
- Descrição: Atualiza informações de um pedido por ID.
- Endpoint:
DELETE /api/orders/:id
- Descrição: Exclui um pedido por ID.
- Endpoint:
Antes de iniciar a API, você precisa configurar o ambiente e o banco de dados.
-
Configuração das Variáveis de Ambiente:
- Renomeie o arquivo
.env.example
para.env
e configure as variáveis de ambiente, incluindo as credenciais do banco de dados.
- Renomeie o arquivo
-
Configuração do Banco de Dados:
- Certifique-se de que o banco de dados esteja configurado corretamente no arquivo
.env
. - Execute as migrações e os seeders para criar as tabelas e inserir dados iniciais:
npx sequelize db:migrate npx sequelize db:seed:all
- Certifique-se de que o banco de dados esteja configurado corretamente no arquivo
- Para executar os testes automatizados, utilize o seguinte comando:
npm test
- LinkedIn: AlissonTassi
- GitHub: AlissonSeraphim
Este projeto não possui licença.
This project consists of a RESTful API for a medieval items store, such as custom-made swords for specific individuals. The API was developed in Typescript and Sequelize, following the REST standard, and offers operations for creating, reading, and updating information related to users, products, and orders.
- Node.js: a server-side JavaScript development platform.
- Typescript: a language that adds static typing to JavaScript.
- Sequelize: an ORM (Object-Relational Mapping) for interacting with the database and managing models and migrations.
- Express.js: a web framework for building RESTful APIs.
- JSON Web Tokens (JWT) for authentication.
- Docker: a platform for packaging, distributing, and running applications in containers.
- Mocha and Chai for automated testing.
The API offers the following features:
-
User Registration:
- Endpoint:
POST /api/users
- Description: Allows creating a new user with information such as name, email, and password.
- Endpoint:
-
User Authentication:
- Endpoint:
POST /api/auth/#
- Description: Allows authenticating a user and obtaining a JWT token for access to protected routes.
- Endpoint:
-
User Management:
- Endpoint:
GET /api/users/:id
- Description: Retrieves information about a specific user by ID.
- Endpoint:
PUT /api/users/:id
- Description: Updates information about a user by ID.
- Endpoint:
DELETE /api/users/:id
- Description: Deletes a user by ID.
- Endpoint:
-
Product Management:
- Endpoint:
POST /api/products
- Description: Allows creating a new product.
- Endpoint:
GET /api/products
- Description: Retrieves a list of all available products.
- Endpoint:
GET /api/products/:id
- Description: Retrieves information about a specific product by ID.
- Endpoint:
PUT /api/products/:id
- Description: Updates information about a product by ID.
- Endpoint:
DELETE /api/products/:id
- Description: Deletes a product by ID.
- Endpoint:
-
Order Management:
- Endpoint:
POST /api/orders
- Description: Allows creating a new order.
- Endpoint:
GET /api/orders
- Description: Retrieves a list of all orders.
- Endpoint:
GET /api/orders/:id
- Description: Retrieves information about a specific order by ID.
- Endpoint:
PUT /api/orders/:id
- Description: Updates information about an order by ID.
- Endpoint:
DELETE /api/orders/:id
- Description: Deletes an order by ID.
- Endpoint:
Before starting the API, you need to configure the environment and the database.
-
Environment Variables Setup:
- Rename the
.env.example
file to.env
and configure the environment variables, including the database credentials.
- Rename the
-
Database Setup:
- Ensure the database is configured correctly in the
.env
file. - Execute migrations and seeders to create tables and insert initial data:
npx sequelize db:migrate npx sequelize db:seed:all
- Ensure the database is configured correctly in the
- To run automated tests, use the following command:
npm test
- LinkedIn: AlissonTassi
- GitHub: AlissonSeraphim
This project has no license.