Skip to main content
Version: 3.0.1

Software Design Specification: Architecture Overview

Document Type: System-Level (Tier 1) Status: Draft Last Updated: 2026-01-25


1. Purpose

This document describes the high-level architecture of the PCR Analysis System (PCRI.AI). It provides:

  • System decomposition into major components
  • Technology stack and platform choices
  • Architectural patterns employed
  • Layer organization and dependencies

This is a synthesis document. It does not trace individual requirements. Domain-specific design is covered in Tier 2 documents.


2. System Overview

PCRI.AI is a web-based clinical laboratory application for automated analysis, quality control, and reporting of real-time PCR data. The system enables:

  • Automated run file import and analysis
  • Rule-based classification and QC evaluation
  • Multi-site laboratory management
  • LIMS integration and export

Key characteristics:

  • Serverless cloud deployment (AWS Lambda via Laravel Vapor)
  • Multi-tenant architecture with site-based access control
  • No PII/PHI storage (all data anonymized prior to analysis)

3. High-Level Architecture

3.1 Layer Diagram

This diagram illustrates the high-level component organization. It does not specify all interactions.

3.2 Component Overview

ComponentPurposeLocation
Vue.js SPAUser interface, state managementresources/frontend/src/
REST APIHTTP endpoints for frontendroutes/api.php, app/Http/Controllers/
ControllersRequest handling, response formattingapp/Http/Controllers/ (~145 controllers)
ActionsSingle-responsibility business operationsapp/Actions/ (~40 action classes)
Analyzer EngineCore analysis orchestrationapp/Analyzer/
Rules EngineRule execution and evaluationapp/Analyzer/Rules/ (~40 rule classes)
RepositoriesData access abstractionapp/Analyzer/Contracts/, implementations
Eloquent ModelsORM entitiesapp/*.php, app/Analyzer/*.php

4. Technology Stack

4.1 Backend

TechnologyVersionPurpose
PHP8.3+Server-side language
Laravel12.xWeb framework
Laravel Vapor-Serverless deployment platform
Eloquent ORM-Database abstraction
Laravel Passport/Sanctum-API authentication

4.2 Frontend

TechnologyPurpose
Vue.jsReactive UI framework
VuexState management (13 store modules)
Vue RouterClient-side routing

4.3 Infrastructure (AWS)

ServicePurpose
AWS LambdaServerless compute (via Vapor)
Aurora MySQL v2Primary database (serverless)
Amazon S3File storage (run files, exports, archives)
Amazon CognitoUser authentication, MFA, SSO
Amazon ElastiCacheRedis caching layer
Amazon SQSMessage queue for async processing
Amazon SESEmail delivery (alternative to SendGrid)
Amazon DynamoDBSession storage (Vapor default)

4.4 Third-Party Services

ServicePurpose
PusherReal-time WebSocket communication
SendGridPrimary email delivery
SentryError tracking and performance monitoring

5. Architectural Patterns

5.1 Domain-Driven Design Elements

The system implements DDD patterns for organizing business logic:

Domain Services:

DirectoryPurpose
app/Analyzer/Core analysis engine - coordinates rule execution
app/Services/Business logic services
app/Actions/Single-responsibility use case handlers

Domain Models:

ModelContractDescription
WellAnalyzableWellCore well entity with observations
ObservationAnalyzableObservationTarget observation entity
Run-Run file entity
Target-Target configuration entity

Value Objects:

ClassPurpose
WellNumberImmutable well position (A1-H12)
HasUuidUUID trait for entity identification

5.2 Repository Pattern

Configuration data is accessed through repository contracts:

Location: app/Analyzer/Contracts/ (contracts), app/Analyzer/ (implementations)

5.3 Strategy Pattern (Rules Engine)

Analysis rules are implemented as pluggable strategies:

ComponentLocationPurpose
Rule Contractapp/Analyzer/Contracts/AnalyzerRuleContract.phpDefines rule interface
Rule Classesapp/Analyzer/Rules/*.phpConcrete rule implementations
Rule Modelapp/Rule.phpDatabase model with strategy mapping

Mapping: The programmatic_rule_name field maps to PHP class names via App\Analyzer\Rules\{StudlyCase}Rule.

5.4 Factory Pattern

FactoryLocationPurpose
Analyzer Factoryapp/Analyzer/Creates analysis components
RunFileConverter Factoriesapp/RunFileConverter/Creates file conversion components
Normalizer Factoryapp/Analyzer/Normalizer/Creates data normalizers

5.5 MVC + Service Layer

Controllers delegate complex operations to Actions or Services, maintaining thin controller design.


6. Analysis Pipeline

The core analytical workflow follows a 6-stage pipeline:

Supported file formats: .sds, .pcrd, .eds, .ixo


7. Frontend Architecture

7.1 Directory Structure

resources/frontend/src/
├── components/ # Reusable UI components (~50 directories)
├── mixins/ # Shared component logic
│ ├── resolution/ # Error resolution workflows
│ ├── well-multiselect/# Well selection handling
│ └── client-configurations/
├── store/modules/ # Vuex state management (13 modules)
├── views/ # Page-level components
├── router/ # Vue Router configuration
├── plugins/ # Vue plugins
└── utils/ # Utility functions

7.2 State Management (Vuex)

ModulePurpose
auth.jsUser authentication and session
runs.jsRecent runs and upload progress
features.jsFeature flag toggles
auditOptions.jsAudit trail filtering
clientConfigurations.jsClient settings
runOptions.jsRun filtering options
ljChartSettings.jsLevey-Jennings chart configuration

7.3 Component Patterns

PatternPurposeExample
MixinsShared logic across componentsWells.js, FilterWells.js
Store ModulesCentralized stateauth.js, runs.js
Resolution ComponentsError handling workflowsWellResolutionProposalForm.js

8. Deployment Architecture

8.1 Serverless Model

8.2 Multi-Tenant Architecture

  • Client isolation: Each client has dedicated AWS account with S3 and Cognito
  • Site-based access: Users assigned to sites; data filtered by site permissions
  • Single codebase: Shared application deployed per-client

9. Key Architectural Decisions

DecisionRationale
Serverless (Lambda/Vapor)Auto-scaling, pay-per-use, reduced operational overhead
Aurora Serverless v2Cost optimization for variable workloads, auto-scaling
Strategy pattern for rulesNew rules added without modifying engine core
Repository patternTestability, alternative implementations for testing
Vuex for statePredictable state management, component decoupling
UUID primary keysDistributed generation, no collision risk
Soft deletesAudit trail preservation, data recovery

10. Technology Selection Rationale

This section documents the rationale for key AWS technology selections.

10.1 Compute: AWS Lambda

CriteriaAWS LambdaAmazon EC2
Cost modelPay per executionPay for provisioned capacity
ScalingAutomaticManual/Auto Scaling Groups
ManagementZero infrastructureFull server management
Cold startYes (mitigated by Vapor)No
Best forEvent-driven, variable loadConstant, predictable load

Decision: Lambda selected due to variable workload patterns and reduced operational overhead.

10.2 Authentication: Amazon Cognito

CriteriaAmazon CognitoLaravel Native
User capacityUnlimited scalingDatabase-bound
FeaturesMFA, TOTP, SSO, SAMLBasic auth only
SecurityAWS security featuresApplication-level
Cross-device syncBuilt-inCustom implementation
FederationOpenID Connect, SAMLCustom integration
CostPay-as-you-goInfrastructure cost

Decision: Cognito selected due to enterprise requirements (SAML/SSO, MFA) and scalability needs.

10.3 Database: Aurora Serverless v2

CriteriaAurora Serverless v2Standard Aurora
CapacityAuto-adjustingFixed provisioned
Cost modelPay per ACU usedPay for provisioned
ScalingAutomatic, seamlessManual or scheduled
ManagementMinimalStandard RDS management
Cold startMinimal (v2)None

Decision: Aurora Serverless v2 selected due to variable workload patterns and cost optimization.


DocumentLocationPurpose
System Contextsds-02-system-context.mdExternal actors and boundaries
Data Architecturesds-04-data-architecture.mdGlobal data model
Security Architecturesds-05-security-architecture.mdAuth, authz, audit
Cross-Cutting Concernssds-06-cross-cutting.mdLogging, errors, config
Database Referencereference/sds-ref-database.mdFull schema
API Referencereference/sds-ref-api.mdEndpoint documentation
Legacy SDD Architecture../sdd/sdd-architecture.mdPredecessor documentation