Este é o primeiro post no meu diário de desenvolvimento do projeto do caldinho’s. Quem me conhece sabe que eu sou viciado em caldinho de feijão; E eu sempre pensei que seria massa criar um site onde eu pudesse guardar as informações sobre os melhores caldinhos das cidades onde eu vivo: Recife e João Pessoa.
Então pra ajudar a aprender sobre desenvolvimento web novamente, decidi criar este site para mim mesmo e para outras pessoas (que se deus quiser alguém vai usar, não fiz nenhuma pesquisa de market fit kkkk) .
A ideia é escrever aqui o que eu tenho feito e o que eu tenho aprendido sobre a stack que estou utilizando no projeto. Já fazem mais ou menos uns 3 meses que to escrevendo este projeto, então por isso vou começar do dia 100. Mas espero escrever quase sempre que eu codar algo nele. 😂
A ideia deste diário de projeto veio a partir de um chamado
Diary of a solo dev building a web app
Eu achei muito massa o que esse cara vem fazendo e eu acho que vai ser interessante ver a opinião das pessoas além de praticar a escrita.
Stack de desenvolvimento
Para o backend:
- Actix-web (Rust)
- PostgreSQL
Para o front:
- Vue.js
Para o ambiente de dev:
- Docker
- Docker-compose
Para o deployment:
- Github Actions
- Akamai (antiga Linode)
- Docker
Esta parte provavelmente ainda vai mudar no futuro pois não pesquisei tudo que preciso para decidir como vai ser o deploy das coisas, espero que dê certo com o passar do tempo.
A minha ideia com este projeto é criar algo simples mas tão eficiente que eu consiga rodar tudo numa máquina bem safada e ainda assim entregar uma boa UX.
Onde eu estou agora
Pronto, como falei, tô codando à mais ou menos 100 dias, e até então consegui fazer o seguinte de importante:
- Conseguir conhecimento
- Escrever testes para o front (algumas páginas, não todas e falta muito ainda).
- criar components necessários e planejar as telas que o sistemas vai ter a partir destes componentes (como tô utilizando vue.js, eu tentei seguir a filosofia deles)
- Aprender sobre Rust (não tinha escrevido nada em Rust até começar este projeto).
- Aprender sobre actix-web
- Criei casos de uso
- Ainda falta detalhar alguns casos de uso
- Criei algumas telas
- A diagramação delas, ainda falta melhorar muito isso pois não quero terminar todos os componentes e depois perceber que fiz algum trabalho em vão porque não tinha cogitado uma possibilidade de usabilidade.
- No front
- Listar todos os reviews de caldinho recentes
- Listar todos os reviews de caldinho associado à um lugar
- No back
- Ler e escrever do banco postgres
- Organizar o código de forma que ele consiga expandir a partir de agora
- Criar as principais rotas para criação de “caldinhos”
- Criar os testes para as rotas de “Sugestão de lugar”.
O que é esta sugestão de lugar? Como eu não tenho R$ para pagar uma API (na verdade, vou tentar usar a do OpenStreetMap depois), todas as reviews serão revisadas manualmente por mim até eu conseguir criar a integração hehehe.
Pra isso, eu criei uma tabela chamada “PendingReview” (que vai ser a próxima que vou escrever testes sobre), ela vai ser a tabela “principal” do projeto, pois toda review criada primeiro irá para esta tabela, e todo lugar que não existir na tabela “Places” será colocado como “Sugestão de Lugar”, que eu vou revisar e adicionar as informações manualmente na tabela “Places”.
Dessa forma, eu consigo prevenir dados muitos ruins (mal formatados) entrando no banco (enquanto não automatizado isto).
É isso pessoal, a partir de hoje, sempre que eu tiver um dia que eu codei o projeto (porque nem todo dia eu vou escrever código pra ele porque preferi fazer outras coisas), eu vou adicionar aqui.