https://github.com/atysonjaime/api_with_node_fastify_prisma_typescript
  
  
    📒 Bem-vindo ao repositório da API de Agenda de Contatos! Este projeto é uma introdução prática à construção de APIs utilizando Node.js e serve como um ponto de partida para futuras aplicações mais complexas. 
    https://github.com/atysonjaime/api_with_node_fastify_prisma_typescript
  
eslint fastify nodejs prettier prisma typescript
        Last synced: 8 months ago 
        JSON representation
    
📒 Bem-vindo ao repositório da API de Agenda de Contatos! Este projeto é uma introdução prática à construção de APIs utilizando Node.js e serve como um ponto de partida para futuras aplicações mais complexas.
- Host: GitHub
- URL: https://github.com/atysonjaime/api_with_node_fastify_prisma_typescript
- Owner: AtysonJaime
- License: mit
- Created: 2024-08-21T14:31:35.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-27T12:44:58.000Z (about 1 year ago)
- Last Synced: 2025-02-20T09:17:15.159Z (8 months ago)
- Topics: eslint, fastify, nodejs, prettier, prisma, typescript
- Language: TypeScript
- Homepage:
- Size: 116 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- 
            Metadata Files:
            - Readme: README.md
- License: LICENSE
 
Awesome Lists containing this project
README
          # API de Agenda de Contatos
---


> 📒 Bem-vindo ao repositório da API de Agenda de Contatos! Este projeto é uma introdução prática à construção de APIs utilizando Node.js e serve como um ponto de partida para futuras aplicações mais complexas.
>
> Este repositório foi criado com o objetivo de estudar e aplicar tecnologias essenciais para o desenvolvimento de APIs. Ele demonstra a implementação de operações CRUD (Criar, Ler, Atualizar e Deletar) em uma agenda de contatos.
## 📋 Sumário
- API de Agenda de Contatos
  - [📋 Sumário](#-sumário)
  - [💻 Tecnologias](#-tecnologias)
  - [🏗️ Build Setup](#️-build-setup)
  - [🚀 Rotas](#-rotas)
    - [Users](#users-users)
      - [Criação de usuário](#criação-de-usuário)
    - [Contacts](#contacts-contacts)
      - [Listagem de contatos](#listagem-de-contatos)
      - [Criação de contatos](#criação-de-contatos)
      - [Edição de contatos](#edição-de-contatos)
      - [Exclusão de contatos](#exclusão-de-contatos)
  - [📝 Licença](#-licença)
---
## 💻 Tecnologias
Esse projeto utiliza as seguinte tecnologias para o desenvolvimento:
| Back-end                        |
| ------------------------------- |
| [Node](https://nodejs.org/en)   |
| [Fastify](https://fastify.dev)  |
| [Prisma](https://www.prisma.io) |
| [Eslint](https://eslint.org)    |
| [Prettier](https://prettier.io) |
## 🏗️ Build Setup
> Primeiramente, abre seu melhor terminal e acesse a pasta ao qual você clonou o repositório.
>
> Ao fazer isso, rode o seguinte comando no terminal:
```sh
  npm install
```
> Após o install, necessário criar a migrate com o seguinte comando no terminal:
```sh
  npm prisma migrate dev
```
> Para finalizar, rode o seguinte comando no terminal:
```sh
  npm run dev
```
> Feito isso, em seu terminal você receberá o seguinte feedback:
```sh
  Server is running on port 3100
```
> Caso deseje visualizar seu banco, rode o seguinte comando:
```sh
  npm prisma studio
```
## 🚀 Rotas
> A API de Agenda de Contatos possui as seguintes rotas:
### Users: `/users`
#### Criação de usuário
- **Método:** `POST`;
- **Rota:** `/`;
- **Corpo da requisição:**
  - `name`: string;
  - `email`: string;
- **Resposta:**
  - `id`: string;
  - `name`: string;
  - `email`: string;
---
### Contacts: `/contacts`
> [!IMPORTANT]
> Necessário autenticação, para tal, adicionar o campo email no headers da requisição com o email do usuário
#### Listagem de contatos
- **Método:** `GET`;
- **Rota:** `/`;
- **Corpo da requisição:**
  - `email`: string;
  - `phone`: string;
- **Resposta:**
  - Listagem com os seguintes campos:
    - `id`: string;
    - `name`: string;
    - `email`: string;
    - `phone`: string;
    - `userId`: string;
#### Criação de contatos
- **Método:** `POST`;
- **Rota:** `/`;
- **Corpo da requisição:**
  - `name`: string;
  - `email`: string;
  - `phone`: string;
- **Resposta:**
  - `id`: string;
  - `name`: string;
  - `email`: string;
  - `phone`: string;
  - `userId`: string;
#### Edição de contatos
- **Método:** `PUT`;
- **Rota:** `/:id_contato`;
- **Corpo da requisição:**
  - `name`: string;
  - `email`: string;
  - `phone`: string;
- **Resposta:**
  - `id`: string;
  - `name`: string;
  - `email`: string;
  - `phone`: string;
  - `userId`: string;
#### Exclusão de contatos
- **Método:** `DELETE`;
- **Rota:** `/:id_contato`;
- **Resposta:**
  - boolean;
## 💻 Implementações futuras
- [x] Autenticação com JWT;
- [x] Validação para criação de usuário;
- [ ] Validação dos campos para edição e criação de contatos;
## 📝 Licença
[MIT License](https://github.com/AtysonJaime/api_with_node_fastify_prisma_typescript/blob/master/LICENSE) © [Atyson Jaime](https://atysonjaime.github.io)