
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 é 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.
Ao longo deste guia, construiremos uma aplicação Todo List completa e persistente: