Felipstein / fotodozinho-backend

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Foto do Zinho

Foto do Zinho é uma aplicação baseada nos serviços de uma empresa de fotografia e outros serviços relacionados. A aplicação oferece rotas para manipulação e uso desses serviços, registro de usuários, sistema de administração, rotas autenticadas e mais.

Tecnologias e Termos Usados

  • Manipulação/CRUD das entidades completo por meio dos padrões REST e RESTful
  • Banco de dados SQL Postgres para relações mais complexas
  • ORM Prisma para manipualação do banco de dados
  • Desenvolvido com Node e Typescript para aumentar a robustez e clareza do código
  • Segurança de senhas aprimoradas atráves da criptografia
  • Code Style com ESLint
  • >Testes unitários e testes integrais garantindo a qualidade do software com Jest (Feature congelada no momento)
  • Autenticação segura de usuários com Tokens JWT, Refresh Tokens, Tokens Revogados/Invalidados, e outros tokens, como Recuperação de senha e Validação de E-mail
  • Suporte ao upload de imagens (tanto local quanto no Amazon S3 da AWS) usando Multer
  • Sistema de administração para usuários com permissões especiais
  • Uso do .env para armazenação de variáveis de ambientes sensíveis
  • Tratamento de erros personalizados atráves de middlewares
  • Verificação de usuário autenticado atráves de middlewares
  • Envio automatizados de e-mails com o serviço SES da AWS Amazon para usuários com recuperação de senhas, notificações de compras, status de fotos para impressão, etc.
  • Atualização de notificações para os usuários em tempo real atráves de WebSockets (Em breve)
  • Código organizado e estruturado seguindo os princípios SOLID e Clean Architecture
  • Utilizando node-cron para agendamento na deleção do banco de dados os tokens expirados

Como Usar

Para começar a usar o Foto do Zinho, você precisará fazer o clone do repositório e instalar as dependências com o comando npm install ou yarn. Você também precisará criar um arquivo .env na raiz do projeto com as variáveis de ambiente necessárias. Você pode utilizar o arquivo .env.example para se basear nas variáveis.

Rotas Disponíveis

Aqui estão as principais rotas disponíveis no Foto do Zinho:

Autenticação

POST /auth/signin: usada para que o usuário faça login na aplicação. Ela é protegida pelo middleware preventAuthenticatedAccess, que impede o acesso à rota caso o usuário já esteja autenticado.
POST /auth/signup: usada para que um novo usuário se cadastre na aplicação. Ela também é protegida pelo middleware preventAuthenticatedAccess.
DELETE /auth/signout: usada para que o usuário faça logout da aplicação. Ela é protegida pelo middleware ensureAuth, que impede o acesso à rota caso o usuário não esteja autenticado.
GET /auth/validate: usada para validar se o token de acesso enviado na requisição é válido. Ela também é protegida pelo middleware ensureAuth.
POST /auth/refresh-token: usada para gerar um novo token de acesso a partir do refresh token. Ela não é protegida por nenhum middleware, mas requer um refresh token válido na requisição.

Manipulação de usuários

GET /users: Lista todos os usuários cadastrados no sistema (para administradores apenas)
GET /users/inactive: Lista todos os usuários inativos (para administradores apenas)
GET /users/id/:id: Retorna informações sobre um usuário específico (apenas para o próprio usuário ou administradores)
GET /users/email/:email: Retorna informações sobre um usuário específico, identificado pelo seu endereço de email
POST /users: Cria um novo usuário no sistema (para administradores apenas)
PUT /users/:id: Atualiza informações do usuário com o ID especificado (apenas para o próprio usuário ou administradores)
PATCH /users/:id/password: Atualiza a senha do usuário com o ID especificado (apenas para o próprio usuário ou administradores)
DELETE /users/:id: Remove o usuário com o ID especificado (para administradores apenas)
DELETE /users/account/:id: Remove a conta do próprio usuário com o ID especificado (apenas para o próprio usuário ou administradores)

Validações e recuperação de senha

/validate-email/:token: Valida o e-mail do usuário;
/set-password: Define uma nova senha para o usuário que utilizou da recuperação de senha (apenas se o token for válido);
/recovery-password: Envia um token para recuperação de senha no e-mail do usuário;
/validate-recovery-password-token/:token: Apenas verifica se o token para recuperação de senha é válido.
/send-new-validate-email Envia um novo token para validar o e-mail do usuário.

Segurança

O Foto do Zinho utiliza tokens JWT para autenticação de usuários, e possui sistema de autenticação e autorização de rotas. A aplicação também utiliza criptografia para manter as senhas dos usuários seguras. O projeto também utiliza tokens para recuperação de senha e validação de e-mail, além de tokens refresh para evitar que os usuários tenham que fazer login frequentemente.

Tratamento de Erros

O Foto do Zinho utiliza middleware para o tratamento de erros, fornecendo respostas claras e adequadas para os usuários em caso de erros na API.

Envio de E-mails

O Foto do Zinho utiliza o SES da AWS da Amazon para enviar e-mails, com o uso do pacote Nodemailer. Você precisa configurar os dados para autenticação do seu SES caso queira utilizar do serviço de envio de e-mails.

Código Organizado

O código do Foto do Zinho segue os padrões SOLID e Clean Architecture, tornando-o mais organizado e fácil de manter.

About


Languages

Language:TypeScript 100.0%