Skip to Content
ReferenceData Model

Data Model

SeqDesk uses Prisma ORM with PostgreSQL. This page describes the core entities and their relationships.

Entity Relationship Overview

User ──< Order ──< Sample >── Study │ │ │ │ ├── Read ├── PipelineRun ──< PipelineRunStep │ │ │ │ ├── Assembly ├── PipelineRunEvent │ │ │ │ └── Bin └── PipelineArtifact ├── Department └── AdminInvite

Core Models

User

FieldTypeDescription
idStringPrimary key (CUID)
emailStringUnique login identifier
passwordStringbcrypt hash
firstName, lastNameStringDisplay name
roleStringRESEARCHER or FACILITY_ADMIN
researcherRoleString?PI, POSTDOC, PHD_STUDENT, MASTER_STUDENT, TECHNICIAN, OTHER
institutionString?Research institution
departmentIdString?Foreign key to Department

Order

FieldTypeDescription
idStringPrimary key (CUID)
orderNumberStringUnique, format: ORD-YYYYMMDD-XXXX
nameString?Descriptive name
statusStringDRAFT, SUBMITTED, or COMPLETED
platformString?ILLUMINA, OXFORD_NANOPORE, PACBIO, etc.
libraryStrategyString?WGS, RNA-Seq, AMPLICON, etc.
librarySourceString?GENOMIC, METAGENOMIC, etc.
customFieldsString?JSON for form builder fields
userIdStringForeign key to User

Sample

FieldTypeDescription
idStringPrimary key (CUID)
sampleIdStringInternal ID (format: S-{timestamp}-{random})
sampleAliasString?User-friendly alias
scientificNameString?Taxonomic name
taxIdString?NCBI taxonomy ID
checklistDataString?JSON — MIxS metadata
checklistUnitsString?JSON — units for metadata
customFieldsString?JSON — custom form fields
orderIdStringForeign key to Order
studyIdString?Foreign key to Study (optional)

Study

FieldTypeDescription
idStringPrimary key (CUID)
titleStringStudy title
aliasString?Unique alias for ENA
checklistTypeString?MIxS checklist type
studyAccessionIdString?ENA accession (PRJEB…)
submittedBooleanWhether submitted to ENA
readyForSubmissionBooleanMarked ready by user
userIdStringForeign key to User (owner)

Read

FieldTypeDescription
idStringPrimary key (CUID)
file1String?Forward reads path (R1)
file2String?Reverse reads path (R2)
checksum1, checksum2String?MD5 checksums
experimentAccessionNumberString?ENA experiment (ERX…)
runAccessionNumberString?ENA run (ERR…)
sampleIdStringForeign key to Sample
sequencingRunIdString?Foreign key to SequencingRun

PipelineRun

FieldTypeDescription
idStringPrimary key (CUID)
runNumberStringUnique, format: {PIPELINE}-{DATE}-{NNN}
pipelineIdStringPipeline identifier (e.g., mag)
statusStringpending, queued, running, completed, failed, cancelled
progressInt0–100
studyIdStringForeign key to Study
userIdStringForeign key to User (who started it)
runFolderStringPath to run directory

Assembly

FieldTypeDescription
idStringPrimary key (CUID)
assemblyNameStringAssembly identifier
assemblyFileStringPath to FASTA file
assemblyAccessionString?ENA accession
sampleIdStringForeign key to Sample
createdByPipelineRunIdStringForeign key to PipelineRun

Bin

FieldTypeDescription
idStringPrimary key (CUID)
binNameStringBin identifier
binFileStringPath to bin FASTA
completenessFloatCheckM completeness (0–100)
contaminationFloatCheckM contamination (0–100)
sampleIdStringForeign key to Sample
createdByPipelineRunIdStringForeign key to PipelineRun

Supporting Models

ModelPurpose
DepartmentUser grouping with name, description, isActive
AdminInviteInvite codes for admin registration
StatusNoteAudit trail on orders (STATUS_CHANGE, SAMPLES_SENT, INTERNAL)
SamplesetMIxS checklist configuration per order
SequencingRunRun-level metadata and QC metrics
SiteSettingsSingleton configuration (branding, ENA, modules)
OrderFormConfigOrder form field definitions
PipelineConfigPer-pipeline enabled flag and settings
PipelineRunStepIndividual process status within a run
PipelineRunEventEvent log from weblog/trace
PipelineArtifactOutput files with metadata
SubmissionENA submission tracking per entity