A backend application for comparing product prices across multiple stores.
Built with Java, Spring Boot, and Gradle, this project processes CSV product data and provides endpoints for alerts, baskets, discounts, and product information.
IDE: IntelliJ IDEA
Language: Java (OpenJDK 17.0.15)
Build Tool: Gradle (Kotlin DSL)
Framework: Spring Boot
CSV Handling: BufferedReader (no external libraries)
Frontend: HTML, JavaScript
src/
├── main/
│ ├── java/
│ │ └── org.App/
│ │ ├── Controllers/
│ │ │ ├── AlertsController
│ │ │ ├── BasketController
│ │ │ ├── DiscountsController
│ │ │ ├── HomeController
│ │ │ └── ProductsController
│ │ ├── Loaders/
│ │ │ ├── DiscountsLoader
│ │ │ └── ProductsLoader
│ │ ├── Models/
│ │ │ ├── Alerts
│ │ │ ├── Discounts
│ │ │ └── Products
│ │ ├── Service/
│ │ │ ├── AlertsService
│ │ │ ├── DiscountsService
│ │ │ └── ProductsService
│ │ └── Main
│ └── resources/
│ ├── data/
│ │ ├── kaufland_2025-05-01.csv
│ │ ├── kaufland_2025-05-08.csv
│ │ ├── kaufland_discounts_2025-05-01.csv
│ │ ├── kaufland_discounts_2025-05-08.csv
│ │ ├── lidl_2025-05-01.csv
│ │ ├── lidl_2025-05-08.csv
│ │ ├── lidl_discounts_2025-05-01.csv
│ │ ├── lidl_discounts_2025-05-08.csv
│ │ ├── mega_2025-05-20.csv
│ │ ├── mega_2025-05-23.csv
│ │ ├── mega_discounts_2025-05-20.csv
│ │ ├── mega_discounts_2025-05-23.csv
│ │ ├── profi_2025-05-01.csv
│ │ ├── profi_2025-05-08.csv
│ │ ├── profi_discounts_2025-05-01.csv
│ │ └── profi_discounts_2025-05-08.csv
│ └── static/
│ ├── add-alert.html
│ ├── basket.html
│ └── delete-alert.html
└────/
- Download the project
Go to the master branch → click Code → Download ZIP - Open in IntelliJ
Unzip the project
Right-click the folder → Open Folder as IntelliJ IDEA Project
Click Trust Project if prompted - Set JDK
Click SetupSDK in the top-right yellow ribbon
Select ms-17 (OpenJDK 17.0.15) - Load Gradle
Click Load in the bottom-right corner to load Gradle build files - Run the Application
Navigate to src/main/java/org.App/Main
Click the green Run arrow - Access the Backend
Open your browser at: http://localhost:8080/home
Example endpoints: /products/store/{storeName} → storeName: lidl | kaufland | profi | mega/products/category/{categoryName}
Replace {storeName} or {categoryName} with your desired value
IntelliJ IDEA and OpenJDK 17 must be installed
Tested with ms-17, JDK version 17.0.15
View product lists per store
Monitor discounts and promotions
Manage product alerts
Handle baskets with products
Simple HTML/JS frontend for interaction
CSV files are loaded via BufferedReader without external libraries
Products and discounts are parsed and stored in memory
Supports multiple stores with versioned CSVs
Home: /home
Products: /products/store/{storeName}
Alerts: /alerts
Basket: /basket
Discounts: /discounts