API criada para o portfólio de projetos, com o intuito de mostrar as habilidades e conhecimentos adquiridos ao longo do tempo.
Back-end
- Node.js
- Express
- MongoDB Atlas
- Mongoose
- JWT
- Bcrypt
Front-end
- React
- React Router
- Axios
- Styled Components
Ferramentas
- Visual Studio Code
- Insomnia
- Git e GitHub
- Render
- Netlify
api-portfolio
├── src
│ ├── controllers
│ │ ├── auth.controller.js
│ │ ├── project.controller.js
│ │ └── user.controller.js
│ ├── database
│ │ └── db.js
│ ├── middlewares
│ │ └── admin.middlewares.js
| | └── auth.middlewares.js
| | └── global.middlewares.js
│ ├── models
│ │ ├── Project.js
│ │ └── User.js
│ ├── routes
│ │ ├── auth.routes.js
│ │ ├── project.routes.js
| | ├── swagger.routes.js
│ │ └── user.routes.js
│ ├── services
│ │ ├── auth.services.js
│ │ ├── project.services.js
│ │ └── user.services.js
│ ├── index.js
| └── swagger.json
├── .env
├── .gitignore
├── package-lock.json
├── package.json
└── README.md
Back-end:
- Cadastro de usuários
- Login de usuários
- Cadastro de projetos
- Edição de projetos
- Exclusão de projetos
- Curtir projetos/deixar de curtir projetos
- Comentar projetos
Por se tratar de um projeto pessoal, não terá mais de um administrador, apenas um usuário administrador que terá permissão para adicionar, editar e excluir projetos.
Para você testar a API utilize o link da descrição ou faça um fork do projeto e crie um arquivo .env na raiz do projeto com as seguintes variáveis de ambiente:
PORT=3000
MONGODB_URI=URL_DO_SEU_BANCO_DE_DADOS
JWT_SECRET=SEU_JWT_SECRET
Para autenticação de usuários, será utilizado o JWT (JSON Web Token), onde o usuário irá se cadastrar e fazer login para obter um token de acesso. Este token será utilizado para acessar as rotas protegidas da aplicação.
Caso queira testar as funcionalidades de administrador, você deve alterar o campo role
do usuário para admin
no banco de dados, fazer login e utilizar o token gerado para acessar as rotas protegidas.
- Administrador: poderá adicionar, editar e excluir projetos
- Usuário: poderá adicionar, editar e excluir comentários, curtir e descurtir projetos e comentários
- Visitante: poderá apenas visualizar os projetos e os comentários
- POST /api/users/register
- GET /api/users
- GET /api/users/:id
- PATCH /api/users/:id
- POST /api/auth/login
- POST /api/projects Apenas administrador
- GET /api/projects
- GET /api/projects/:id Apenas administrador
- PATCH /api/projects/:id Apenas administrador
- DELETE /api/projects/:id Apenas administrador
- PATCH /api/projects/like/:id Somente logado
- PATCH /api/projects/comment/:id Somente logado
- PATCH /api/projects/:idProject/:idComment Somente logado