An open API service indexing awesome lists of open source software.

https://github.com/ronaldohard/fastfood-backend


https://github.com/ronaldohard/fastfood-backend

docker docker-compose java postgres spring-boot

Last synced: 3 months ago
JSON representation

Awesome Lists containing this project

README

          

# πŸ” FastFood - Totem de Pedidos

Sistema acadΓͺmico de pedidos para lanchonete via totem.
---

### πŸ‘¨β€πŸ’» Tecnologias utilizadas

- Java 22
- Maven (v3.9.9)
- Spring Boot 3 (v3.2.4)
- Spring Data
- Spring WebFlux (restclient)
- PostgreSQL (v15)
- Docker & Docker Compose
- MapStruct (v1.6.3)
- Lombok (v1.18.30)
- Mockito (v5.10.0)
- TestContainer (v1.19.1)
- Swagger (springdoc-openapi v2.1.0)

---

### πŸ“š DDD

https://miro.com/app/board/uXjVIDhyBL0=/?share_link_id=759980337877

---

### πŸ“¦ Requisitos

- [Docker](https://www.docker.com/)
- [Docker Compose](https://docs.docker.com/compose/)
- (opcional sem docker) [Java 22+](https://openjdk.org/projects/jdk/22/) e [Maven](https://maven.apache.org/)

---

## πŸš€ Como Rodar

```bash
# 1. Clone o projeto
git clone https://github.com/ronaldohard/fastfood-backend.git

# 2. Entre na pasta docker
cd fastfood-backend/docker

# 3. Gere as imagens e suba o container com as instancias de db, app e sonar
docker-compose up --build
```

## πŸ”— Endpoints publicados

- API Swagger: [http://localhost:8080/swagger](http://localhost:8080/swagger)

### πŸ› οΈ ConfiguraΓ§Γ΅es da aplicaΓ§Γ£o (Banco de Dados)

As propriedades estΓ£o configuradas no `application.yml`:

```yaml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/fastfood
username: postgres
password: postgres
```

- **Host:** `localhost`
- **Porta:** `5432`
- **UsuΓ‘rio:** `postgres`
- **Senha:** `postgres`

Os scripts SQL sΓ£o carregados automaticamente na inicializaΓ§Γ£o (pastas `docker/resources/db/init/01_schema.sql`
e `02_data.sql`).

---

#### πŸ“¬ ColeΓ§Γ£o Postman (opcional)

IncluΓ­mos um arquivo `/postman/SOAT11 - FastFood (Grupo 5).postman_collection.json`.

- Importe no [Postman](https://www.postman.com/)
- Teste endpoints do FLUXO:
- CriaΓ§Γ£o de Cliente
- Buscar cliente por CPF
- CRUD de Produtos
- Buscar Produtos por Categoria
- Fake Checkout QRCODE / ConfirmaΓ§Γ£o
- Listar os pedidos

---

### πŸ—οΈ Fluxo principal (Totem de Pedido)

1. Cliente escolhe itens por categoria (hambΓΊrguer, acompanhamento, bebida, sobremesa)
2. Visualiza resumo
3. Gera QR Code para pagamento
4. ApΓ³s confirmaΓ§Γ£o, pedido Γ© finalizado

---

### πŸ“ Estrutura - Arquitetura Hexagonal

```
β”œβ”€β”€ backend/ # AplicaΓ§Γ£o Spring Boot
β”‚ └── src/main/java/
β”‚ └── br/com/fiap/postech/grupo5/fastfood/
β”‚ β”œβ”€β”€ adapter/
β”‚ β”‚ β”œβ”€β”€ inbound/web/
β”‚ β”‚ β”‚ β”œβ”€β”€ controller/
β”‚ β”‚ β”‚ └── mappers/
β”‚ β”‚ └── outbound/
β”‚ β”‚ β”œβ”€β”€ client/
β”‚ β”‚ β”œβ”€β”€ entity/
β”‚ β”‚ β”‚ β”œβ”€β”€ client/
β”‚ β”‚ β”‚ β”œβ”€β”€ ingredient/
β”‚ β”‚ β”‚ β”œβ”€β”€ order/
β”‚ β”‚ β”‚ β”œβ”€β”€ pagamento/
β”‚ β”‚ β”‚ β”œβ”€β”€ product/
β”‚ β”‚ β”‚ └── enums/
β”‚ β”‚ └── repositories/
β”‚ β”œβ”€β”€ application/
β”‚ β”‚ β”œβ”€β”€ dto/
β”‚ β”‚ └── service/
β”‚ └── infrastructure/
β”‚ β”œβ”€β”€ config/
β”‚ └── handler/
β”‚ └── FastFoodApplication.java
β”‚ └── resources/
β”‚ β”œβ”€β”€ application.yml
β”‚ └── json.mercadopago/
β”œβ”€β”€ docker/
β”‚ β”œβ”€β”€ docker-compose.yml
β”‚ β”œβ”€β”€ Dockerfile
β”‚ └── resources/db/init/ # Scripts SQL
β”‚ β”œβ”€β”€ 01_schema.sql
β”‚ └── 02_data.sql
└── README.md
```

### βœ… Futuras melhorias (opcional)

- IntegraΓ§Γ£o real com Mercado Pago
- Painel administrativo para pedidos
- NotificaΓ§Γ΅es em tempo real via WebSocket

### πŸ‘₯ Participantes do Grupo

| πŸ‘€ Nome | πŸŽ“ RM | πŸ’¬ Discord | πŸ“§ Email |
|---------------------------------|--------|--------------------|-------------------------------|
| Gabriel Giangiulio Cravo Zamana | 364225 | gabrielzamana | gabrielgiangiulio@outlook.com |
| Milenna Cristina Nogueira Costa | 363739 | mih_cnc00 | milennacosta16@outlook.com |
| Raquel Aparecida Teixeira | 363656 | raquelat | raquelteixeira507@gmail.com |
| Ronaldo Ferreira Prates | 363353 | twitch.tv/hard_aoe | ronaldohard@gmail.com |
| Samuel Videira dos Santos | 363405 | samuel.videira | samuel.videira@gmail.com |