How bottle-note/bottle-note-api-server works
BottleNote is a modular-monolith API for whiskey enthusiasts to discover bottles and share tasting experiences. The user-facing journey includes browsing bottle information and reviews, then recording ratings or reviews and managing a personal collection; follow-based discovery and tasting history are supporting branches. Admin APIs manage catalog and curation data, while scheduled batch jobs support popularity and reporting. The tree and excerpts identify these subsystems, but most controller-to-service wiring was not shown; uncertain connections are therefore dashed and uncited.
Main entry points: app/bottlenote Product Endpoints · batch/bottlenote Scheduled Jobs · app/bottlenote Admin Endpoints · AlcoholQueryController.java Bottle Browsing
Components 22
Product API
- Product Endpoints
bottlenote-product-api/src/main/java/app/bottlenote - Bottle Browsing
bottlenote-product-api/src/main/java/app/bottlenote/alcohols/controller/AlcoholQueryController.java - Review Endpoints
bottlenote-product-api/src/main/java/app/bottlenote/review/controller/ReviewController.java - Account Access
bottlenote-product-api/src/main/java/app/bottlenote/user/controller/AuthV2Controller.java
Bottle Experiences
- Bottle Discovery
bottlenote-mono/src/main/java/app/bottlenote/alcohols/service/AlcoholQueryService.java - Reviews
bottlenote-mono/src/main/java/app/bottlenote/review/service/ReviewService.java - Ratings
bottlenote-mono/src/main/java/app/bottlenote/rating/service/RatingQueryService.java - Tasting History
bottlenote-mono/src/main/java/app/bottlenote/history/service/UserHistoryQueryService.java - Accounts and Follows
bottlenote-mono/src/main/java/app/bottlenote/user - Curated Discovery
bottlenote-mono/src/main/java/app/bottlenote/curation/service/CurationSpecQueryService.java - Active Banners
bottlenote-mono/src/main/java/app/bottlenote/banner/service/BannerQueryService.java - Public MFDS Data
bottlenote-mono/src/main/java/app/bottlenote/mfds/service/MfdsPublicQueryService.java - Rating Records
bottlenote-mono/src/main/java/app/bottlenote/rating/domain/RatingRepository.java - Cursor Pagination
bottlenote-mono/src/main/java/app/bottlenote/global/pagination/HmacCursorCodec.java
Admin Operations
- Admin Endpoints
bottlenote-admin-api/src/main/kotlin/app/bottlenote - Catalog Management
bottlenote-admin-api/src/main/kotlin/app/bottlenote/alcohols/presentation - Review Moderation
bottlenote-admin-api/src/main/kotlin/app/bottlenote/review/presentation/AdminReviewController.kt
Background Insights
- Scheduled Jobs
bottlenote-batch/src/main/java/app/batch/bottlenote - Popularity Rollups
bottlenote-batch/src/main/java/app/batch/bottlenote/job/popularity - Best Review Selection
bottlenote-batch/src/main/java/app/batch/bottlenote/job/ranking - Visitor Telemetry
bottlenote-batch/src/main/java/app/batch/bottlenote/visitor
Other components
- Whiskey Enthusiast
Connections 21
- Whiskey Enthusiast → Product Endpoints: uses
- Product Endpoints → Bottle Browsing: routes bottle queries
bottlenote-product-api/src/main/java/app/bottlenote/alcohols/controller/AlcoholQueryController.java - Product Endpoints → Review Endpoints: routes reviews
bottlenote-product-api/src/main/java/app/bottlenote/review/controller/ReviewController.java - Product Endpoints → Account Access: routes account access
- Review Endpoints → Reviews: calls
bottlenote-product-api/src/main/java/app/bottlenote/review/controller/ReviewController.java - Bottle Browsing → Bottle Discovery: delegates queries
bottlenote-product-api/src/main/java/app/bottlenote/alcohols/controller/AlcoholQueryController.java - Whiskey Enthusiast → Ratings: records ratings
- Whiskey Enthusiast → Tasting History: views tasting history
- Whiskey Enthusiast → Accounts and Follows: follows users
- Whiskey Enthusiast → Curated Discovery: explores curation
- Whiskey Enthusiast → Active Banners: views banners
- Whiskey Enthusiast → Public MFDS Data: searches public data
- Ratings → Rating Records: reads ratings
bottlenote-mono/src/main/java/app/bottlenote/rating/service/RatingQueryService.java - Bottle Discovery → Cursor Pagination: verifies cursors
bottlenote-mono/src/main/java/app/bottlenote/alcohols/service/AlcoholQueryService.java - Public MFDS Data → Cursor Pagination: encodes cursors
bottlenote-mono/src/main/java/app/bottlenote/mfds/service/MfdsPublicQueryService.java - Admin Endpoints → Catalog Management: routes catalog work
bottlenote-admin-api/src/main/kotlin/app/bottlenote/alcohols/presentation/AdminAlcoholAttributeController.kt - Admin Endpoints → Review Moderation: routes moderation
bottlenote-admin-api/src/main/kotlin/app/bottlenote/review/presentation/AdminReviewController.kt - Review Moderation → Reviews: queries reviews
- Scheduled Jobs → Popularity Rollups: schedules rollups
- Scheduled Jobs → Best Review Selection: schedules selection
- Scheduled Jobs → Visitor Telemetry: consumes telemetry