Backend-Twif é uma API RESTful desenvolvida em Node.js com Express, Prisma ORM e MySQL, servindo como backend para uma rede social acadêmica do IFSP. O sistema permite cadastro, autenticação, postagens, comentários, curtidas, notificações, gerenciamento de perfil, troca de imagens de perfil e suporte.
- Tecnologias
- Configuração
- Scripts
- Estrutura das Rotas
- Modelos Principais
- Funcionalidades
- Validação e Segurança
- Observações
- Node.js
- Express
- Prisma ORM
- MySQL
- JWT
- Multer
- dotenv, cors, bcrypt, cookie-parser
- Clone o repositório.
- Instale as dependências:
npm install
- Configure o arquivo
.env
(baseie-se em.env.example
). - Configure o banco de dados MySQL e ajuste a variável
DATABASE_URL
. - Execute as migrations do Prisma:
npx prisma migrate deploy
- (Opcional) Popule o banco com dados fake:
npm run seed
- Inicie o servidor:
npm run dev
npm run dev
— Inicia o servidor em modo desenvolvimento.npm start
— Inicia o servidor em produção.npm run seed
— Popula o banco de dados com dados de teste.
/auth
— Autenticação (login, registro, validação de email/usernick, logout)/feed
— Postagens (listar, criar, curtir/descurtir, deletar, buscar por ID)/comments
— Comentários (listar, criar, deletar)/user
— Perfil (dados do usuário, editar info, notificações, avatar)/relatorios
— Relatórios administrativos (contagem de usuários, posts, etc.)/image
— Imagens de perfil (listar imagens padrão, buscar imagem de usuário)/suport
— Suporte (criar, listar, marcar como visto, deletar chamados)
- User: Usuário, com campos para email, senha, nome, usernick, admin, foto, etc.
- Post: Postagens dos usuários.
- Comment: Comentários em posts.
- Like: Curtidas em posts.
- Notification: Notificações de ações relevantes.
- Order: Chamados de suporte.
- PostDeleted: Posts deletados por administradores.
- Cadastro e login com autenticação JWT (cookie httpOnly seguro).
- Validação de email institucional IFSP e usernick único.
- CRUD de posts, comentários e curtidas.
- Notificações automáticas para curtidas, comentários e ações administrativas.
- Upload e seleção de imagens de perfil (padrão ou customizada).
- Edição de informações do perfil.
- Rotas e permissões diferenciadas para administradores.
- Sistema de suporte com notificação ao usuário quando chamado for visualizado.
- Hash de senha com bcrypt.
- Autorização por JWT e checagem de permissões (usuário/admin).
- CORS configurado para o frontend.
- Cookies httpOnly e secure.
- O projeto utiliza Prisma para gerenciamento do banco de dados e migrations.
- As imagens de perfil padrão ficam em
/uploads/defaults
. - O backend espera que o frontend envie e consuma cookies ou header 'Bearer' para autenticação.
- Para ambiente de produção, ajuste as variáveis de ambiente e permissões de CORS conforme necessário.
Autores: André Luiz, Erick Castilho, Geovana Barbosa e Silda Pereira.