PrimerLab uses a 3-layer architecture for modularity and maintainability.
CLI Layer → Workflow Layer → Core Layer
- Parses command-line arguments
- Loads configuration
- Orchestrates workflows
- Handles output
- PCR workflow (
workflows/pcr/) - qPCR workflow (
workflows/qpcr/) - Step-by-step execution
- Workflow-specific QC
- Shared utilities
- Primer3 wrapper
- BLAST integration
- Thermodynamic calculations
- Data models
✅ Allowed:
cli → workflows → core
❌ Not Allowed:
core → workflows
workflows → CLI
primerlab/
├── api/ # Public API
├── cli/ # Command-line interface
├── core/ # Shared utilities
│ ├── insilico/ # In-silico PCR
│ ├── offtarget/# BLAST integration
│ ├── report/ # Report generation
│ ├── tools/ # External wrappers
│ └── models/ # Data models
└── workflows/ # Workflow modules
├── pcr/
└── qpcr/
See .dev/High-Level Documentation/architecture.md for detailed architecture documentation.