Projeto em destaque

Anotações rápidas, com o rigor de segurança de um produto sério

Bridnote é uma aplicação web para notas do dia a dia — com tags, anexos e arquivamento — construída sobre uma base em Go pensada para autenticação forte, verificação em duas etapas e persistência confiável dos dados.

Apresentação inicial do projeto em vídeo.

O ponto de partida foi simples: um lugar único e seguro para anotações rápidas, sem depender de blocos de notas dispersos ou de confiar cegamente na segurança de terceiros. Criar, organizar por tags, anexar ficheiros e arquivar passam a acontecer num só sítio — com autenticação em duas etapas, sessão protegida e anexos verificados antes de serem guardados.

Notas simples de usar, com a segurança que normalmente só se vê em produtos multiutilizador.

O que muda no dia a dia

  • Tags e organização: cada nota fica classificada e fácil de encontrar — nada de procurar em ficheiros soltos ou conversas antigas.
  • Anexos com verificação: ficheiros ligados às notas passam por um scanner opcional de segurança antes de ficarem disponíveis para download.
  • Arquivar e lixeira: notas antigas saem do caminho sem se perderem — arquivar e restaurar fazem parte do fluxo normal, com exclusão reversível.
  • Autenticação em duas etapas: além da palavra-passe, uma segunda camada de verificação protege o acesso à conta.
  • Conta sob controlo do utilizador: exportação e exclusão de conta ficam disponíveis diretamente no perfil, sem pedir a terceiros.
  • Tema claro e escuro: a interface adapta-se à preferência de quem usa, com o mesmo cuidado visual em ambos os modos.

Simples para usar, rigoroso por dentro

Por fora, um fluxo direto de criar, marcar e arquivar notas. Por dentro, camadas separadas de handlers, serviços, modelos e repositórios — o mesmo cuidado de arquitetura que se espera de um produto multiutilizador, aplicado a uma ferramenta pessoal.

Sessão, CSRF, cabeçalhos de segurança, limite de tentativas e captcha ficam a proteger o acesso desde o primeiro pedido — sem exigir nada extra de quem só quer escrever uma nota.

Auditoria e continuidade

Eventos de negócio relevantes ficam registados para auditoria. A conta prevê recuperação de palavra-passe, gestão de sessões, configuração de duas etapas e páginas legais de privacidade, termos e cookies — parte do ecossistema de operação contínua da aplicação, não um extra colado depois.

Tecnologia e metodologia

Um monolito modular em Go, sem framework web nem SPA — camadas próprias para handlers, serviços, modelos e repositórios, com templates renderizados no servidor. No repositório há suíte de testes automatizados sobre a base de código.

Stack e arquitetura

Camadas da solução: interface, serviços e dados.

  • Backend: Go 1.26 com net/http nativo, sem framework web — handlers, serviços, modelos e repositórios em camadas próprias.
  • Frontend: templates html/template renderizados no servidor, Tailwind CSS via CDN e JavaScript puro organizado por responsabilidade.
  • Dados: PostgreSQL com pgx/v5; sessões com alexedwards/scs persistidas no mesmo banco.

Como o trabalho flui

Da nota nova ao arquivo, com anexos e tags no meio.

  • Notas: criar, listar, ver, editar, arquivar, restaurar e excluir — com lixeira antes da exclusão definitiva.
  • Anexos: upload e download inline quando seguro, com scanner opcional antes de disponibilizar o ficheiro.
  • Tags: criação, edição e exclusão livres, para cada utilizador organizar à sua maneira.
  • Conta: perfil, palavra-passe, e-mail de recuperação, sessões ativas, 2FA, exportação e exclusão de conta.

Confiança e evolução

Segurança, qualidade de código e forma de implantar.

  • Segurança: CSRF, cookies seguros, cabeçalhos HTTP, limite de tentativas, captcha e autenticação em duas etapas.
  • Anexos: armazenamento fora do banco de dados, com verificação antivírus opcional via ClamAV antes de persistir.
  • Qualidade: suíte de testes automatizados com testify sobre handlers, serviços e repositórios.
  • Implantação: Docker Compose para desenvolvimento e produção, migrations versionadas e versionamento por tags Git.

Implementação

Aplicação web server-side rendered, sem SPA nem bundler no frontend, com dados centralizados em PostgreSQL. A separação entre handlers, serviços e repositórios facilita manutenção e evolução — cada camada muda sem arrastar as demais, o que também simplifica testar e implantar em ambiente próprio via Docker Compose.