Bounded contexts
- Identity & Access: Account/User/Role/Permission, auth login/logout, profile.
- Membership: member profile, card binding, membership detail/address, segmentation, recovery.
- Commerce/Benefit: Coupon, CouponClaim, CouponInformation, CouponLog.
- Store & Facilities: Store, StoreLocation, Facility, FavoriteStore.
- Reservation & Course: Course, CourseSlot, Reservation, ReservedCourse.
- Engagement: News, Banner, PushNotification, NotificationPreference, TopicSubscription.
- Chat & Dialog: RoomChat, Chat, Dialog, NavigateDialog.
- Loyalty: Stamp, StampCampaign.
- Support: OTP, RemoteConfig, NationalHoliday, Counter.
Core entities (evidence from migration names)
- Accounts/Users:
accounts, users, social_media
- Membership aggregate:
memberships, membership_details, membership_addresses, pos_memberships, card_expiration_dates
- Coupon aggregate:
coupons, coupon_claims, coupon_information, coupon_stores, coupon_logs
- Reservation aggregate:
reservations, reserved_courses, courses, course_slots, national_holidays
- Engagement:
news, membership_news, push_notifications, push_notification_tokens, notification_preferences
- Chat:
room_chats, chats, dialogs, navigate_dialogs
- Store:
stores, store_locations, store_facilities, facilities
Ownership / responsibilities
app/Modules/<Domain> memegang controller/model/service per domain.
- Route layer membagi concern admin vs mobile, lalu middleware menentukan policy/guard.
- Data consistency terutama di Membership-Coupon-Reservation chain perlu perhatian saat perubahan schema.