{"id":29259055,"url":"https://github.com/glenncai/open-bi-platform-backend-microservices","last_synced_at":"2025-07-04T06:14:01.207Z","repository":{"id":192177674,"uuid":"686220082","full_name":"glenncai/open-bi-platform-backend-microservices","owner":"glenncai","description":"An open-source business intelligence platform based on microservice architecture.","archived":false,"fork":false,"pushed_at":"2023-10-09T07:59:28.000Z","size":40221,"stargazers_count":34,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-10-09T08:46:06.132Z","etag":null,"topics":["eureka","java","mysql","openai","rabbitmq","redis","spring-boot","spring-cloud","spring-cloud-config","spring-cloud-gateway"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/glenncai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-02T04:26:42.000Z","updated_at":"2023-10-04T09:29:13.000Z","dependencies_parsed_at":"2023-09-03T06:26:54.806Z","dependency_job_id":null,"html_url":"https://github.com/glenncai/open-bi-platform-backend-microservices","commit_stats":null,"previous_names":["glenncai/open-bi-platform-backend-microservices"],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/glenncai/open-bi-platform-backend-microservices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glenncai%2Fopen-bi-platform-backend-microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glenncai%2Fopen-bi-platform-backend-microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glenncai%2Fopen-bi-platform-backend-microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glenncai%2Fopen-bi-platform-backend-microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/glenncai","download_url":"https://codeload.github.com/glenncai/open-bi-platform-backend-microservices/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glenncai%2Fopen-bi-platform-backend-microservices/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263457310,"owners_count":23469302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["eureka","java","mysql","openai","rabbitmq","redis","spring-boot","spring-cloud","spring-cloud-config","spring-cloud-gateway"],"created_at":"2025-07-04T06:14:00.498Z","updated_at":"2025-07-04T06:14:01.193Z","avatar_url":"https://github.com/glenncai.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch3 align=\"center\"\u003eThis project is ongoing🔥🔥🔥\u003c/h3\u003e\n\n\u003ca href=\"https://glenncai.com\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/images/introduction-white.png\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/images/introduction-dark.png\"\u003e\n    \u003cimg src=\"assets/images/introduction-white.png\" alt=\"An open-source business intelligence platform based on microservice architecture.\" /\u003e\n  \u003c/picture\u003e\n  \u003ch1 align=\"center\"\u003eOpen BI Platform\u003c/h1\u003e\n\u003c/a\u003e\n\n\u003cp align=\"center\"\u003e\n  An open-source business intelligence platform based on microservice architecture.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#introduction\"\u003e\u003cstrong\u003eIntroduction\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#architecture\"\u003e\u003cstrong\u003eArchitecture\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#ai-analysis-workflow\"\u003e\u003cstrong\u003eAI Analysis Workflow\u003c/strong\u003e\u003c/a\u003e · \n  \u003ca href=\"#rabbitmq-workflow\"\u003e\u003cstrong\u003eRabbitMQ Workflow\u003c/strong\u003e\u003c/a\u003e · \n  \u003ca href=\"#open-ai\"\u003e\u003cstrong\u003eOpen AI\u003c/strong\u003e\u003c/a\u003e · \n  \u003ca href=\"#tech-stack\"\u003e\u003cstrong\u003eTech Stack\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#setting-up-locally\"\u003e\u003cstrong\u003eSetting Up Locally\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#project-overview\"\u003e\u003cstrong\u003eProject Overview\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"#license\"\u003e\u003cstrong\u003eLicense\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\nCheck [Frontend Source Code](https://github.com/glenncai/open-bi-platform-frontend) 👀\n\nCheck [Python Poe Service Source Code](https://github.com/glenncai/open-bi-platform-poe-service) 👀\n\n## Introduction\n\nAn open-source business intelligence platform based on microservice architecture. By leveraging ChatGPT technology,\nusers only need to import raw Excel data and enter their analysis requirements. The\nsystem will then automatically generate visual charts and draw analytical conclusions, significantly reducing the cost\nof manual data analysis.\n\n\u003cbr /\u003e\n\n## Architecture\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/images/open-bi-platform-architecture-white.png\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/images/open-bi-platform-architecture-dark.png\"\u003e\n  \u003cimg src=\"assets/images/open-bi-platform-architecture-white.png\" alt=\"Architecture\" /\u003e\n\u003c/picture\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## AI Analysis Workflow\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/images/ai-analytics-workflow-white.png\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/images/ai-analytics-workflow-dark.png\"\u003e\n  \u003cimg src=\"assets/images/ai-analytics-workflow-white.png\" alt=\"AI Analysis Workflow\" /\u003e\n\u003c/picture\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## RabbitMQ Workflow\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/images/rabbitmq-white.png\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/images/rabbitmq-dark.png\"\u003e\n  \u003cimg src=\"assets/images/rabbitmq-white.png\" alt=\"RabbitMQ Workflow\" /\u003e\n\u003c/picture\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## Open AI\n\nThis project uses the ChatGPT service provided by [Poe](https://poe.com/). I created\nan [Open BI Platform Bot](https://poe.com/open-bi-platform) based on\nChatGPT 3.5 in Poe.\nThe user's input will be processed by the backend into `custom prompt` requirements for\nthe Open BI Platform Bot, and the\nreturned results include [Apache ECharts](https://echarts.apache.org/zh/index.html) `chart code`\nand `data conclusion`.\nIncredibly, with the support of custom\nprompts, the\nOpen BI Platform Bot can generate result formats with up to 100% accuracy🔥. This means the chart code can be directly\nused by the front end, **solving the problem that different data requires different charts and backends cannot handle\nthe\npain points of all cases**.\n\nBesides, thanks to [snowby666](https://github.com/snowby666) for the open source Poe reverse engineering tool\n[poe-api-wrapper](https://github.com/snowby666/poe-api-wrapper). Based on this tool, I\nbuilt a RESTful API for calling the Open BI Platform Bot. The API is written using Python and the Flask framework and\nhandles multiple requests in a multi-threaded manner. If you are interested, you can check out the\n[open-bi-platform-poe-service](https://github.com/glenncai/open-bi-platform-poe-service) project.\n\n\u003cbr /\u003e\n\nOpen BI Platform Bot Preview:\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets/images/open-bi-platform-bot-white.png\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"assets/images/open-bi-platform-bot-dark.png\"\u003e\n  \u003cimg src=\"assets/images/open-bi-platform-bot-white.png\" alt=\"Open BI Platform Bot Preview\" /\u003e\n\u003c/picture\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\nCode snippet calling the Open BI Platform Bot service:\n\n```java\npackage com.glenncai.openbiplatform.aianalytics.manager;\n\nimport cn.hutool.core.lang.TypeReference;\nimport cn.hutool.json.JSONUtil;\nimport com.glenncai.openbiplatform.aianalytics.exception.enums.AiExceptionEnum;\nimport com.glenncai.openbiplatform.aianalytics.model.dto.ChatRequest;\nimport com.glenncai.openbiplatform.aianalytics.model.dto.ChatResponse;\nimport com.glenncai.openbiplatform.aianalytics.utils.HttpUtils;\nimport com.glenncai.openbiplatform.common.common.BaseResponse;\nimport com.glenncai.openbiplatform.common.constant.AiConstant;\nimport com.glenncai.openbiplatform.common.exception.BusinessException;\nimport lombok.extern.slf4j.Slf4j;\nimport org.springframework.stereotype.Service;\n\n/**\n * Communicate with AI service (e.g. OpenAI, Google Bard, POE, etc.)\n *\n * @author Glenn Cai\n * @version 1.0 07/26/2023\n */\n@Service\n@Slf4j\npublic class AiManager {\n\n  /**\n   * Process AI chat\n   *\n   * @param chatRequest chat request body, including 'message' and 'key'\n   * @return AI response\n   */\n  public String doAiChat(ChatRequest chatRequest) {\n    String jsonStr = JSONUtil.toJsonStr(chatRequest);\n    String result = HttpUtils.post(AiConstant.AI_API_URL, jsonStr);\n    TypeReference\u003cBaseResponse\u003cChatResponse\u003e\u003e typeRef = new TypeReference\u003c\u003e() {\n    };\n\n    BaseResponse\u003cChatResponse\u003e response = JSONUtil.toBean(result, typeRef, false);\n    if (response == null) {\n      throw new BusinessException(AiExceptionEnum.AI_RESPONSE_ERROR.getCode(),\n                                  AiExceptionEnum.AI_RESPONSE_ERROR.getMessage());\n    }\n    if (response.getCode() != 0) {\n      throw new BusinessException(AiExceptionEnum.AI_RESPONSE_ERROR.getCode(),\n                                  AiExceptionEnum.AI_RESPONSE_ERROR.getMessage());\n    }\n\n    return response.getData().getContent();\n  }\n}\n```\n\nIn the future, I will integrate this AiManager into an SDK to facilitate the use of other projects.\n\n\u003cbr /\u003e\n\nExample of results returned by Open BI Platform Bot:\n\n\u003cimg src=\"assets/images/open-bi-platform-bot-return-result.png\" alt=\"Example of results returned by Open BI Platform Bot\" /\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## Tech Stack\n\n#### Backend\n\n* Java\n* Spring Boot\n* Spring Cloud Gateway\n* Spring Cloud Config\n* Spring Cloud Circuit Breaker\n* Spring Cloud Load Balancer\n* Spring Cloud Sleuth\n* Spring AOP\n* Spring Cache\n* Eureka\n* OpenFeign\n* RabbitMQ\n* Redis\n* MySQL\n* MyBatis-Plus\n* Zipkin\n* Docker\n\n#### Frontend\n\n* Next.js\n* React\n* TypeScript\n* Tailwind CSS\n* Apache ECharts\n\n#### Python AI service\n\n* Python\n* Flask\n* poe-api-wrapper\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## Setting Up Locally\n\n#### For Microservices Backend:\n\n1. Java 17\n2. MySQL 8.0+\n3. Redis\n4. RabbitMQ\n5. Zipkin\n\n#### For Frontend:\n\n1. Node.js 18.0+\n2. npm 9.0+\n\n#### For Python AI service:\n\n1. Python 3.9\n\n\u003cbr /\u003e\n\n```shell\ndocker-compose -f docker-compose.env.yml up -d\n```\n\n```shell\ndocker-compose -f docker-compose.service.yml up -d\n```\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## Project Overview\n\nMany APIs have been implemented on the backend, while the frontend still does not call these APIs. The project is still\nin progress.\n\nAuthentication:\n\n\u003cimg src=\"assets/images/project-overview-login.png\" alt=\"authentication\" /\u003e\n\u003cimg src=\"assets/images/project-overview-register.png\" alt=\"authentication\" /\u003e\n\nDashboard:\n\u003cimg src=\"assets/images/project-overview-dashboard.png\" alt=\"dashboard\" /\u003e\n\u003cimg src=\"assets/images/project-overview-dashboard-dark.png\" alt=\"dashboard\" /\u003e\n\nAI Analytics:\n\n\u003cimg src=\"assets/images/project-overview-analytics.png\" alt=\"AI Analytics\" /\u003e\n\nUser Management:\n\n\u003cimg src=\"assets/images/project-overview-user-management.png\" alt=\"User management\" /\u003e\n\nMy Account:\n\n\u003cimg src=\"assets/images/project-overview-myaccount.png\" alt=\"My account\" /\u003e\n\nFeedback:\n\n\u003cimg src=\"assets/images/project-overview-feedback.png\" alt=\"Feedback\" /\u003e\n\nShowing Responsive Design:\n\n\u003cimg src=\"assets/images/project-overview-responsive.png\" alt=\"Responsive design\" /\u003e\n\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## License\n\nLicensed under\nthe [Apache-2.0 license](https://github.com/glenncai/open-bi-platform-backend-microservices/blob/main/LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglenncai%2Fopen-bi-platform-backend-microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglenncai%2Fopen-bi-platform-backend-microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglenncai%2Fopen-bi-platform-backend-microservices/lists"}