Projeto fullstack moderno desenvolvido inteiramente no ecossistema Clojure, projetado para ser executado de forma isolada e consistente através de containers Docker.
- Backend robusto: Construído com Clojure, Ring e Reitit.
- Frontend reativo: Desenvolvido com ClojureScript e Reagent (React wrapper).
- Zero Instalação Local: Não é necessário instalar Java, Node, Leiningen ou Shadow-CLJS na sua máquina. Tudo o que você precisa é o Docker.
- Configuração de Proxy: Pronto para servir o frontend e backend de forma integrada.
- Clojure
- Ring & Reitit (Middleware e Roteamento)
- Jetty (Servidor HTTP)
- SQLite (Banco de dados relacional)
- ring-cors (Configuração de CORS)
- ClojureScript
- Reagent (Interface Reativa)
- Shadow-CLJS (Build tool e integração JS)
- Docker & Docker Compose
- Nginx (Proxy reverso)
crud-clojure/
│
├── crud-zero/ # Pasta do Backend
│ ├── Dockerfile
│ ├── project.clj
│ └── src/crud_zero/server.clj
│
├── crud-zero-frontend/ # Pasta do Frontend
│ ├── Dockerfile
│ ├── package.json
│ ├── shadow-cljs.edn
│ └── src/
│
├── nginx/ # Configuração do Servidor
│ └── default.conf
│
├── docker-compose.yml # Orquestração dos containers
└── README.md
Antes de começar, você precisa apenas do Docker Desktop instalado:
⚠️ Importante (Windows):
- PCs comuns (Intel / AMD): escolha a versão AMD64.
- PCs ARM (Surface, Windows on ARM): escolha a versão ARM64.
git clone <URL_DO_REPOSITORIO>
cd crud-clojure###3️⃣ Subir a aplicação Execute o comando abaixo na raiz do projeto:
docker compose up --build
Aguarde alguns minutos na primeira execução para o download das imagens e compilação do projeto.Após subir os containers, acesse no seu navegador:
- Frontend (Interface): http://localhost:8080
- API (Backend): http://localhost:3000
- Status da API (Healthcheck): http://localhost:3000/health
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/users |
Lista todos os usuários cadastrados |
POST |
/users |
Cria um novo usuário |
PUT |
/users/:id |
Atualiza os dados de um usuário existente |
DELETE |
/users/:id |
Remove um usuário do banco de dados |
GET |
/health |
Verifica se a API está online |
Para validar rapidamente se a API está respondendo, você pode usar o terminal:
curl http://localhost:3000/health
# Resposta esperada: {"status":"ok"}Parar todos os serviços:
docker compose downRecompilar após alterações no código:
docker compose up --buildForçar rebuild completo (sem cache):
docker compose build --no-cache
docker compose upExecução Local (Fora do Docker): Se preferir rodar nativamente para desenvolvimento rápido:
- Backend:
lein run - Frontend:
npm installseguido denpx shadow-cljs watch app
O backend está pré-configurado para aceitar requisições do frontend em http://localhost:8080.
- Métodos liberados:
GET, POST, PUT, DELETE, PATCH, OPTIONS - Finalidade: Garantir a comunicação fluida entre o client e a API sem bloqueios de segurança do navegador.
Contribuições são bem-vindas!
- Faça um Fork do projeto
- Crie uma Branch para sua feature (
git checkout -b feature/nova-feature) - Dê um Commit nas suas alterações (
git commit -m 'Adicionando nova feature') - Faça o Push para a Branch (
git push origin feature/nova-feature) - Abra um Pull Request
Este projeto é livre para uso educacional e pessoal.