# mulanbay/mulanbay-server architecture

> Architecture diagram of the GitHub repository mulanbay/mulanbay-server, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mulanbay/mulanbay-server
- Repository: https://github.com/mulanbay/mulanbay-server

## Overview

Mulanbay is a personal life-management assistant exposed as a backend API for separate web and mobile front ends. The central loop is recording personal activity and plans, using scheduled jobs to generate reminders and statistics, then reviewing reports, scores, and predictions. The README documents a wide set of capabilities, including RBAC, NLP, messaging, and monitoring; the sampled source confirms representative API, persistence, and evaluation components, but not all runtime wiring, so undocumented links are omitted.

Main entry points: [`mulanbay-pms/src/main/java/cn/mulanbay/pms/web/controller`](https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/web/controller) (REST controllers), [`mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/domain`](https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/domain) (Personal records), [`mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/job`](https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/job) (Scheduled jobs), [`mulanbay-pms/src/main/java/cn/mulanbay/pms/web/Application.java`](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/web/Application.java) (API application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and access"]
  node_application["API application<br/>[Application.java]"]
  node_controllers["REST controllers"]
  node_auth["RBAC and users<br/>[AuthService.java]"]
end

subgraph group_life["Personal life data"]
  node_personal["Personal records"]
  node_plans["Plans and calendars"]
  node_lifeareas["Life-area modules"]
end

subgraph group_ops["Automation and analysis"]
  node_scheduler["Distributed scheduler<br/>[QuartzServer.java]"]
  node_jobs["Scheduled jobs"]
  node_reminders["Reminders and messages"]
  node_reports["Statistics and reports<br/>[ReportHandler.java]"]
  node_scores["Points and scores"]
  node_ml["ML predictions"]
  node_nlp["NLP analysis<br/>[NLPProcessor.java]"]
end

subgraph group_platform["Shared platform"]
  node_business["Business handlers<br/>[BaseHandler.java]"]
  node_services["Domain services"]
  node_hibernate["Hibernate persistence"]
end

node_users(("User"))
node_frontend["Web/mobile UI"]
node_database[("MySQL database")]

node_users -->|"uses"| node_frontend
node_frontend -->|"calls API"| node_application
node_application -.->|"serves API"| node_controllers
node_controllers -.->|"authorizes users"| node_auth
node_controllers -.->|"records activity"| node_personal
node_controllers -.->|"manages plans"| node_plans
node_personal -->|"covers"| node_lifeareas
node_scheduler -->|"dispatches"| node_jobs
node_jobs -->|"creates calendar entries"| node_plans
node_jobs -->|"aggregates activity"| node_reports
node_jobs -.->|"triggers reminders"| node_reminders
node_reports -.->|"supports evaluation"| node_scores
node_personal -->|"supplies prediction data"| node_ml
node_personal -->|"supplies text analysis"| node_nlp
node_controllers -.->|"delegates operations"| node_business
node_services -->|"persists through"| node_hibernate
node_hibernate -.->|"reads and writes"| node_database

click node_application "https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/web/Application.java"
click node_controllers "https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/web/controller"
click node_auth "https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/service/AuthService.java"
click node_personal "https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/domain"
click node_plans "https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/UserCalendarHandler.java"
click node_lifeareas "https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/domain"
click node_scheduler "https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-schedule/src/main/java/cn/mulanbay/schedule/QuartzServer.java"
click node_jobs "https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/job"
click node_reminders "https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/PmsNotifyHandler.java"
click node_reports "https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/ReportHandler.java"
click node_scores "https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/UserScoreHandler.java"
click node_ml "https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-ai/src/main/java/cn/mulanbay/ai/ml/manager/ModelEvaluatorManager.java"
click node_nlp "https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-ai/src/main/java/cn/mulanbay/ai/nlp/processor/NLPProcessor.java"
click node_business "https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-business/src/main/java/cn/mulanbay/business/handler/BaseHandler.java"
click node_services "https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/service"
click node_hibernate "https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-persistent/src/main/java/cn/mulanbay/persistent/dao/BaseHibernateDao.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_application,node_controllers,node_auth,node_users,node_frontend toneBlue
class node_personal,node_plans,node_lifeareas,node_database toneAmber
class node_scheduler,node_jobs,node_reminders,node_reports,node_scores,node_ml,node_nlp toneMint
class node_business,node_services,node_hibernate toneRose
```

## Components

### API and access

- [API application](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/web/Application.java): `mulanbay-pms/src/main/java/cn/mulanbay/pms/web/Application.java`
- [REST controllers](https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/web/controller): `mulanbay-pms/src/main/java/cn/mulanbay/pms/web/controller`
- [RBAC and users](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/service/AuthService.java): `mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/service/AuthService.java`

### Personal life data

- [Personal records](https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/domain): `mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/domain`
- [Plans and calendars](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/UserCalendarHandler.java): `mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/UserCalendarHandler.java`
- [Life-area modules](https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/domain): `mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/domain`

### Automation and analysis

- [Distributed scheduler](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-schedule/src/main/java/cn/mulanbay/schedule/QuartzServer.java): `mulanbay-schedule/src/main/java/cn/mulanbay/schedule/QuartzServer.java`
- [Scheduled jobs](https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/job): `mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/job`
- [Reminders and messages](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/PmsNotifyHandler.java): `mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/PmsNotifyHandler.java`
- [Statistics and reports](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/ReportHandler.java): `mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/ReportHandler.java`
- [Points and scores](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/UserScoreHandler.java): `mulanbay-pms/src/main/java/cn/mulanbay/pms/handler/UserScoreHandler.java`
- [ML predictions](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-ai/src/main/java/cn/mulanbay/ai/ml/manager/ModelEvaluatorManager.java): `mulanbay-ai/src/main/java/cn/mulanbay/ai/ml/manager/ModelEvaluatorManager.java`
- [NLP analysis](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-ai/src/main/java/cn/mulanbay/ai/nlp/processor/NLPProcessor.java): `mulanbay-ai/src/main/java/cn/mulanbay/ai/nlp/processor/NLPProcessor.java`

### Shared platform

- [Business handlers](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-business/src/main/java/cn/mulanbay/business/handler/BaseHandler.java): `mulanbay-business/src/main/java/cn/mulanbay/business/handler/BaseHandler.java`
- [Domain services](https://github.com/mulanbay/mulanbay-server/tree/master/mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/service): `mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/service`
- [Hibernate persistence](https://github.com/mulanbay/mulanbay-server/blob/master/mulanbay-persistent/src/main/java/cn/mulanbay/persistent/dao/BaseHibernateDao.java): `mulanbay-persistent/src/main/java/cn/mulanbay/persistent/dao/BaseHibernateDao.java`

### Other components

- **User**
- **Web/mobile UI**
- **MySQL database**

## Connections

- User → Web/mobile UI: uses (evidence: `README.md`)
- Web/mobile UI → API application: calls API (evidence: `README.md`)
- API application → REST controllers: serves API
- REST controllers → RBAC and users: authorizes users (evidence: `mulanbay-pms/src/main/java/cn/mulanbay/pms/web/controller/BuyRecordController.java`)
- REST controllers → Personal records: records activity (evidence: `mulanbay-pms/src/main/java/cn/mulanbay/pms/web/controller/BuyRecordController.java`)
- REST controllers → Plans and calendars: manages plans
- Personal records → Life-area modules: covers (evidence: `README.md`)
- Distributed scheduler → Scheduled jobs: dispatches (evidence: `README.md`)
- Scheduled jobs → Plans and calendars: creates calendar entries (evidence: `README.md`)
- Scheduled jobs → Statistics and reports: aggregates activity (evidence: `README.md`)
- Scheduled jobs → Reminders and messages: triggers reminders
- Statistics and reports → Points and scores: supports evaluation
- Personal records → ML predictions: supplies prediction data (evidence: `README.md`)
- Personal records → NLP analysis: supplies text analysis (evidence: `README.md`)
- REST controllers → Business handlers: delegates operations
- Domain services → Hibernate persistence: persists through (evidence: `mulanbay-pms/src/main/java/cn/mulanbay/pms/persistent/service/AuthService.java`)
- Hibernate persistence → MySQL database: reads and writes
