Projeto Java puro com API HTTP para cadastro de usuarios e produtos de roupa com persistencia em PostgreSQL.
src/main/java/com/organizare/App.java: ponto de entrada da API HTTPsrc/main/java/com/organizare/config: configuracao de conexao com o bancosrc/main/java/com/organizare/http: servidor, rotas e utilitarios HTTPsrc/main/java/com/organizare/model: entidades de dominiosrc/main/java/com/organizare/repository: acesso a dados por entidadesrc/main/java/com/organizare/service: regras de negocio e validacao de fluxosrc/main/java/com/organizare/validation: validacao de entradasrc/main/java/com/organizare/exception: excecoes da API
PORT: porta do servidor HTTP. Padrao8080APP_PORT: porta exposta pelo container da aplicacao. Padrao8080ALLOWED_ORIGIN: origem liberada para o frontend React. Padraohttp://localhost:5173MAX_REQUEST_BODY_BYTES: limite do corpo JSON. Padrao8192SERVER_BACKLOG: fila maxima basica do servidor HTTPPOSTGRES_DBPOSTGRES_USERPOSTGRES_PASSWORDPOSTGRES_PORTDB_URLDB_USERDB_PASSWORD
A aplicacao tenta ler primeiro as variaveis do sistema e, se elas nao existirem, usa o arquivo local .env.
No Docker Compose, os valores padrao tambem podem vir do arquivo .env, mas o projeto consegue subir usando os fallbacks definidos em docker-compose.yml.
Configuracao padrao deste projeto:
DB_URL=jdbc:postgresql://localhost:5432/organizare-dbDB_USER=macinhaDB_PASSWORD=99146632
Compile com o driver JDBC no classpath:
mkdir -p bin
javac -cp lib/postgresql-42.7.3.jar -d bin $(find src/main/java -name '*.java')Inicie a API:
java -cp "lib/postgresql-42.7.3.jar:bin" com.organizare.AppPara subir API + PostgreSQL com os valores padrao:
docker compose up --buildPara derrubar os containers:
docker compose downA API fica disponivel em http://localhost:8080 por padrao e o healthcheck interno usa http://127.0.0.1:8080/health.
O frontend foi criado em frontend/ com Vite + React.
Instale as dependencias:
cd frontend
npm installRode em desenvolvimento:
npm run devPor padrao o Vite sobe em http://localhost:5173 e faz proxy de /api para http://localhost:8080.
Se quiser apontar para outra URL da API, rode assim:
VITE_API_URL=http://localhost:8080 npm run devPara gerar build:
npm run buildGET /healthGET /api/usersGET /api/users/{id}POST /api/usersPUT /api/users/{id}DELETE /api/users/{id}GET /api/clothingGET /api/clothing/{id}POST /api/clothingPUT /api/clothing/{id}DELETE /api/clothing/{id}GET /api/buyGET /api/buy/{id}POST /api/buyPUT /api/buy/{id}DELETE /api/buy/{id}
- validacao de entrada no backend
- respostas JSON com codigos HTTP consistentes
- limite de tamanho do corpo da requisicao
PreparedStatementpara evitar SQL injection- CORS controlado por variavel de ambiente
- headers de seguranca basicos nas respostas
- erro interno sem vazar stack trace para o cliente
POST /api/users
{
"name": "Maria",
"email": "maria@email.com",
"cellPhone": "+55 11 99999-9999",
"birthMonth": 5,
"birthDay": 15
}POST /api/clothing
{
"name": "Jaqueta Jeans",
"price": 199.9,
"stock": 12,
"size": "M",
"color": "Azul"
}POST /api/buy
{
"userId": 1,
"clothingId": 2,
"quantity": 3
}