Skip to content

Leocm123/crud-clojure

Repository files navigation

CRUD Clojure com Docker

Projeto fullstack moderno desenvolvido inteiramente no ecossistema Clojure, projetado para ser executado de forma isolada e consistente através de containers Docker.


🎯 Destaques do Projeto

  • 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.

📦 Tecnologias Utilizadas

Backend

  • Clojure
  • Ring & Reitit (Middleware e Roteamento)
  • Jetty (Servidor HTTP)
  • SQLite (Banco de dados relacional)
  • ring-cors (Configuração de CORS)

Frontend

  • ClojureScript
  • Reagent (Interface Reativa)
  • Shadow-CLJS (Build tool e integração JS)

Infraestrutura

  • Docker & Docker Compose
  • Nginx (Proxy reverso)

📂 Estrutura do Projeto

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

🚀 Como Rodar o Projeto

1️⃣ Pré-requisitos

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.

2️⃣ Clonar o repositório

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.

4️⃣ Acessar a aplicação

Após subir os containers, acesse no seu navegador:


🔍 Rotas Principais (API)

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

🩺 Verificação de Status

Para validar rapidamente se a API está respondendo, você pode usar o terminal:

curl http://localhost:3000/health
# Resposta esperada: {"status":"ok"}

🛠️ Comandos de Manutenção

Parar todos os serviços:

docker compose down

Recompilar após alterações no código:

docker compose up --build

Forçar rebuild completo (sem cache):

docker compose build --no-cache
docker compose up

Execução Local (Fora do Docker): Se preferir rodar nativamente para desenvolvimento rápido:

  • Backend: lein run
  • Frontend: npm install seguido de npx shadow-cljs watch app

🌐 Configuração de CORS

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ção

Contribuições são bem-vindas!

  1. Faça um Fork do projeto
  2. Crie uma Branch para sua feature (git checkout -b feature/nova-feature)
  3. Dê um Commit nas suas alterações (git commit -m 'Adicionando nova feature')
  4. Faça o Push para a Branch (git push origin feature/nova-feature)
  5. Abra um Pull Request

📄 Licença

Este projeto é livre para uso educacional e pessoal.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages