{"id":49854390,"url":"https://github.com/jmix-framework/jmix-crm","last_synced_at":"2026-05-14T19:08:41.406Z","repository":{"id":321624611,"uuid":"1079883551","full_name":"jmix-framework/jmix-crm","owner":"jmix-framework","description":"CRM application based on Jmix framework","archived":false,"fork":false,"pushed_at":"2026-04-22T11:47:00.000Z","size":24081,"stargazers_count":13,"open_issues_count":17,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-22T12:33:00.926Z","etag":null,"topics":["b2b","crm","java","jmix","sample"],"latest_commit_sha":null,"homepage":"https://demo.jmix.io/b2b-crm","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jmix-framework.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-20T14:31:07.000Z","updated_at":"2026-04-22T11:45:17.000Z","dependencies_parsed_at":"2025-10-30T17:38:03.705Z","dependency_job_id":null,"html_url":"https://github.com/jmix-framework/jmix-crm","commit_stats":null,"previous_names":["jmix-framework/b2b-crm","jmix-framework/jmix-crm"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jmix-framework/jmix-crm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmix-framework%2Fjmix-crm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmix-framework%2Fjmix-crm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmix-framework%2Fjmix-crm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmix-framework%2Fjmix-crm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmix-framework","download_url":"https://codeload.github.com/jmix-framework/jmix-crm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmix-framework%2Fjmix-crm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33039316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["b2b","crm","java","jmix","sample"],"created_at":"2026-05-14T19:08:40.609Z","updated_at":"2026-05-14T19:08:41.401Z","avatar_url":"https://github.com/jmix-framework.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![CRM](src/main/resources/META-INF/resources/images/logo.svg) B2B CRM\n\nLanguages: [English](README.md) | [Русский](README_ru.md) | [Deutsch](README_de.md) | [Italiano](README_it.md) | [Español](README_es.md)\n\n`B2B CRM` is an enterprise demo application built with Jmix that showcases how to develop **production-ready** business systems\nincluding `customers`, `orders`, `invoicing`, `finance` and `analytics`. \u003cbr\u003eIt reflects real **ERP/CRM** scenarios and demonstrates \nbest practices in domain modeling, UI, security, and business logic implementation.\n\n## 📑 Table of Contents\n\n- [Overview](#-overview)\n- [Technical stack](#-technical-stack)\n- [Add-ons in use](#-add-ons)\n- [Build and run](#-build-and-run)\n- [AI Assistant](#-ai-assistant)\n- [Demo data](#-demo-data)\n- [Accounts](#-application-accounts)\n- [Domain Model](#-domain-model)\n- [Role Model](#-role-model)\n\n## 📖 Overview\n\nThis project models a typical B2B sales workflow:\n\n- Manage the catalog of your products and categories\n- Maintain clients and contacts\n- Track orders and order items\n- Issue invoices and record payments\n- Ask an AI assistant for business insights\n- Monitor tasks and recent activities\n- See sales analytics\n\n## 🛠️ Technical Stack\n\n- Java 21\n- Jmix (spring boot + vaadin)\n- HSQLDB\n\n## 🧩 Add-ons\n\n- Audit\n- Application settings\n- Charts\n- Data tools\n- Dynamic attributes\n- Grid export\n- Local file storage\n- Reports (includes an invoice template)\n\n## 🚀 Build and Run\n\nPrerequisites: Java 21+\n\n### Run Project\n\n1. Run [B2B CRM](.run/crm-app.run.xml) Jmix run configuration or execute\n\n   ```bash\n   ./gradlew bootRun\n   ```\n\n2. [Open application URL](http://localhost:8080/b2b-crm)\n\n### Run via JAR:\n\n```bash\n./gradlew bootJar -Pvaadin.productionMode\n```\n\n```bash\njava -jar build/libs/crm.jar\n```\n\n### Run via Docker\n\n```bash\ndocker build -t jmix-crm .\n```\n\n```bash\ndocker run --rm -p 8080:8080 jmix-crm\n```\n\n### Run via Docker Compose\n\n```bash\ndocker-compose up\n```\n\n## 🤖 AI Assistant\n\nThe application includes a built-in `CRM AI` workspace for natural-language analysis of CRM data.\n\nKey capabilities:\n\n- Ask business questions about clients, orders, invoices, payments, and sales performance\n- Respect the current user's data access permissions and keep conversations private to their author\n- Use built-in business reports such as `Client 360 Report` and `Category Cashflow Risk Allocation Report`\n- Keep the conversation history with automatically generated chat titles\n- Upload files to the conversation and let the assistant analyze supported documents and images\n- Generate interactive links to CRM records directly in responses\n\nConfiguration:\n\n- Set `spring.ai.openai.api-key` in [application.properties](src/main/resources/application.properties) or provide the `SPRING_AI_OPENAI_APIKEY` environment variable\n\nWhen enabled, open the `CRM AI` item in the main menu to start a new conversation.\n\n## 🎲 Demo Data\n\nThe local profile generates demo data on the application start:\n\n- You can disable demo data generation with `crm.generateDemoData` property\n  in [application.properties](src/main/resources/application.properties)\n- Catalog imported from [catalog.xlsx](src/main/resources/demo-data/catalog.xlsx)\n\n## 👥 Application Accounts\n\n| Position        | Username      | Password | Access                                         |\n|-----------------|---------------|----------|------------------------------------------------|\n| Administrator   | ```admin```   | admin    | Full access to all data and settings           |\n| Supervisor      | ```james```   | james    | Manager + catalog management + assign accounts |\n| Manager         | ```manager``` | manager  | Full access to all clients and orders          |\n| Account Manager | ```alice```   | alice    | Only sees clients assigned to Alice Brown      |\n| Account Manager | ```robert```  | robert   | Only sees clients assigned to Robert Taylor    |\n\n## ⚙️ Domain Model\n\n```mermaid\nclassDiagram\n    Client o-- Contact\n    Client o-- Order\n    Client o-- Invoice\n    Client o-- Payment\n    Client o-- Address\n\n    Order *-- OrderItem\n    OrderItem --\u003e CategoryItem\n    Category o-- CategoryItem\n\n    Invoice o-- Payment\n```\n\n## 🔐 Role Model\n\nThe application uses a hierarchical role model:\n\n- `Administrator`: Full access to all application features, entities, and settings.\n- `Supervisor`: Extends the Manager role with additional administrative capabilities:\n    - Manage product catalog (Categories and Category Items).\n    - Assign Account Managers to Clients.\n- `Manager`: Primary role for sales operations.\n    - Full access to Clients, Contacts, Orders, Invoices, and Payments.\n    - Read-only access to the product catalog.\n    - Manage own Tasks.\n- `UI Minimal`: Minimal access, allowing login and basic navigation.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmix-framework%2Fjmix-crm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmix-framework%2Fjmix-crm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmix-framework%2Fjmix-crm/lists"}