Skip to main content

Welcome to FoodTech Kitchen Service

FoodTech Kitchen Service is a robust restaurant kitchen management system designed to automate the decomposition of customer orders into station-specific preparation tasks. Built with clean architecture principles and powered by the Command Pattern, it streamlines kitchen operations across multiple cooking stations.

Quick Start

Get up and running in 5 minutes

Architecture

Learn about the hexagonal architecture

API Reference

Explore the REST API endpoints

Domain Model

Understand the core domain entities

What Problem Does It Solve?

When a restaurant order contains multiple products (drinks, hot dishes, salads), the system automatically groups them by station and creates specific tasks for each kitchen workstation:
StationProductsPreparation Time
BAR 🍹Beverages, cocktails3 seconds per drink
HOT_KITCHEN 🔥Main courses, soups7 seconds per dish
COLD_KITCHEN 🥗Salads, desserts5 seconds per dish

Key Features

Hexagonal Architecture

Clear separation of concerns with domain, application, and infrastructure layers

Command Pattern

Station-specific commands encapsulate preparation logic for each kitchen area

SOLID Principles

Built with best practices including SRP, OCP, LSP, ISP, and DIP

REST API

Full REST API for order processing and task management

Docker Ready

Multi-stage Docker builds for easy deployment

Test Coverage

Comprehensive unit and integration tests with TDD approach

Technology Stack

  • Java 17 - Modern Java with records and pattern matching
  • Spring Boot 3.2.1 - Application framework
  • Spring Data JPA - Database persistence
  • H2 Database - In-memory database for development
  • Gradle 8.5 - Build automation
  • JUnit 5 - Testing framework
  • Docker - Containerization

How It Works

1

Receive Order

The system receives an order via REST API containing a table number and list of products
2

Decompose into Tasks

The TaskDecomposer groups products by their station (Bar, Hot Kitchen, Cold Kitchen)
3

Create Commands

For each station, a specific Command is created (PrepareDrinkCommand, PrepareHotDishCommand, etc.)
4

Execute Preparation

Commands are executed synchronously, simulating real-world preparation times
5

Track Status

Tasks can be queried by station and their status tracked (PENDING → IN_PREPARATION → COMPLETED)

Next Steps

Quickstart Guide

Create your first order in minutes

Installation

Set up the development environment

Command Pattern Deep Dive

Learn how the Command Pattern is implemented

API Documentation

Explore the REST API endpoints

Build docs developers (and LLMs) love