Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/felipeg-almeida/labeddit-backend

Este é o backend do projeto Labeddit, uma rede social inspirada no reddit. Desenvolvido como parte do projeto final do curso de Desenvolvimento Full Stack da Labenu, unicamente para fins didáticos.
https://github.com/felipeg-almeida/labeddit-backend

api backend crud express jest knex layered-architecture nodejs poo sqlite typescript unit-testing

Last synced: 5 days ago
JSON representation

Este é o backend do projeto Labeddit, uma rede social inspirada no reddit. Desenvolvido como parte do projeto final do curso de Desenvolvimento Full Stack da Labenu, unicamente para fins didáticos.

Awesome Lists containing this project

README

        

![Banner](https://github.com/FelipeG-Almeida/labeddit-frontend/assets/73674044/06ebc5a6-9abc-4631-b8c8-9099770ccb60)

Labeddit Backend

Bem-vindos ao Labeddit! 😎 Uma rede social inspirada no reddit. Esta é o repositório do backend do Projeto. Desenvolvido usando NodeJs, Typescript, Express e SQLite. Este é o projeto final que coroa nosso percurso pelo curso full-stack da Labenu 🧡

shieldsshieldsshieldsshieldsshieldsshields

📜 Documentação da API

A documentação da API pode ser encontrada no [Postman](https://documenter.getpostman.com/view/24823235/2s9XxyRtDt), que fornece detalhes sobre os endpoints disponíveis, parâmetros de entrada, exemplos de solicitações e respostas.

Repositório do Front-end: [https://github.com/FelipeG-Almeida/labeddit-frontend](https://github.com/FelipeG-Almeida/labeddit-frontend)

🧐 Funcionalidades

O backend do Labeddit possui as seguintes funcionalidades:

* Cadastro/Login de Usuários
* Criação Edição e Exclusão de Posts e Comentários
* Interagir com os Posts e seus respectivos Comentários (Likes e Dislikes)

🛠️ Passos para Instação:

Para configurar o projeto em sua máquina local, siga os passos abaixo:

1. Clonar o repositório:

```
git clone https://github.com/FelipeG-Almeida/labeddit-backend.git
```

2. Acessar a pasta do projeto:

```
cd labeddit-backend
```

3. Instalar as dependências:

```
npm install
```

4. Configurar variáveis de ambiente:

```
PORT=3003 DB_FILE_PATH=./src/database/labeddit.db JWT_KEY=sua-senha JWT_EXPIRES_IN=7d BCRYPT_COST=12
```

5. Crie as tabelas do banco usando o arquivo labeddit.sql

6. Inicie o servidor:

```
npm run dev
```



💻 Construído com

Técnologias e Métodologias Utilizadas:

* NodeJs
* Typescript
* Express
* SQL e SQLite
* Knex
* Jest
* POO
* Arquitetura em camadas
* Geração de UUID
* Geração de hashes
* Autenticação e autorização
* Testes unitários

🔚 Endpoints

A seguir, estão listados os endpoints disponíveis na API Labeddit:

### Usuários

1. **Cadastro de Usuários (POST)**
- URL: `http://localhost:3003/users/signup`
- Descrição: Permite que os usuários se cadastrem na plataforma Labeddit.

2. **Login de Usuários (POST)**
- URL: `http://localhost:3003/users/login`
- Descrição: Permite que os usuários façam login na plataforma Labeddit.

3. **Obter o ID do Usuário (GET)**
- URL: `http://localhost:3003/users/`
- Descrição: Permite que os usuários obtenham o ID do usuário autenticado com base no Token JWT.

### Publicações

4. **Obter Todos os Posts (GET)**
- URL: `http://localhost:3003/posts/`
- Descrição: Permite que os usuários obtenham todos os posts existentes na plataforma Labeddit.

5. **Obter Post por ID (GET)**
- URL: `http://localhost:3003/posts/:id`
- Descrição: Permite que os usuários obtenham informações detalhadas sobre um post específico com base no ID fornecido.

6. **Criar um Novo Post (POST)**
- URL: `http://localhost:3003/posts/`
- Descrição: Permite que os usuários criem um novo post na plataforma Labeddit.

7. **Editar um Post Existente (PUT)**
- URL: `http://localhost:3003/posts/:id`
- Descrição: Permite que os usuários editem o conteúdo de um post existente com base no ID fornecido.

8. **Excluir um Post (DELETE)**
- URL: `http://localhost:3003/posts/:id`
- Descrição: Permite que os usuários excluam um post específico na plataforma Labeddit.

9. **Interagir com um Post (Like/Dislike) (PUT)**
- URL: `http://localhost:3003/posts/:id/like`
- Descrição: Permite que os usuários interajam com os posts através das ações de "like" e "dislike".

10. **Verificar Reação do Usuário em um Post (GET)**
- URL: `http://localhost:3003/posts/:id/checklike`
- Descrição: Permite que os usuários obtenham a reação registrada para um post específico com base no ID fornecido.

### Comentários

11. **Obter Todos os Comentários de um Post (GET)**
- URL: `http://localhost:3003/comments/:id`
- Descrição: Permite que os usuários obtenham todos os comentários existentes para um post específico.

12. **Criar um Novo Comentário em um Post (POST)**
- URL: `http://localhost:3003/comments/:id`
- Descrição: Permite que os usuários criem um novo comentário em um post específico.

13. **Editar um Comentário Existente (PUT)**
- URL: `http://localhost:3003/comments/:id`
- Descrição: Permite que os usuários editem o conteúdo de um comentário existente com base no ID fornecido.

14. **Excluir um Comentário (DELETE)**
- URL: `http://localhost:3003/comments/:id`
- Descrição: Permite que os usuários excluam um comentário específico na plataforma Labeddit.

15. **Interagir com um Comentário (Like/Dislike) (PUT)**
- URL: `http://localhost:3003/comments/:id/like`
- Descrição: Permite que os usuários interajam com os comentários através das ações de "like" e "dislike".

16. **Verificar Reação do Usuário em um Comentário (GET)**
- URL: `http://localhost:3003/comments/:id/checklike`
- Descrição: Permite que os usuários obtenham a reação registrada para um comentário específico com base no ID fornecido.

🎲 Banco de Dados

Diagrama do banco de dados, suas tabelas e relações:

![Untitled](https://github.com/FelipeG-Almeida/labeddit-backend/assets/73674044/b95dc80a-b4e6-4582-a8bb-38b6c682ba52)