Skip to content

johnHPX/Blog-hard-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BlogHard

Um sistema de gerenciamento de conteúdo(CMS) feito com GO, postgress e docker.
Futuramente irei desenvolver o front-end para está API.

Toda documentação necessaria está na pasta "docs" e nesse link: https://drive.google.com/drive/u/0/folders/1z8u4znIMH_JeN_aGTfhnGvXcb_ZesLO8

Principais funcionalidades implementadas neste projeto.

  1. Arquitetura de software baseada em camadas.
  2. Arquitetura limpa e de facil manutenção.

  3. Algoritmo de recuperação de senha.
  4. São 3 estágios:
    (1) O usuário tenta recuperar a senha pelo email, ao digitar o sistema verifica se o e-mail está cadastrado e se pertence aquele usuário, depois é enviado um código de 6 dígitos para o email do usuário.
    (2) O usuário digita e enviar o código para API, ela verifica se está correto e caso sim, retorna um token especial para recuperar a senha.
    (3) com o token especial o usuário pode alterar a senha.

  5. Migrations e PostgreSQL.
  6. Utilizando o PostgreSqL, um dos bancos de dados mais robustos da atualidade junto com um script capaz de realizar migrações para o mesmo. Assim, quando houver alterações nas tabelas, a restruturação do banco de dados será bem mais simples. Pois com apenas dois ou mais comandos, é possível recria-lo.

  7. Autenticação JWT Token.
  8. Utilizei a biblioteca do JWT do Golang, para criar autenticações seguras, assinadas com uma chave secreta. Implementei a autenticação de forma que a API gere dois tokens, o access token (atoken) e o refresh token (rtoken). O atoken é retornado, quando um usuário loga no sistema e tem duração de 4 horas. Já o refresh token é salvo no banco de dados e tem duração de 1 semana. quando o atoken expira e o usuário acessa um endpoint que exige autenticação, a API verificar se esse usuário tem um rtoken, caso sim ele gera um novo atoken e um novo rtoken. Dessa forma, desde que rtoken do usuário não expire, ele não precisará se logar novamente na aplicação, pois a API sempre fará essa verificação e caso não tenha problemas, deixará o usuário acessar os endpoints que exigem autenticação, assim melhorando a experiência do usuário.

  9. Paginação.
  10. Todos os endpoints de listar enitdades, tem o mecanismo de paginação, onde o frontend pode definir um começo (offset) um fim (limit) e os próximos valores (page), todos os valores sendo passados por querys request.

  11. Notificações pelo Gmail para usuários administradores.
  12. Introduzir um algoritmo que enviar emails quando algum usuário interage com o blog. A interação poder ocorrer de duas formas: O usuário pode comentar em alguma postagem ou pode responder um comentário de um outro usuário. E quando ocorrer essa interação, a API informa a todos o(s) usuário(s) administradore(s).

  13. Validator lib.
  14. Eu fiz essa lib com Golang para validar os dados das requisições. Aqui está o repósitorio: https://github.com/johnHPX/validator-hard

  15. DockerFile.
  16. Criei um DockerFile, assim como em um projeto anterior, configurei de acordo com os requisitos do projeto. O dockerfile criar um binário da aplicação e o executa dentro de uma DockerImage bem menor chamada distroless, na qual o seu tamanho é muito pequeno(26 mb), o que ajudou muito o deploy para a produção.

  17. Documentação.
  18. Por fim, eu criei uma documentação para o projeto, mostrando como funciona a arquitetura, os endpoints e a modelagem do banco de dados.

About

An API for blog management.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published