BarMate is a Java-based microservices application (Spring Boot + Spring Cloud) that helps users manage their home bar: ingredients, drink recipes, shopping lists, and usage analytics. The system also integrates external APIs (TheCocktailDB, OpenAI) and Python scripts for report generation and data visualization.
To streamline the organization of home bar resources by automating recipes, planning purchases, personalizing user preferences, and tracking ingredient usage.
The project consists of several microservices, each responsible for a specific domain:
inventory-service– ingredient and stock managementrecipe-service– drink recipe database and smart suggestionsshopping-service– shopping list generationuser-service– user preferences, history, and authenticationanalytics-service– statistics, charts, and cost analysis
config-server– centralized configuration (Spring Cloud Config)discovery-service– service registry (Eureka)gateway-service– API gateway (routing and authentication)auth-service– Keycloak integrationdatabase-setup– containerized databases (Docker)
Manages the bar’s ingredient stock, with filtering and integration capabilities.
Features:
- Full CRUD operations (REST API)
- Filtering by name and category (ALCOHOL, MIXER, FRUIT, OTHER)
- Validation and OpenAPI documentation
- AssertJ-based tests
Handles drink recipes and integrates with the external TheCocktailDB API.
Features:
- Create and edit recipes with ingredient lists
- Filtering by name, tags, or alcohol type
- Import and sync recipes from TheCocktailDB
- Suggest drinks based on available stock
- AssertJ-based tests and OpenAPI docs
Generates shopping lists based on missing ingredients for selected recipes.
Features:
- Full CRUD for shopping lists and items
- Missing ingredient calculation based on inventory and recipes
- Manual item adding/checking
- AssertJ-based tests and OpenAPI docs
Manages user profiles, preferences, favorites, and drink history. Integrates with Keycloak for authentication.
Features:
- User registration/login with Keycloak (JWT)
- Edit taste preferences
- Favorite recipes and drink history
- Role-based access control
- AssertJ-based tests and OpenAPI docs
Collects usage statistics and integrates with Python scripts for reports and visual charts.
Features:
- Track prepared drinks and ingredient usage
- Cost and frequency analysis
- Generate visual reports (e.g., top 5 drinks, weekly costs)
- Integration with PythonChartService
- AssertJ-based tests and OpenAPI docs
- Java 17, Spring Boot, Spring Cloud, Spring Security
- PostgreSQL / InfluxDB
- Docker, Docker Compose
- Python (data analysis and chart generation)
- Keycloak (user authentication and management)
- OpenAPI (REST documentation)
- TheCocktailDB API
Each microservice includes unit and integration tests using AssertJ and Spring Test. Sample data is available via data.sql or Java initializer.
🇵🇱 Polish version below
BarMate to mikroserwisowa aplikacja oparta na technologii Java (Spring Boot + Spring Cloud), która pomaga użytkownikom zarządzać domowym barem: składnikami, przepisami na drinki, listami zakupów oraz analizą użycia. System wykorzystuje również zewnętrzne API (TheCocktailDB, OpenAI) oraz skrypty w Pythonie do generowania raportów i wizualizacji danych.
Ułatwienie organizacji zasobów domowego baru przez automatyzację przepisów, planowanie zakupów, personalizację preferencji i monitorowanie zużycia składników.
Projekt składa się z wielu mikroserwisów, z których każdy odpowiada za inną funkcjonalność:
inventory-service– zarządzanie składnikami i stanem magazynowymrecipe-service– baza przepisów i sugestie drinkówshopping-service– generowanie list zakupówuser-service– preferencje użytkownika, historia, autoryzacjaanalytics-service– statystyki, wykresy i analiza kosztów
config-server– centralna konfiguracja (Spring Cloud Config)discovery-service– rejestracja usług (Eureka)gateway-service– brama API (routing, uwierzytelnianie)auth-service– integracja z Keycloakdatabase-setup– konteneryzacja baz danych (Docker)
Zarządza stanem składników w barze oraz umożliwia filtrowanie i integrację z innymi usługami.
Funkcje:
- CRUD dla składników (REST API)
- Filtrowanie po nazwie i kategorii (ALCOHOL, MIXER, FRUIT, OTHER)
- Walidacja danych i dokumentacja OpenAPI
- Testy z użyciem AssertJ
Obsługuje przepisy drinków oraz integrację z zewnętrznym API (TheCocktailDB).
Funkcje:
- Tworzenie i edycja przepisów z listą składników
- Filtrowanie po nazwie, tagach, typie alkoholu
- Import i synchronizacja z TheCocktailDB
- Logika sugestii drinków na podstawie dostępnych składników
- Testy i dokumentacja OpenAPI
Generuje listy zakupów na podstawie brakujących składników z wybranych przepisów.
Funkcje:
- CRUD dla list i pozycji zakupowych
- Obliczanie braków na podstawie inventory i recipe-service
- Możliwość dodawania/odznaczania pozycji ręcznie
- Testy i dokumentacja OpenAPI
Zarządza danymi użytkownika, preferencjami i historią drinków. Integruje się z Keycloak.
Funkcje:
- Rejestracja i logowanie z Keycloak (JWT)
- Edycja preferencji smakowych
- Ulubione przepisy i historia przygotowań
- Autoryzacja ról i dostępów
- Testy i dokumentacja OpenAPI
Zbiera dane statystyczne i integruje się ze skryptami Pythona do generowania raportów.
Funkcje:
- Zbieranie danych o przygotowywanych drinkach i zużyciu składników
- Analiza kosztów i częstotliwości użycia
- Generowanie wykresów i raportów (np. top 5 drinków, koszty tygodniowe)
- Integracja z PythonChartService
- Testy i dokumentacja OpenAPI
- Java 17, Spring Boot, Spring Cloud, Spring Security
- PostgreSQL / InfluxDB
- Docker, Docker Compose
- Python (analiza danych i generowanie wykresów)
- Keycloak (uwierzytelnianie i zarządzanie użytkownikami)
- OpenAPI (dokumentacja REST)
- TheCocktailDB API
Każdy mikroserwis zawiera testy jednostkowe i integracyjne wykorzystujące AssertJ i Spring Test. Dane przykładowe dostępne są poprzez data.sql lub Java initializer.