No description
|
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Develop See merge request swe1_if/swe_ws2526/team03/backend!29 |
||
|---|---|---|
| .woodpecker | ||
| gradle/wrapper | ||
| src | ||
| .gitattributes | ||
| .gitignore | ||
| build.gradle | ||
| docker-compose.yml | ||
| Dockerfile | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle | ||
WaiterOrder Backend
Spring Boot REST API for the WaiterOrder application.
Hosted at: https://waiterorderbackend.olli.info
🚀 Quick Start
Local Development with Docker
docker compose up -d
Backend will be available at: http://localhost:16181
Local Testing (CI-style)
Run tests exactly as they run in CI:
# Unit tests
docker run --rm -v "$PWD":/app -w /app gradle:9.2.0-jdk21 gradle clean test --no-daemon
# Build JAR
docker run --rm -v "$PWD":/app -w /app gradle:9.2.0-jdk21 gradle bootJar --no-daemon
# Static analysis and all checks
docker run --rm -v "$PWD":/app -w /app gradle:9.2.0-jdk21 gradle check --no-daemon
📋 API Endpoints
GET /time- Server timeGET /menu- Get menu itemsGET /items- Get all itemsPOST /items- Create new itemPUT /items/{id}- Update itemDELETE /items/{id}- Delete itemPUT /items/{id}/reactivate- Reactivate itemGET /orders- Get all ordersPOST /orders- Create orderGET /tables- Get all tablesGET /waiters- Get all waiters
See API_DOCUMENTATION.md for detailed API documentation.
🐳 Docker Deployment
Standard Deployment
docker compose up -d
The backend runs on port 16181 with persistent H2 database storage in the ./data directory.
Frontend Integration:
- Frontend on olli.info: Connects to
https://waiterorderbackend.olli.info - Frontend locally: Configure with
BACKEND_URL=http://localhost:16181
🔄 Update Deployment
# cd /mnt/Data/Apps/HM_SE/WaiterOrder/backend
git pull
docker compose down
docker compose build --no-cache
docker compose up -d
🛠️ Environment Variables
SERVER_PORT- Server port (default: 16181)SPRING_DATASOURCE_URL- H2 database URLSPRING_DATASOURCE_USERNAME- Database usernameSPRING_DATASOURCE_PASSWORD- Database password
📦 Tech Stack
- Framework: Spring Boot 3.x
- Language: Java 21
- Database: H2 (file-based)
- Build Tool: Gradle 9.2.0
- Server: Embedded Tomcat
🔬 CI/CD
Mirror: https://git.olli.info/Oliver/WaiterOrder_Backend
CI Pipeline: https://ci.olli.info/repos/3
Pipeline steps:
- Unit tests (
gradle clean test) - Build JAR (
gradle bootJar) - Integration tests (run JAR and test endpoints)
📁 Project Structure
backend/
├── src/
│ ├── main/java/backend/
│ │ ├── controller/ # REST controllers
│ │ ├── model/ # JPA entities
│ │ ├── repository/ # Data access layer
│ │ └── BackendApplication.java
│ └── test/ # Unit tests
├── data/ # H2 database files (persisted)
├── build.gradle # Gradle build configuration
├── Dockerfile # Multi-stage Docker build
└── docker-compose.yml # Container orchestration
🧪 Development
Prerequisites
- Java 21
- Gradle 9.2.0+
- Docker (optional)
Run locally (without Docker)
./gradlew bootRun
Run tests
./gradlew test
Build JAR
./gradlew bootJar
# Output: build/libs/backend-0.0.1-SNAPSHOT.jar