A Spring Boot application that syncs and displays products from the Famme Shopify API.
- Backend: Spring Boot 3.5.6, Java 25
- Database: PostgreSQL (Docker)
- Migrations: Flyway
- Frontend: Thymeleaf + HTMX
- Build: Gradle
-
Start PostgreSQL:
docker-compose up -d
-
Run the application:
./gradlew bootRun
-
Open browser:
http://localhost:8080
- Automatic product sync from Famme API on startup
- Product catalog display with variants
- Dynamic UI updates using HTMX
- Manual product creation via web form
src/main/java/com/example/productapp/
├── ProductAppApplication.java # Main application entry point
├── Product.java # Product entity
├── ProductVariant.java # Variant entity
├── ProductRepository.java # Data access
├── ProductController.java # Web endpoints
└── ProductSyncService.java # API sync service
PostgreSQL database with two tables:
products- Product informationproduct_variants- Product variants with pricing and availability
Managed via Flyway migrations in src/main/resources/db/migration/