B2B CRM is an enterprise demo application built with Jmix that showcases how to develop production-ready business systems including customers, orders, invoicing, finance and analytics.
It reflects real ERP/CRM scenarios and demonstrates best practices in domain modeling, UI, security and business logic implementation.
This project models a typical B2B sales workflow:
- Manage catalog of your products and categories
- Maintain clients and contacts
- Track orders and order items
- Issue invoices and record payments
- Monitor tasks and recent activities
- See sales analytics
- Java 21
- Jmix 2.7
- Spring Boot 3
- HSQLDB
- Audit
- Application settings
- Charts
- Data tools
- Dynamic attributes
- Grid export
- Local file storage
- Reports (includes an invoice template)
Prerequisites: Java 21+
-
Run B2B CRM Jmix run configuration or execute
./gradlew bootRun
./gradlew bootJar -Pvaadin.productionModejava -jar build/libs/crm.jardocker build -t jmix-crm .docker run --rm -p 8080:8080 jmix-crmdocker-compose upThe local profile generates demo data on the application start:
- You can disable demo data generation with
crm.generateDemoDataproperty in application.properties - Catalog imported from catalog.xlsx
| Position | Username | Password |
|---|---|---|
| Administrator | admin |
admin |
| Supervisor | supervisor |
supervisor |
| Manager | manager |
manager |
classDiagram
Client o-- Contact
Client o-- Order
Client o-- Invoice
Client o-- Payment
Client o-- Address
Order *-- OrderItem
OrderItem --> CategoryItem
Category o-- CategoryItem
Invoice o-- Payment
The application uses a hierarchical role model:
Administrator: Full access to all application features, entities, and settings.Supervisor: Extends the Manager role with additional administrative capabilities:- Manage product catalog (Categories and Category Items).
- Assign Account Managers to Clients.
Manager: Primary role for sales operations.- Full access to Clients, Contacts, Orders, Invoices, and Payments.
- Read-only access to the product catalog.
- Manage own Tasks.
UI Minimal: Minimal access, allowing login and basic navigation.