Bem vindo ao meu site!
Apresentação
A ideia de criar este site já existia há algum tempo. Sempre gostei de Python, e o meu objetivo, caso viesse a desenvolver um site, seria construí-lo de raíz, em vez de recorrer a ferramentas mais simples como WordPress, Wix ou Squarespace.
O projeto ganhou forma quando decidi comprar um Raspberry Pi 5 para realizar um pequeno projeto (que será abordado num artigo separado caso tenha tempo). Na prática pensei, se já tenho o Raspberry Pi 5 e um domínio registado para o outro projeto, porque não criar finalmente também o meu próprio site? Ainda mais agora, com o avanço das ferramentas de inteligência artificial, LLMs e IDEs com integração de IA, como o GitHub Copilot, Codex ou Claude no qual facilitam imenso o desenvolvimento frontend, uma área nunca nunca gostei muito.
Depois de tomar a decisão e comprar o domínio, tive de definir como o site seria estruturado, o que queria apresentar e de que forma o poderia fazer.
Não queria um site estático, pretendia algo mais dinâmico e útil no dia a dia, que me permitisse realizar alterações sem necessidade de editar o código manualmente.
Desta forma, defini as seguintes características que queria implementar:
- Apresentação pessoal com fotografia, com possibilidade de atualização.
- Secção de habilidades, permitindo adicionar novas ou remover/desativar as existentes.
- Página com os projetos realizados, com ligações para artigos, GitHub ou outros endereços.
- Blog para registar o que quiser, incluindo detalhes sobre os projetos desenvolvidos e outros assuntos que bem entender.
- Sistema de contacto através de formulário com envio de e-mail.
- Página administrativa completa, onde posso criar, editar e apagar posts, projetos e perfil, verificar mensagens recebidas, estatísticas de visualizações, entre outros...
- Como o site está hospedado no meu próprio servidor, decidi também criar uma página de métricas, com uma API simples para enviar essas informações diretamente do Raspberry Pi.
Após definir a estrutura, foi necessário escolher as tecnologias a utilizar. Algumas foram decididas logo no início, outras surgiram ao longo do desenvolvimento, através de tentativa e erro:
- Frontend: HTML5, Tailwind CSS, JavaScript
- Backend: Python 3.9, Flask 2.3.3
- Base de Dados: PostgreSQL
- Autenticação: Flask-Login
- Formulários: WTForms
- Email: Flask-Mail
- Markdown: suporte nativo para posts
Exemplo da área administrativa

Exemplo da página de métricas

O objetivo agora é continuar a melhorar o site, mas com mais calma.
Tenho um pequeno roadmap que pretendo implementar, mas também quero dedicar-me a explorar outras tecnologias e, com o tempo, criar e partilhar novos projetos aqui.
No fundo, este site será quase um diário pessoal, onde posso guardar e organizar informação tanto para mim como para quem o visitar.
Diogo Machado