Build and Module Architecture
The SureClinical platform is a Maven multi-module project rooted at SC/pom.xml. All modules share a common parent BOM defined in SC/suredms-project/pom.xml, which centralises version management for all third-party libraries.
Parent BOM — suredms-project
SC/suredms-project/pom.xml is the shared dependency management parent. It defines version properties used by all other modules:
| Property | Version |
|---|---|
camunda.bpm.version | 7.19.0 |
hibernate.core.version | 5.6.10.Final |
jackson.version | 2.15.2 |
| Java compiler target | 1.8 |
Module Map
The following modules are active declarations in SC/pom.xml and are built by a root mvn install. They are grouped by build layer. Modules that exist in the workspace but are not currently declared in the root aggregator are listed in Workspace Modules Not in Root Aggregator.
Platform Foundation
| Module | Packaging | Purpose |
|---|---|---|
suredms-project | pom (BOM) | Shared parent and dependency version management |
suredms-common | jar | Shared entity model, abstract services, utilities, and cross-cutting logic |
Content and Parsing
| Module | Packaging | Purpose |
|---|---|---|
suredms-parser | jar | Archive parsing, model conversion, and import/export pipelines |
suredms-xls-parser | jar | Excel/spreadsheet parsing — SureDrive and Study workbook handling |
suredms-report | jar | Reporting resources and report-related helpers |
suredms-flex-api | jar | API surface for legacy/auxiliary clients |
Web Platform
| Module | Packaging | Purpose |
|---|---|---|
suredms-web-client | war | Primary Angular web client — routes, wizards, dashboards, browser UI |
suredms-web-start | jar | Web launch/startup layer for the browser client |
suredms-web | war | Web packaging, JNLP/web delivery artifacts |
Desktop Platform
| Module | Packaging | Purpose |
|---|---|---|
suredms-desktop-client | jar | Desktop client shell and runtime (Java Swing) |
suredms-desktop-client-data | jar | Desktop entity model and shared client-side data definitions |
suredms-desktop-client-connector | jar | Connector layer — remote services, XML parsing, Nuxeo/endpoint integration |
suredms-desktop-client-quality | jar | Quality review, audit, discrepancy, and charting features |
suredms-desktop-client-signing | jar | Signing, certificate, and eSign features |
Workflow and Nuxeo
| Module | Packaging | Purpose |
|---|---|---|
suredms-workflow-platform-core | jar | Workflow model, services, and shared workflow abstractions |
suredms-workflow-platform | jar | Workflow UI, wizard flows, task handling, and platform views |
suredms-nuxeo-client | jar | Nuxeo client integration — remote content/document access |
suredms-nuxeo-extensions | jar/nuxeo | Nuxeo extension modules and server-side integration |
Workspace Modules Not in Root Aggregator
The following modules exist in the SC/ workspace but are not declared as active modules in SC/pom.xml. They are not built when running mvn install from the root and must be built individually if needed.
| Module | Packaging | Purpose | Status |
|---|---|---|---|
suredms-web-service | jar | Spring Boot service — document processing, OCR, redaction, watermark endpoints | Not in root aggregator |
suredms-pwa | jar | Progressive web app (mobile) assets | Not in root aggregator |
suredms-chrome-extension | jar | Browser extension integration | Not in root aggregator |
suredms-simple-api-client | jar | Lightweight API client and integration test helpers | Not in root aggregator |
suredms-dbfiller | jar | Data seeding and archive filler support | Not in root aggregator |
suredms-electron | jar | Electron packaging and desktop shell integration | Commented out in SC/pom.xml |
Dependency and Build Order
The implied build order from dependency relationships is:
1. suredms-project (BOM — no dependencies)
2. suredms-common (depends on: suredms-project)
3. suredms-nuxeo-client (depends on: suredms-common)
4. suredms-parser (depends on: suredms-common, suredms-nuxeo-client)
5. suredms-xls-parser (depends on: suredms-parser)
6. suredms-report (depends on: suredms-common)
7. suredms-workflow-platform-core (depends on: suredms-common)
8. suredms-desktop-client-data (depends on: suredms-common)
9. suredms-desktop-client-connector (depends on: suredms-desktop-client-data, suredms-nuxeo-client)
10. suredms-desktop-client-signing (depends on: suredms-desktop-client-connector)
11. suredms-desktop-client-quality (depends on: suredms-desktop-client-connector)
12. suredms-desktop-client (depends on: all desktop-client-* modules)
13. suredms-workflow-platform (depends on: suredms-workflow-platform-core)
14. suredms-web-client (depends on: suredms-common — web assets only)
15. suredms-web (war packaging, depends on suredms-web-client)
16. suredms-nuxeo-extensions (depends on: suredms-common, suredms-nuxeo-client)
Module Ownership Boundaries
When tracing a SureDrive feature, use these ownership rules:
| Concern | Owner Module(s) |
|---|---|
| Angular UI routes, controllers, templates | suredms-web-client |
| Shared domain entities and service contracts | suredms-common |
| Nuxeo Automation Operations (server-side) | suredms-nuxeo-extensions |
| Nuxeo remote client (Java API calls) | suredms-nuxeo-client |
| Document upload/processing (OCR, redact, watermark) | suredms-web-service |
| Archive import/export parsing | suredms-parser, suredms-xls-parser |
| Desktop UI and quality review | suredms-desktop-client, suredms-desktop-client-quality |
| Digital signing | suredms-desktop-client-signing |
| Desktop ↔ Nuxeo bridge | suredms-desktop-client-connector |
| Workflow engine (desktop) | suredms-workflow-platform, suredms-workflow-platform-core |
| Report definitions and resources | suredms-report |
SureNetwork Global and SureConnect
These are sub-projects within the SC workspace that are not Maven sub-modules of SC/pom.xml but are related platform components:
- SureNetwork Global (SC/SureNetwork-Global/) — the Spring Boot microservice that owns the relational PostgreSQL database (tenants, users, persons, organisations, projects). See SureNetwork Global Database Schema.
- SureConnect (SC/SureConnect/) — Spring Cloud Data Flow connector platform for external system integrations (Medidata, Veeva, etc.). See Connectors and External Integrations.
Dependency graph status: The build order above is based on known module relationships and is accurate for the active modules in
SC/pom.xml. The dependency chains have not been regenerated from actual<dependency>declarations. To produce a verified graph: runmvn dependency:treefrom each module in the Module Map above, or trace all<dependency>entries in each module'spom.xml. Key files: onepom.xmlper active module directory listed in the Module Map.