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: 3 months 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.
- Host: GitHub
- URL: https://github.com/felipeg-almeida/labeddit-backend
- Owner: FelipeG-Almeida
- Created: 2023-07-04T22:27:28.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-08-06T01:27:45.000Z (almost 3 years ago)
- Last Synced: 2025-01-08T18:10:10.171Z (over 1 year ago)
- Topics: api, backend, crud, express, jest, knex, layered-architecture, nodejs, poo, sqlite, typescript, unit-testing
- Language: TypeScript
- Homepage: https://documenter.getpostman.com/view/24823235/2s9XxyRtDt
- Size: 41 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

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 🧡






📜 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:
