Projeto full stack com:
- Back-end em Node.js + Express + MongoDB
- Front-end em Next.js
- Autenticacao com JWT (aluno e professor)
Na raiz do projeto:
docker compose up --buildServicos e portas:
- Front-end:
http://localhost:3005 - API Back-end:
http://localhost:3001 - MongoDB:
localhost:27017
O
docker-composeja instala dependencias e sobe tudo em modo desenvolvimento. Ao subir o container da API, um professor de teste e criado automaticamente (caso nao exista).
Credencial inicial de professor (seed):
- E-mail:
professor.teste@fiap.com - Senha:
Professor@1234
- O usuario faz login no front como aluno ou professor.
- O front autentica na API e guarda o token em cookie.
- Com token valido:
- Aluno: pode listar, buscar e ler posts.
- Professor: pode listar, buscar, ler, criar, editar e excluir somente os proprios posts.
- A API valida permissao pelo JWT e garante regras de autoria no back-end.
GET /postseGET /posts/search?q=...: lista/busca de posts autenticadaGET /posts/:id: leitura de um postPOST /posts: criacao (professor)PUT /posts/:id: edicao (somente professor autor)DELETE /posts/:id: exclusao (somente professor autor)
- Routes: definem endpoints e middlewares de autorizacao.
- Services: aplicam regras de negocio.
- Repositories: acesso ao MongoDB via Mongoose.
- Auth JWT: valida token e injeta usuario autenticado (
req.user). - Regra de autoria: edicao/exclusao permitidas apenas ao professor dono do post.
Estrutura principal:
back-end/Blog-FIAP/src/Domain/*(Posts, Auth, Student, Professor)back-end/Blog-FIAP/src/infra/*(Mongo, Auth, HTTP)
- Pages (UI): telas de login, listagem, detalhe, criacao e edicao.
- Requests: camada de chamadas HTTP para API interna (
lib/requests). - API Routes (BFF): rotas em
app/api/*que fazem proxy para o back-end e aplicam regras de sessao no front. - Sessao: token JWT guardado em cookie
httpOnly.
Estrutura principal:
front-end/app/private/Posts/*front-end/app/public/Login/*front-end/app/api/*front-end/lib/requests/*
-
Acesse
http://localhost:3005. -
Faça login como:
- Aluno: pode listar, buscar e ler posts.
- Professor: pode listar, buscar, ler, criar, editar e excluir posts proprios.
-
Na tela de posts:
- Use o campo de busca para filtrar por titulo/conteudo.
- Clique em Ler post para abrir detalhes.
-
Se for professor:
- Clique em + Nova Postagem para criar.
- Clique em Editar para alterar seu post.
- Clique em Excluir para remover seu post.
- Pode criar outro professor
-
Se tentar editar/excluir post de outro professor, a API retorna
403 Forbidden.