This repository contains a full-stack canteen application with a SvelteKit client, Spring Boot server, and LLM recommendation service. It demonstrates modern web application architecture and DevOps practices.
This project includes:
- Client: SvelteKit with TypeScript, TailwindCSS, and reusable UI components for browsing canteen meals.
- Server: Spring Boot Java application with RESTful APIs, gRPC communication, and PostgreSQL integration.
- LLM Service: Python FastAPI service for generating meal recommendations using AI.
- Database: PostgreSQL for storing user preferences and application data.
- DevOps: Dockerized services, CI/CD pipelines, Helm charts, and production-ready deployment configurations.
- Node.js (v22 or later)
- Java JDK 21+
- Python 3.x
- Gradle
- Docker and Docker Compose
- Git
- Kubernetes and Helm (for Kubernetes deployment)
git clone https://github.com/yourusername/w07-template.git
cd w07-template- Navigate to the
clientdirectory:cd client - Install dependencies:
npm install
- Navigate to the
serverdirectory:cd server - Build the project:
./gradlew build
- Navigate to the
llmdirectory:cd llm - Install dependencies:
python3 -m venv .venv source .venv/bin/activate pip3 install -r requirements.txt
docker compose up database -dcd client
npm run devThe client will be available at http://localhost:3000.
cd server
./gradlew bootRunThe server API will be available at http://localhost:8080.
cd llm
python main.pyThe LLM service will be available at http://localhost:5000.
Access Prometheus at http://localhost:9090
Access Grafana at http://localhost:3001
- Built with SvelteKit and TypeScript for a modern, reactive UI.
- TailwindCSS for styling.
- Components and routes are organized in the
srcdirectory. - Features meal browsing, favoriting, and user preferences.
- Built with Spring Boot for scalable and maintainable server services.
- Includes gRPC communication with the LLM service.
- PostgreSQL integration for user preferences storage.
- RESTful APIs for canteen data and user management.
- Gradle is used for dependency management and building.
- Source code is in the
src/main/javadirectory. - Tests are in the
src/test/javadirectory.
- Built with FastAPI for AI-powered meal recommendations.
- Integrates with external LLM APIs for generating personalized suggestions.
- Source code is in the
llmdirectory.
cd client
npm run buildcd server
./gradlew clean buildThe project includes Docker configurations for containerized deployment.
- Build and start all services:
docker compose up --build
- Access the application:
- Client: http://localhost:3000
- Server: http://localhost:8080
- LLM Service: http://localhost:5000
- Database: PostgreSQL on port 5432
The project includes Helm charts for Kubernetes deployment.
-
Update the
tumidvalue inhelm/canteen-app/values.yaml:tumid: your-tum-id
-
Install the Helm chart:
helm install canteen ./helm/canteen-app
The project includes GitHub Actions workflows for:
- Building Docker Images: Automatically builds and pushes Docker images to GitHub Container Registry.
- Deploying Docker Images: Deploys the application to a production environment using Docker Compose.
├── client/ # SvelteKit client
│ ├── src/ # Source code
│ ├── static/ # Static assets
│ └── package.json # Client dependencies
│
├── server/ # Spring Boot server
│ ├── src/ # Source code including gRPC services
│ ├── build.gradle # Gradle build file
│ └── Dockerfile # Server Dockerfile
|
├── grafana/provisioning # Grafana service
│ ├── dashboards # Grafana dashboard
│ ├── sample-dashboard.json # Example dashboard
| ├── datasources # Loki service
│ └── notifiers # Alerts
|
├── Loki # Loki service
│ └── loki-config.yaml # Loki configuration
|
├── Prometheus # Prometheus service
│ └── prometheus.yaml # Prometheus configuration
|
├── Promtail # Promtail service
│ └── promtail.yaml # Promtail configuration
|
├── llm/ # Python LLM service
│ ├── main.py # FastAPI application
│ ├── requirements.txt # Python dependencies
│ └── Dockerfile # LLM service Dockerfile
│
├── docs/ # API documentation (Bruno collection)
├── compose.yml # Docker Compose for local development
└── .github/workflows/ # CI/CD workflows
API documentation is available in the docs/CanteenApp Bruno directory as a Bruno collection for testing endpoints.
This project is licensed under the MIT License.