StudyHub é uma plataforma colaborativa voltada para estudantes, permitindo criar, organizar e compartilhar cards de estudo, pastas e resumos acadêmicos.
Este repositório contém o backend, responsável pela autenticação, regras de negócio, persistência de dados e testes automatizados.
- Node.js — Ambiente de execução JavaScript
- TypeScript
- Express.js — Framework web para criação de APIs
- PostgreSQL— Banco de dados relacional
- Sequelize (ORM)
- JWT — Autenticação
- Mocha + Chai — Testes automatizados
- Supertest — Testes de API
- Insomnia — Testes manuais
- Swagger — Documentação da API
- Cadastro
- Login com JWT
- Diferenciação de papéis:
- Professor (usuário principal)
- Aluno
- Logout (via expiração de token)
- Cards de estudo
- Criar, atualizar, deletar
- Aprovar/rejeitar (professor)
- Revisão de cards com método SM-2
- Filtragem por deck, autor e status
- Paginação com page e limit
- Pastas organizadoras
- Resumos acadêmicos
- Upload de PDFs para compartilhamento
- Filtragem por título, disciplina e autor
- Paginação
- Apenas professores podem criar/editar conteúdos
- Alunos apenas visualizam e podem criar cards que ficam pendentes
- Todas as rotas protegidas por autenticação
- Paginação (page e limit) para decks, cards e resumos
- Filtragem por autor, status, título e disciplina
- Upload de PDFs para resumos
- Busca textual
StudyHubBackend/
├── src/
│ ├── app.ts
│ ├── index.ts
│ ├── controllers/
│ ├── services/
│ ├── models/
│ ├── repository/
│ ├── middlewares/
│ ├── utils/
│ └── config/
│
├── tests/
│ ├── auth/
│ ├── users/
│ ├── deck/
│ ├── files/
│ ├── cards/
│ ├── folders/
│ ├── summaries/
│ ├── helpers/
│ └── setup.ts
│
├── docs/
│ └── insomnia/
│
├── public/
├── tsconfig.json
├── tsconfig.test.json
├── package.json
└── README.md
- Clone o repositório:
git clone https://github.com/rayaneBSilva/StudyHubBackend.git cd StudyHubBackend - Instale as dependências:
npm install
- Rode o servidor:
npm run dev
- Acesse no navegador:
http://localhost:3000
cd tests
npm test- Autenticação
- Autorização por papel
- CRUD de usuários
- CRUD de cards
- CRUD de decks
- CRUD de pastas
- CRUD de resumos
- Testes de segurança (token ausente / inválido)
Para executar os testes e gerar o relatório de cobertura, utilize o comando:
npm run coverageEsse comando:
- Executa todos os testes automatizados do projeto
- Mede a execução do código durante os testes
- Exibe um relatório resumido no terminal
- Gera um relatório detalhado em HTML
Após a execução dos testes, será criada a pasta: coverage/ Dentro dela, o arquivo principal é: coverage/index.html
Para abrir o relatório visual no Firefox, utilize o comando:
firefox coverage/index.htmlPara facilitar os testes da API, você pode importar o workspace do Insomnia:
- Baixe o arquivo
docs/insomnia/StudyHubBackend-Insomnia.json. - Abra o Insomnia.
- Vá em Workspace → Import/Export → Import Data → From File.
- Selecione o arquivo JSON baixado.
- Agora você terá todas as rotas prontas para teste.