Skip to content

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

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages