Escrever um blogue mais ou menos em Rust (e razões pelas quais isto foi uma ideia parva)

Há já uns tempos que queria fazer um projeto de programação que pudesse dizer que era meu, mas sempre tive dúvidas sobre o que é que deveria ser. Depois de algumas ideias do meu pai, melhor servidas por software já existente, finalmente encontrei um bom projeto para começar: super cliché, super aborrecido : um blogue.

Ok, decidi o projeto, deve ser simples o suficiente escolher a tech stack. Já sei SQL suficiente para fazer uma base de dados competente, já sei brincar com Flask para fazer uma API, sei um bocado de HTML. Já agora, porque não Rust para o back-end, aproveito e aprendo uma coisa nova com isto (o que é que pode correr mal). Falta só aprender um bocado de front-end e está feito.

Hora de aprender frontend... Afinal de contas é um bocado mais demorado que o esperado (1 mês a procrastinar os fundamentais de front-end do Odin Project), mas agora que já sei manipular a DOM tree deve ser fácil, certo?

Finalmente decido que é uma boa hora para olhar para bibliotecas de backend de Rust... Eeeeeee isto é bastante mais complicado daquilo que eu pensava... se eu quiser que seja possível ter uma interface CRUD, ainda vou ter que implementar autenticação, meter um servidor de autenticação no meu NAS, perceber como fucionam bases de dados em Rust e perceber a língua que me proponho a usar pela primeira vez...

Hora de reduzir outra vez o projeto... Não quero mesmo fazer um webserver, aquilo que quero é um serviço que leia ficheiros e construa sirva dinamicamente páginas HTML... Nope, ainda demasiado complicado, ter o serviço a monitorizar dinamicamente um diretório parece um inferno, vamos simplificar. E assim cheguei à versão atual. Um parser simples de ficheiros de texto que ejeta HTML noutra pasta. Falta escrever.

Deveria ser simples, certo? Só String manipulation, 5 minutos no máximo, menos se usar IA. Exceto que eu decidi usar um martelo para apertar um parafuso... Rust sem dúvida que não é a ferramenta certa para isto, a sério. Para despachar, começei cada vez mais a usar bocados díspares de código vindo de variadas fontes, colado com bastante cuspo e fita cola, e em 2 ou 3 horas, finalmente a versão base ficou feita.

Falta por online. Fácil certo? Script que faz pull do repo da script e pull do repo do conteúdo de hora em hora e deve funcionar certo??

Ha ha... Quão inocente. Já sabia que não ia ser fácil uma vez que estou a usar Nix como sistema operativo, ou seja ia ter de dar package do meu software antes de fazer, mas cruzes foi chato...

Depois basta fazer git pull automático right? Nope... o git decide ser chato e ter dependência em ssh e no systemd service não está a puxar automaticamente a dependência... cruzes. OK. BASTA TER O REPO PÚBLICO, CERTO? Sim.

Meter o nginx deve ser fácil, certo? Já o fiz umas quantas vezes para serviços que usam portas no localhost, isto deve ser mais fácil ainda (resumidamente, eu tinha tudo numa pasta dentro do root à qual tinha dado permissão ao user do nginx, mas provavelmente por as diretorias superiores não darem permissão a esse user, não estava a funcionar, bastou meter no /var/lib) e por fim, consigo fazer isto.

Por favor não o façam.