Pack extends project code base with functionality to support additional business domain. Pack is a web application or a part of it, it adds logic specific to the business it covers. You may think of a pack as a web application with its unique design, database and features (e.g. an online shop) or as a plug-in which integrates into a web application reusing its resources while adding new features. And it can be both: an online shop website with its unique design and features which is also integrated into a control panel web application to reuse its CMS.
Domain model (Hibernate)
All packs share the same code base including domain objects. To avoid having pack-specific domain objects attached directly to core domain objects (to isolate pack-related domain from core domain), each pack has its own Pack domain object with its domain objects attached to it. Such Pack inherits from the generic Pack domain object which is attached to core User domain object. And pack-related code is isolated in pack packages, generic code is not aware nor depend on any pack.
This picture shows how core domain objects isolate from MyPack domain objects.