# zhaoweijie346-code/ck-project architecture

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

- Interactive diagram: https://gitdiagram.com/zhaoweijie346-code/ck-project
- Repository: https://github.com/zhaoweijie346-code/ck-project

## Overview

LifeOps is a session-isolated personal task execution application. Its primary workflow accepts text or files, processes source content, proposes an extraction for user review, creates a Matter, and supports planning and execution with reminders, evidence, and workflows. The graph also preserves identity, audit, and shared event delivery as major capabilities. Source excerpts support the core intake, extraction, Matter, planning, evidence, workflow, reminder, identity, and audit connections; some README-described subsystems use their exact module directories because their implementations were not sampled.

Main entry points: [`frontend/src/api/lifeops.ts`](https://github.com/zhaoweijie346-code/ck-project/blob/main/frontend/src/api/lifeops.ts) (API client), [`backend/src/main/java/com/lifeops/matter/internal/DefaultMatterApplicationService.java`](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/matter/internal/DefaultMatterApplicationService.java) (Matter service), [`backend/src/main/java/com/lifeops/source/internal/SourceApplicationService.java`](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/SourceApplicationService.java) (Source processing), [`backend/src/main/java/com/lifeops/extraction/internal/DefaultExtractionApplicationService.java`](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/extraction/internal/DefaultExtractionApplicationService.java) (Extraction service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_intake["Intake and confirmation"]
  node_source_http["Source endpoints"]
  node_source_service["Source processing"]
  node_source_store[("Source records")]
  node_source_worker["File processing"]
  node_ocr["OCR adapter"]
  node_object_storage["Private file storage"]
  node_extraction["Extraction service"]
  node_llm["LLM gateway"]
end

subgraph group_execution["Matter execution"]
  node_matter["Matter service"]
  node_planning["Plans and steps"]
  node_evidence["Evidence service"]
  node_evidence_guard["Completion guard"]
  node_evidence_storage["Evidence storage"]
  node_workflow["Workflow service"]
  node_reminder["Reminder service"]
  node_quartz["Quartz scheduler"]
  node_notifications["Notification delivery"]
end

subgraph group_support["User and oversight"]
  node_identity["Identity service"]
  node_audit["Audit timeline"]
end

subgraph group_shared["Shared infrastructure"]
  node_outbox["Outbox dispatch"]
  node_event_recorder["Event recorder"]
end

subgraph group_client["Web client"]
  node_web["Vue application<br/>[App.vue]"]
  node_api_client["API client<br/>[lifeops.ts]"]
end

node_user(("User"))
node_postgres[("PostgreSQL")]
node_minio[("MinIO")]
node_model_provider{{"Bailian model"}}
node_tesseract{{"Tesseract"}}

node_user -->|"uses"| node_web
node_web -->|"requests"| node_api_client
node_api_client -->|"submits source"| node_source_http
node_source_http -->|"invokes"| node_source_service
node_source_service -->|"writes source"| node_source_store
node_source_service -->|"stores file"| node_object_storage
node_object_storage -->|"reads and writes"| node_minio
node_source_worker -->|"updates processing"| node_source_store
node_source_worker -.->|"extracts text"| node_ocr
node_ocr -.->|"runs OCR"| node_tesseract
node_api_client -->|"requests extraction"| node_extraction
node_extraction -->|"loads source"| node_source_service
node_extraction -->|"generates candidate"| node_llm
node_llm -.->|"calls model"| node_model_provider
node_api_client -->|"confirms candidate"| node_matter
node_matter -->|"loads candidate"| node_extraction
node_matter -->|"records events"| node_event_recorder
node_api_client -->|"manages plan"| node_planning
node_planning -->|"loads Matter"| node_matter
node_planning -.->|"generates plan"| node_llm
node_api_client -->|"manages evidence"| node_evidence
node_evidence -->|"checks Matter"| node_matter
node_evidence -->|"stores attachments"| node_evidence_storage
node_evidence_storage -->|"reads and writes"| node_minio
node_matter -->|"checks completion"| node_evidence_guard
node_api_client -->|"manages workflow"| node_workflow
node_workflow -->|"checks Matter"| node_matter
node_workflow -->|"records events"| node_event_recorder
node_api_client -->|"manages reminders"| node_reminder
node_reminder -->|"loads Matter"| node_matter
node_reminder -->|"schedules jobs"| node_quartz
node_quartz -->|"triggers delivery"| node_notifications
node_api_client -->|"authenticates"| node_identity
node_identity -->|"records events"| node_event_recorder
node_api_client -->|"queries timeline"| node_audit
node_outbox -->|"publishes events"| node_audit
node_event_recorder -->|"writes outbox"| node_postgres
node_source_store -->|"persists source"| node_postgres
node_audit -->|"queries events"| node_postgres

click node_web "https://github.com/zhaoweijie346-code/ck-project/blob/main/frontend/src/App.vue"
click node_api_client "https://github.com/zhaoweijie346-code/ck-project/blob/main/frontend/src/api/lifeops.ts"
click node_source_http "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/web/SourceController.java"
click node_source_service "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/SourceApplicationService.java"
click node_source_store "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/SourceDocumentRepository.java"
click node_source_worker "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/SourceProcessingWorker.java"
click node_ocr "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/TesseractCliOcrPort.java"
click node_object_storage "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/MinioSourceObjectStorage.java"
click node_extraction "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/extraction/internal/DefaultExtractionApplicationService.java"
click node_llm "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/llm/api/ExtractionLlmPort.java"
click node_matter "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/matter/internal/DefaultMatterApplicationService.java"
click node_planning "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/planning/internal/DefaultPlanningApplicationService.java"
click node_evidence "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/evidence/internal/DefaultEvidenceApplicationService.java"
click node_evidence_guard "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/evidence/internal/EvidenceMatterCompletionGuard.java"
click node_evidence_storage "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/evidence/internal/MinioEvidenceObjectStorage.java"
click node_workflow "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/workflow/internal/DefaultWorkflowApplicationService.java"
click node_reminder "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/reminder/internal/DefaultReminderApplicationService.java"
click node_quartz "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/reminder/internal/ReminderQuartzScheduler.java"
click node_notifications "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/reminder/internal/DefaultNotificationApplicationService.java"
click node_identity "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/identity/internal/DefaultIdentityApplicationService.java"
click node_audit "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/audit/internal/DefaultAuditQueryService.java"
click node_outbox "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/shared/internal/outbox/OutboxDispatcher.java"
click node_event_recorder "https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/shared/internal/outbox/JpaDomainEventRecorder.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_source_http,node_source_service,node_source_store,node_source_worker,node_ocr,node_object_storage,node_extraction,node_llm,node_user toneBlue
class node_matter,node_planning,node_evidence,node_evidence_guard,node_evidence_storage,node_workflow,node_reminder,node_quartz,node_notifications,node_postgres,node_minio toneAmber
class node_identity,node_audit toneMint
class node_outbox,node_event_recorder toneRose
class node_web,node_api_client,node_model_provider,node_tesseract toneIndigo
```

## Components

### Intake and confirmation

- [Source endpoints](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/web/SourceController.java): `backend/src/main/java/com/lifeops/source/internal/web/SourceController.java`
- [Source processing](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/SourceApplicationService.java): `backend/src/main/java/com/lifeops/source/internal/SourceApplicationService.java`
- [Source records](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/SourceDocumentRepository.java): `backend/src/main/java/com/lifeops/source/internal/SourceDocumentRepository.java`
- [File processing](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/SourceProcessingWorker.java): `backend/src/main/java/com/lifeops/source/internal/SourceProcessingWorker.java`
- [OCR adapter](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/TesseractCliOcrPort.java): `backend/src/main/java/com/lifeops/source/internal/TesseractCliOcrPort.java`
- [Private file storage](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/source/internal/MinioSourceObjectStorage.java): `backend/src/main/java/com/lifeops/source/internal/MinioSourceObjectStorage.java`
- [Extraction service](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/extraction/internal/DefaultExtractionApplicationService.java): `backend/src/main/java/com/lifeops/extraction/internal/DefaultExtractionApplicationService.java`
- [LLM gateway](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/llm/api/ExtractionLlmPort.java): `backend/src/main/java/com/lifeops/llm/api/ExtractionLlmPort.java`

### Matter execution

- [Matter service](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/matter/internal/DefaultMatterApplicationService.java): `backend/src/main/java/com/lifeops/matter/internal/DefaultMatterApplicationService.java`
- [Plans and steps](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/planning/internal/DefaultPlanningApplicationService.java): `backend/src/main/java/com/lifeops/planning/internal/DefaultPlanningApplicationService.java`
- [Evidence service](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/evidence/internal/DefaultEvidenceApplicationService.java): `backend/src/main/java/com/lifeops/evidence/internal/DefaultEvidenceApplicationService.java`
- [Completion guard](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/evidence/internal/EvidenceMatterCompletionGuard.java): `backend/src/main/java/com/lifeops/evidence/internal/EvidenceMatterCompletionGuard.java`
- [Evidence storage](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/evidence/internal/MinioEvidenceObjectStorage.java): `backend/src/main/java/com/lifeops/evidence/internal/MinioEvidenceObjectStorage.java`
- [Workflow service](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/workflow/internal/DefaultWorkflowApplicationService.java): `backend/src/main/java/com/lifeops/workflow/internal/DefaultWorkflowApplicationService.java`
- [Reminder service](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/reminder/internal/DefaultReminderApplicationService.java): `backend/src/main/java/com/lifeops/reminder/internal/DefaultReminderApplicationService.java`
- [Quartz scheduler](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/reminder/internal/ReminderQuartzScheduler.java): `backend/src/main/java/com/lifeops/reminder/internal/ReminderQuartzScheduler.java`
- [Notification delivery](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/reminder/internal/DefaultNotificationApplicationService.java): `backend/src/main/java/com/lifeops/reminder/internal/DefaultNotificationApplicationService.java`

### User and oversight

- [Identity service](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/identity/internal/DefaultIdentityApplicationService.java): `backend/src/main/java/com/lifeops/identity/internal/DefaultIdentityApplicationService.java`
- [Audit timeline](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/audit/internal/DefaultAuditQueryService.java): `backend/src/main/java/com/lifeops/audit/internal/DefaultAuditQueryService.java`

### Shared infrastructure

- [Outbox dispatch](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/shared/internal/outbox/OutboxDispatcher.java): `backend/src/main/java/com/lifeops/shared/internal/outbox/OutboxDispatcher.java`
- [Event recorder](https://github.com/zhaoweijie346-code/ck-project/blob/main/backend/src/main/java/com/lifeops/shared/internal/outbox/JpaDomainEventRecorder.java): `backend/src/main/java/com/lifeops/shared/internal/outbox/JpaDomainEventRecorder.java`

### Web client

- [Vue application](https://github.com/zhaoweijie346-code/ck-project/blob/main/frontend/src/App.vue): `frontend/src/App.vue`
- [API client](https://github.com/zhaoweijie346-code/ck-project/blob/main/frontend/src/api/lifeops.ts): `frontend/src/api/lifeops.ts`

### Other components

- **User**
- **PostgreSQL**
- **MinIO**
- **Bailian model**
- **Tesseract**

## Connections

- User → Vue application: uses
- Vue application → API client: requests
- API client → Source endpoints: submits source
- Source endpoints → Source processing: invokes
- Source processing → Source records: writes source
- Source processing → Private file storage: stores file
- Private file storage → MinIO: reads and writes
- File processing → Source records: updates processing
- File processing → OCR adapter: extracts text
- OCR adapter → Tesseract: runs OCR
- API client → Extraction service: requests extraction
- Extraction service → Source processing: loads source
- Extraction service → LLM gateway: generates candidate
- LLM gateway → Bailian model: calls model
- API client → Matter service: confirms candidate
- Matter service → Extraction service: loads candidate
- Matter service → Event recorder: records events
- API client → Plans and steps: manages plan
- Plans and steps → Matter service: loads Matter
- Plans and steps → LLM gateway: generates plan
- API client → Evidence service: manages evidence
- Evidence service → Matter service: checks Matter
- Evidence service → Evidence storage: stores attachments
- Evidence storage → MinIO: reads and writes
- Matter service → Completion guard: checks completion
- API client → Workflow service: manages workflow
- Workflow service → Matter service: checks Matter
- Workflow service → Event recorder: records events
- API client → Reminder service: manages reminders
- Reminder service → Matter service: loads Matter
- Reminder service → Quartz scheduler: schedules jobs
- Quartz scheduler → Notification delivery: triggers delivery
- API client → Identity service: authenticates
- Identity service → Event recorder: records events
- API client → Audit timeline: queries timeline
- Outbox dispatch → Audit timeline: publishes events
- Event recorder → PostgreSQL: writes outbox
- Source records → PostgreSQL: persists source
- Audit timeline → PostgreSQL: queries events
