Este projeto consiste em uma API para cadastro e login de usuários, implementação de funcionalidades de gerenciamento de notícias e perfis de usuários. A API foi desenvolvida utilizando Node.js, TypeScript, JWT para autenticação, Prisma ORM para interação com o banco de dados, seguindo princípios de arquitetura limpa e padrões de design.
- Cadastro de Usuário: Permite o registro de novos usuários.
- Login de Usuário: Autenticação de usuários com geração de token JWT.
- Criação de Notícias: Usuários autenticados podem criar novas notícias.
- Edição de Notícias: Usuários autenticados podem editar suas notícias.
- Exclusão de Notícias: Usuários autenticados podem excluir suas notícias.
- Listagem de Notícias: Usuários autenticados podem visualizar todas as notícias.
- Criação e Atualização de Perfil: Usuários podem criar e atualizar seus perfis com nome, descrição e URL da foto.
- Visualização de Perfil: Usuários podem visualizar seus perfis.
- Node.js: Plataforma de desenvolvimento.
- TypeScript: Superconjunto de JavaScript que adiciona tipagem estática ao código.
- Express: Framework para construção de APIs com Node.js.
- JWT: Biblioteca para autenticação baseada em tokens.
- Prisma ORM: Ferramenta para manipulação de banco de dados.
- bcryptjs: Biblioteca para hashing de senhas.
/src
/config
- database.ts
/controllers
- AuthController.ts
- HomeController.ts
- NewsController.ts
- ProfileController.ts
- UserController.ts
/dtos
- CreateUserDTO.ts
- CreateNewsDTO.ts
- CreateProfileDTO.ts
/interfaces
- IAuthService.ts
- IUserService.ts
- INewsService.ts
- IProfileService.ts
/middlewares
- authenticateToken.ts
- validateNews.ts
- validateProfile.ts
/repositories
- PrismaUserRepository.ts
- PrismaNewsRepository.ts
- PrismaProfileRepository.ts
/routes
- index.ts
/services
- AuthService.ts
- UserService.ts
- NewsService.ts
- ProfileService.ts
- server.ts
- app.ts
-
Clone o repositório:
git clone https://github.com/kaykeeb3/blog.git cd seu-repositorio/server
-
Instale as dependências:
npm install
-
Configure as variáveis de ambiente criando um arquivo
.env
na raiz do projeto:DATABASE_URL="sua_string_de_conexão_com_o_banco_de_dados" JWT_SECRET="seu_segredo_jwt" PORT=3333
-
Execute as migrações do Prisma:
npx prisma migrate dev
-
Inicie o servidor:
npm run dev
-
Cadastro de Usuário
POST /register { "name": "John Doe", "email": "johndoe@example.com", "password": "sua_senha" }
-
Login de Usuário
POST /login { "email": "johndoe@example.com", "password": "sua_senha" }
-
Criação de Notícias
POST /news { "title": "Título da Notícia", "description": "Descrição da Notícia", "category": "Categoria da Notícia" }
-
Atualização de Notícias
PUT /news/:id { "title": "Título da Notícia Atualizado", "description": "Descrição da Notícia Atualizada", "category": "Categoria da Notícia Atualizada" }
-
Exclusão de Notícias
DELETE /news/:id
-
Criação e Atualização de Perfil
POST /profile { "name": "John Doe", "description": "Descrição do Perfil", "photoUrl": "http://url-da-foto.com/foto.jpg" }
-
Visualização de Perfil
GET /profile
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature
) - Commit suas alterações (
git commit -am 'Adicionei uma nova feature'
) - Faça o push para a branch (
git push origin feature/nova-feature
) - Abra um Pull Request