image.png

Olá e bem-vindo(a) a este guia prático.

O objetivo aqui é construir juntos uma aplicação Todo List completa, indo de um repositório Git vazio até um projeto full-stack funcional, usando o ecossistema Clojure moderno.

Mais do que um simples tutorial de “copiar e colar”, este guia foi pensado para ensinar arquitetura — passo a passo, com atenção ao raciocínio funcional e à depuração de problemas reais.

Não vamos apenas construir uma aplicação: vamos entender por que ela funciona e por que ela quebra, explorando erros típicos (como CORS, formatos de dados incompatíveis e sincronização de estado) e aprendendo a corrigi-los com clareza.

Usaremos o clássico aplicativo Todo List como exemplo, pois sua simplicidade nos permite concentrar no que realmente importa: a arquitetura e a interação entre as partes de um sistema reativo.


🧩 Este Tutorial Faz Parte de uma Série Funcional

Este é o primeiro caminho de uma série dedicada a resolver o mesmo problema — uma aplicação de lista de tarefas — usando duas stacks funcionais diferentes:

Versão Stack Filosofia
🟢 Clojure/ClojureScript Reagent 2.0 (React 18), Ring, Reitit, next.jdbc Reatividade explícita no frontend e API REST pura
🟣 Elixir/Phoenix LiveView LiveView, Ecto, Tailwind Reatividade integrada no backend, sem API intermediária

👉 Após concluir este guia, você pode avançar para o tutorial complementar:

Como Criar um App Todo List com Elixir e LiveView do Zero.

Nele, o mesmo problema é resolvido sem separar frontend e backend, explorando o poder do modelo funcional concorrente do Elixir.

Juntos, os dois tutoriais formam uma visão panorâmica sobre como pensar aplicações funcionais reativas, seja com ClojureScript no navegador ou Elixir no servidor.


🧱 O que Vamos Construir

Ao longo deste guia, construiremos uma aplicação Todo List completa e persistente: