Skip to content
/ blog Public

Este projeto é uma API robusta desenvolvida com Node.js e TypeScript, utilizando JWT para autenticação e Prisma ORM para manipulação do banco de dados. A API inclui funcionalidades para gerenciamento de usuários, notícias e perfis.

Notifications You must be signed in to change notification settings

kaykeeb3/blog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 

Repository files navigation

Descrição do Projeto

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.

Funcionalidades

Autenticação

  • 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.

Notícias

  • 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.

Perfil de Usuário

  • 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.

Tecnologias Utilizadas

  • 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.

Estrutura do Projeto

server

/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

Instalação

Backend

  1. Clone o repositório:

    git clone https://github.com/kaykeeb3/blog.git
    cd seu-repositorio/server
  2. Instale as dependências:

    npm install
  3. 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
  4. Execute as migrações do Prisma:

    npx prisma migrate dev
  5. Inicie o servidor:

    npm run dev

Como Testar as Funcionalidades

Endpoints da API

  • 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

Contribuição

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature)
  3. Commit suas alterações (git commit -am 'Adicionei uma nova feature')
  4. Faça o push para a branch (git push origin feature/nova-feature)
  5. Abra um Pull Request

About

Este projeto é uma API robusta desenvolvida com Node.js e TypeScript, utilizando JWT para autenticação e Prisma ORM para manipulação do banco de dados. A API inclui funcionalidades para gerenciamento de usuários, notícias e perfis.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published