Visão geral
O DevBook é uma rede social no estilo Twitter/X voltada a desenvolvedores: cada pessoa publica o que está construindo ou aprendendo, segue outras, curte publicações e acompanha o feed. O projeto é 100% Go, dividido em uma API REST e uma aplicação web que a consome.
O problema
Uma rede social concentra os problemas clássicos de backend: autenticação segura, autorização por recurso (só o autor edita ou apaga a própria publicação), relações entre usuários e um webapp que mantenha a sessão sem expor o token. O desafio era resolver tudo isso com a biblioteca padrão do Go no centro.
A solução
A API expõe usuários e publicações em rotas REST com gorilla/mux, senhas com hash bcrypt e login que emite JWT; um middleware valida o token antes de cada rota protegida. O webapp renderiza templates Go no servidor e guarda o token num cookie assinado e criptografado com gorilla/securecookie. O MySQL 8 sobe por docker-compose com o schema aplicado automaticamente na primeira execução e healthcheck.
Funcionalidades
- Cadastro, login e sessão com JWT + cookie criptografado
- Feed com publicações, curtir e descurtir
- Criar, editar e excluir as próprias publicações
- Seguir, deixar de seguir, seguidores e seguindo
- Busca de pessoas e perfil com estatísticas
- Tema claro/escuro com persistência
Arquitetura
São dois processos independentes: a API na porta 5001 e o webapp na 3000. O navegador só fala com o webapp; o webapp repassa cada ação à API por HTTP, anexando o JWT guardado no cookie. Na API, o fluxo é rota → middleware de autenticação → controller → repositório → MySQL, com as camadas separadas por pacote.
Screenshots




Desafios & aprendizados
O ponto mais delicado foi a sessão: manter o token fora do alcance do JavaScript do navegador exigiu cookie assinado e criptografado, e a autorização por recurso exigiu comparar o dono do registro com o usuário do token em cada operação sensível. O projeto consolidou API design em Go, middlewares e a separação entre serviço de dados e aplicação web.