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, and production-ready deployment configurations.
- Node.js (v22 or later)
- Java JDK 21+
- Python 3.x
- Gradle
- Docker and Docker Compose
- Git
git clone https://github.com/yourusername/w10-template.git
cd w10-template
- Navigate to the
client
directory:cd client
- Install dependencies:
npm install
- Navigate to the
server
directory:cd server
- Build the project:
./gradlew build
- Navigate to the
llm
directory:cd llm
- Install dependencies:
python3 -m venv .venv source .venv/bin/activate pip3 install -r requirements.txt
docker compose up database -d
cd client
npm run dev
The client will be available at http://localhost:3000.
cd server
./gradlew bootRun
The server API will be available at http://localhost:8080.
cd llm
python main.py
The LLM service will be available at http://localhost:5000.
- Built with SvelteKit and TypeScript for a modern, reactive UI.
- TailwindCSS for styling.
- Components and routes are organized in the
src
directory. - 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/java
directory. - Tests are in the
src/test/java
directory.
- Built with FastAPI for AI-powered meal recommendations.
- Integrates with external LLM APIs for generating personalized suggestions.
- Source code is in the
llm
directory.
cd client
npm run build
cd server
./gradlew clean build
The 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 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
│
├── 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.