Data Model

Person


Purpose
User accounts and rocket enthusiasts
Data Type
User-generated (one per user account)
Key Property
id (indexed)

Person Properties

PropertyTypeIndexedDescription
idSTRINGYesUnique identifier
givenNameSTRINGNoFirst name
familyNameSTRINGNoLast name
emailSTRINGNoEmail address
pictureSTRINGNoProfile picture URL

Person Neighborhood Diagram

graph LR
    Person((Person))
    Design[Design]
    Model[Model]
    Club[Club]
    Flight[Flight]

    Person -->|CREATES| Design
    Person -->|BUILDS| Model
    Person -->|OWNS| Model
    Person -->|MEMBER_OF| Club
    Flight -->|LAUNCHED_BY| Person

    style Person fill:#4A90E2,stroke:#2E5C8A,stroke-width:3px,color:#fff

Person Relationships

  • (Person)-[:CREATES]->(Design) - Designs created by this person (immutable)
  • (Person)-[:BUILDS]->(Model) - Models built by this person (immutable)
  • (Person)-[:OWNS]->(Model) - Models currently owned (mutable)
  • (Person)-[:MEMBER_OF]->(Club) - Club memberships
  • (Flight)-[:LAUNCHED_BY]->(Person) - Flights launched by this person

Design


Purpose
Rocket design/blueprint with engineering specs and simulations (OpenRocket file)
Data Type
User-generated (one per .ork file, reusable across multiple builds)
Key Property
id (indexed)

Design Properties

PropertyTypeIndexedDescription
idSTRINGYesUnique identifier
nameSTRINGNoDesign name
totalLengthFLOATNoTotal length in meters
maxDiameterFLOATNoMaximum diameter in meters
reflectedInSTRINGNoReference to design file (e.g., .ork file path)

Design Neighborhood Diagram

graph LR
    Design((Design))
    Person[Person]
    Rocket[Rocket]
    Model[Model]
    Configuration[Configuration]
    Flight[Flight]

    Person -->|CREATES| Design
    Design -->|BASED_ON| Rocket
    Model -->|DEFINED_BY| Design
    Design -->|SUPPORTS| Configuration
    Design -->|FLEW_ON| Flight

    style Design fill:#50C878,stroke:#2E7D4E,stroke-width:3px,color:#fff

Design Relationships

  • (Person)-[:CREATES]->(Design) - Who created this design (immutable)
  • (Design)-[:BASED_ON]->(Rocket) - Real rocket this design is based on (optional)
  • (Model)-[:DEFINED_BY]->(Design) - Physical models built from this design
  • (Design)-[:SUPPORTS]->(Configuration) - Motor configurations for this design
  • (Design)-[:FLEW_ON]->(Flight) - Flights using this design

Rocket


Purpose
Real-world rocket reference (not personally owned)
Data Type
Reference data (curated catalog of real-world rockets like "Saturn V", "Falcon 9")
Key Property
id (not indexed)

Rocket Properties

PropertyTypeIndexedDescription
idSTRINGNoUnique identifier
nameSTRINGNoOfficial rocket name
descriptionSTRINGNoDescription of the real rocket
imageSTRINGNoReference image
manufacturerSTRINGNoWho built the real rocket
firstFlightSTRINGNoFirst flight date (YYYY-MM-DD)
statusSTRINGNoActive, Retired, etc.

Rocket Neighborhood Diagram

graph LR
    Rocket((Rocket))
    Design[Design]
    Manufacturer[Manufacturer]

    Design -->|BASED_ON| Rocket
    Manufacturer -->|MAKES| Rocket

    style Rocket fill:#FF6B6B,stroke:#C92A2A,stroke-width:3px,color:#fff

Rocket Relationships

  • (Design)-[:BASED_ON]->(Rocket) - Designs based on this real rocket
  • (Manufacturer)-[:MAKES]->(Rocket) - Who manufactures this rocket

Note: Rocket nodes are reference data for real-world rockets (e.g., "Saturn V", "Falcon 9"), not user-owned items.

Important Distinction - Rocket vs Design vs Model:

The data model separates three related but distinct concepts:

  1. Rocket - Real-world rocket reference (e.g., "Saturn V", "Falcon 9")

    • Reference data for famous/historical rockets
    • Not personally owned
    • Example: The actual Saturn V that went to the moon
  2. Design - Abstract blueprint/specification (e.g., OpenRocket .ork file)

    • Engineering specifications and simulations
    • Can be based on a real Rocket
    • Reusable across multiple builds
    • Example: "My Saturn V Scale Model.ork" design file
  3. Model - Physical build that you own and fly

    • Built according to a Design
    • Actual physical object
    • Example: The 1/100 scale Saturn V model sitting on your shelf

Relationship Flow

Real Rocket (Saturn V)
    ↓ BASED_ON
Design (My Saturn V Scale Model.ork)
    ↓ DEFINED_BY
Model (Physical 1/100 scale build #1)
    ↓ OWNS
Person (You)

This separation allows:

  • Multiple people to build from the same Design
  • One Design to be based on a real Rocket
  • Tracking which real-world rockets inspired your builds
  • Reusing Designs across multiple physical Models

Model


Purpose
Physical rocket build (what you actually construct and fly) Data Type
User-generated (one per physical build, grows with user activity) Key Property
id (not indexed)

Model Properties

PropertyTypeIndexedDescription
idSTRINGNoUnique identifier
nameSTRINGNoName of this physical build
descriptionSTRINGNoBuild notes/description
imageSTRINGNoPhoto of the physical model
buildDateSTRINGNoBuild completion date (YYYY-MM-DD)

Model Neighborhood Diagram

graph LR
    Model((Model))
    Person[Person]
    Design[Design]
    Kit[Kit]
    Flight[Flight]

    Person -->|BUILDS| Model
    Person -->|OWNS| Model
    Model -->|DEFINED_BY| Design
    Model -->|BASED_ON| Kit
    Model -->|LAUNCHED| Flight

    style Model fill:#9B59B6,stroke:#6C3483,stroke-width:3px,color:#fff

Model Relationships

  • (Person)-[:BUILDS]->(Model) - Who built this model (immutable, historical)
  • (Person)-[:OWNS]->(Model) - Current owner (mutable, can change)
  • (Model)-[:DEFINED_BY]->(Design) - Design this model implements (REQUIRED)
  • (Model)-[:BASED_ON]->(Kit) - Kit used to build this model (optional)
  • (Model)-[:LAUNCHED]->(Flight) - Flight records for this model

Configuration


Purpose: Motor configuration for a rocket design (stage setup) Data Type: User-generated (derived from Design, multiple per design for different motor setups) Key Property: id (not indexed)

Configuration Properties

PropertyTypeIndexedDescription
idSTRINGNoUnique identifier
nameSTRINGNoConfiguration name
stageNumberINTEGERNoStage number (1, 2, etc.)
stageActiveBOOLEANNoWhether this stage is active
delaySTRINGNoDelay setting
ignitionEventSTRINGNoWhat triggers ignition
ignitionDelaySTRINGNoDelay before ignition

Configuration Neighborhood Diagram

graph LR
    Configuration((Configuration))
    Design[Design]
    Motor[Motor]
    Simulation[Simulation]
    Flight[Flight]

    Design -->|SUPPORTS| Configuration
    Configuration -->|USES_MOTOR| Motor
    Configuration -->|VALIDATED_BY| Simulation
    Flight -->|LAUNCHED_WITH| Configuration

    style Configuration fill:#F39C12,stroke:#B8730D,stroke-width:3px,color:#fff

Configuration Relationships

  • (Design)-[:SUPPORTS]->(Configuration) - Design that uses this configuration
  • (Configuration)-[:USES_MOTOR]->(Motor) - Motor(s) in this configuration
  • (Configuration)-[:VALIDATED_BY]->(Simulation) - Simulations validating this config
  • (Flight)-[:LAUNCHED_WITH]->(Configuration) - Flights using this configuration

Motor


Purpose: Rocket motor specifications and performance data Data Type: Reference data (bulk imported from thrustcurve.org, comprehensive catalog) Key Property: motorId (indexed), designation (indexed)

Motor Properties

PropertyTypeIndexedDescription
motorIdSTRINGYesUnique motor identifier
designationSTRINGYesMotor designation (e.g., "H128W")
commonNameSTRINGNoCommon name
manufacturerSTRINGNoManufacturer name
diameterFLOATNoDiameter in mm
lengthFLOATNoLength in mm
typeSTRINGNoMotor type (reload, SU, hybrid)
certOrgSTRINGNoCertification organization
impulseClassSTRINGNoImpulse class (A, B, C, etc.)
avgThrustNFLOATNoAverage thrust in Newtons
maxThrustNFLOATNoMaximum thrust in Newtons
totImpulseNsFLOATNoTotal impulse in Newton-seconds
burnTimeSFLOATNoBurn time in seconds
propWeightGFLOATNoPropellant weight in grams
totalWeightGFLOATNoTotal weight in grams
delaysSTRINGNoAvailable delays
propInfoSTRINGNoPropellant information
caseInfoSTRINGNoCase information
dataFilesSTRINGNoData file references
samplesSTRINGNoThrust curve sample data (JSON)
sparkySTRINGNoSparky propellant indicator
availabilitySTRINGNoAvailability status
infoUrlSTRINGNoInformation URL
updatedOnSTRINGNoLast update date

Motor Neighborhood Diagram

graph LR
    Motor((Motor))
    Manufacturer[Manufacturer]
    Configuration[Configuration]

    Manufacturer -->|MAKES| Motor
    Configuration -->|USES_MOTOR| Motor

    style Motor fill:#E74C3C,stroke:#A93226,stroke-width:3px,color:#fff

Motor Relationships

  • (Manufacturer)-[:MAKES]->(Motor) - Who manufactures this motor
  • (Configuration)-[:USES_MOTOR]->(Motor) - Configurations using this motor

Simulation


Purpose: Rocket flight simulation results (from OpenRocket, etc.) Data Type: User-generated (derived from Configuration, one per simulation run) Key Property: id (not indexed)

Simulation Properties

PropertyTypeIndexedDescription
idSTRINGNoUnique identifier
nameSTRINGNoSimulation name
simulatorSTRINGNoSimulator software used
calculatorSTRINGNoCalculator type
maxaltitudeSTRINGNoMaximum altitude
maxvelocitySTRINGNoMaximum velocity
maxaccelerationSTRINGNoMaximum acceleration
maxmachSTRINGNoMaximum Mach number
timetoapogeeSTRINGNoTime to apogee
flighttimeSTRINGNoTotal flight time
groundhitvelocitySTRINGNoGround impact velocity
launchrodvelocitySTRINGNoLaunch rod velocity
deploymentvelocitySTRINGNoDeployment velocity
optimumdelaySTRINGNoOptimum delay
simulationDataSTRINGNoFull simulation data (JSON)

Simulation Neighborhood Diagram

graph LR
    Simulation((Simulation))
    Configuration[Configuration]

    Configuration -->|VALIDATED_BY| Simulation

    style Simulation fill:#D35400,stroke:#A04000,stroke-width:3px,color:#fff

Simulation Relationships

  • (Configuration)-[:VALIDATED_BY]->(Simulation) - Configuration validated by this simulation

Note: All numeric values stored as STRING for flexibility.

Flight


Purpose: Individual flight records with telemetry data Data Type: User-generated transactional data (one per flight, grows with launches) Key Property: id (indexed)

Flight Properties

PropertyTypeIndexedDescription
idSTRINGYesUnique identifier
filenameSTRINGNoOriginal data file name
dateSTRINGNoFlight date
flightNumberINTEGERNoFlight number from altimeter
apogeeAGLFLOATNoApogee above ground level (feet)
groundElevationMSLFLOATNoGround elevation MSL (feet)
drogueDeployTimeFLOATNoDrogue deployment time (seconds)
mainDeployTimeFLOATNoMain deployment time (seconds)
maxDrogueCurrentFLOATNoMax drogue current (amps)
maxMainCurrentFLOATNoMax main current (amps)
flightDataSTRINGNoTime-series flight data (JSON)

Flight Neighborhood Diagram

graph LR
    Flight((Flight))
    Model[Model]
    Design[Design]
    Person[Person]
    Altimeter[Altimeter]
    AltimeterSettings[AltimeterSettings]
    Configuration[Configuration]

    Model -->|LAUNCHED| Flight
    Design -->|FLEW_ON| Flight
    Flight -->|LAUNCHED_BY| Person
    Flight -->|RECORDED_BY| Altimeter
    Flight -->|USED_SETTINGS| AltimeterSettings
    Flight -->|LAUNCHED_WITH| Configuration

    style Flight fill:#1ABC9C,stroke:#117A65,stroke-width:3px,color:#fff

Flight Relationships

  • (Model)-[:LAUNCHED]->(Flight) - Model that flew
  • (Design)-[:FLEW_ON]->(Flight) - Design used in flight
  • (Flight)-[:LAUNCHED_BY]->(Person) - Who launched it
  • (Flight)-[:RECORDED_BY]->(Altimeter) - Altimeter that recorded data
  • (Flight)-[:USED_SETTINGS]->(AltimeterSettings) - Settings used
  • (Flight)-[:LAUNCHED_WITH]->(Configuration) - Configuration used

Altimeter


Purpose: Altimeter device information Data Type: User equipment (one per physical altimeter device owned) Key Property: serialNumber (indexed)

Altimeter Properties

PropertyTypeIndexedDescription
serialNumberSTRINGYesUnique serial number
manufacturerSTRINGNoManufacturer (e.g., PerfectFlite)
modelSTRINGNoModel name
firmwareVersionSTRINGNoFirmware version
softwareVersionSTRINGNoSoftware version

Altimeter Neighborhood Diagram

graph LR
    Altimeter((Altimeter))
    Flight[Flight]

    Flight -->|RECORDED_BY| Altimeter

    style Altimeter fill:#34495E,stroke:#1C2833,stroke-width:3px,color:#fff

Altimeter Relationships

  • (Flight)-[:RECORDED_BY]->(Altimeter) - Flights recorded by this device

AltimeterSettings


Purpose: Altimeter configuration settings for a flight Data Type: User-generated configuration (one per altimeter settings profile) Key Property: id (indexed)

AltimeterSettings Properties

PropertyTypeIndexedDescription
idSTRINGYesUnique identifier
mainDeployAltitudeFLOATNoMain chute deploy altitude (feet AGL)
apogeeDelayFLOATNoApogee delay (seconds)

AltimeterSettings Neighborhood Diagram

graph LR
    AltimeterSettings((AltimeterSettings))
    Flight[Flight]

    Flight -->|USED_SETTINGS| AltimeterSettings

    style AltimeterSettings fill:#7F8C8D,stroke:#566573,stroke-width:3px,color:#fff

AltimeterSettings Relationships

  • (Flight)-[:USED_SETTINGS]->(AltimeterSettings) - Flights using these settings

Kit


Purpose: Commercial rocket kits available for purchase Data Type: Reference data (bulk imported from manufacturer websites, product catalog) Key Property: id (indexed)

Kit Properties

PropertyTypeIndexedDescription
idSTRINGYesUnique identifier
nameSTRINGNoKit name
urlSTRINGNoProduct URL
imageSrcSTRINGNoProduct image URL
priceFLOATNoPrice
currencySTRINGNoCurrency code
skuSTRINGNoSKU/product code
stockStatusSTRINGNoStock availability
descriptionSTRINGNoProduct description
heightFLOATNoKit height
recoverySystemSTRINGNoRecovery system type
projectedMaxAltitudeSTRINGNoProjected max altitude
recommendedEnginesSTRINGNoRecommended engines
estimatedAssemblyTimeSTRINGNoAssembly time estimate
ageRecommendationSTRINGNoAge recommendation
instructionsSTRINGNoInstructions info
instructionsUrlSTRINGNoInstructions URL
launchSystemSTRINGNoLaunch system type
launchRodSizeSTRINGNoLaunch rod size
motorMountSTRINGNoMotor mount type
finMaterialsSTRINGNoFin materials
finArraySTRINGNoFin array configuration
decalTypeSTRINGNoDecal type
parachuteSTRINGNoParachute info
parachuteSizeSTRINGNoParachute size
shockCordTypeSTRINGNoShock cord type
shockCordMountSTRINGNoShock cord mount
linksSTRINGNoRelated links

Kit Neighborhood Diagram

graph LR
    Kit((Kit))
    Manufacturer[Manufacturer]
    Model[Model]

    Manufacturer -->|MAKES| Kit
    Model -->|BASED_ON| Kit

    style Kit fill:#3498DB,stroke:#21618C,stroke-width:3px,color:#fff

Kit Relationships

  • (Manufacturer)-[:MAKES]->(Kit) - Who manufactures this kit
  • (Model)-[:BASED_ON]->(Kit) - Models built from this kit

Manufacturer


Purpose: Rocket/motor/kit manufacturers Data Type: Reference data (curated catalog of manufacturers) Key Property: id (indexed)

Manufacturer Properties

PropertyTypeIndexedDescription
idSTRINGYesUnique identifier
nameSTRINGNoManufacturer name
urlSTRINGNoWebsite URL
logoSTRINGNoLogo image URL
descriptionSTRINGNoDescription
biographySTRINGNoCompany biography
locationSTRINGNoLocation
emailSTRINGNoContact email
telephoneSTRINGNoContact phone
foundingDateSTRINGNoFounding date
foundersSTRINGNoFounder names

Manufacturer Neighborhood Diagram

graph LR
    Manufacturer((Manufacturer))
    Motor[Motor]
    Kit[Kit]
    Rocket[Rocket]

    Manufacturer -->|MAKES| Motor
    Manufacturer -->|MAKES| Kit
    Manufacturer -->|MAKES| Rocket

    style Manufacturer fill:#8E44AD,stroke:#5B2C6F,stroke-width:3px,color:#fff

Manufacturer Relationships

  • (Manufacturer)-[:MAKES]->(Motor) - Motors manufactured
  • (Manufacturer)-[:MAKES]->(Kit) - Kits manufactured
  • (Manufacturer)-[:MAKES]->(Rocket) - Real rockets manufactured

Club


Purpose: Rocketry clubs and organizations Data Type: Reference data (bulk imported from governing body registries) Key Property: id (indexed)

Club Properties

PropertyTypeIndexedDescription
idSTRINGYesUnique identifier
nameSTRINGNoClub name
clubNumberSTRINGNoOfficial club number
locationSTRINGNoLocation
websiteSTRINGNoWebsite URL
imageSTRINGNoClub image/logo

Club Neighborhood Diagram

graph LR
    Club((Club))
    GoverningBody[GoverningBody]
    Person[Person]
    LaunchSite[LaunchSite]
    LaunchEvent[LaunchEvent]

    GoverningBody -->|GOVERNS| Club
    Person -->|MEMBER_OF| Club
    Club -->|MANAGES| LaunchSite
    LaunchEvent -->|HOSTED_BY| Club

    style Club fill:#16A085,stroke:#0E6655,stroke-width:3px,color:#fff

Club Relationships

  • (GoverningBody)-[:GOVERNS]->(Club) - Governing body oversight
  • (Person)-[:MEMBER_OF]->(Club) - Club members
  • (Club)-[:MANAGES]->(LaunchSite) - Launch sites managed
  • (LaunchEvent)-[:HOSTED_BY]->(Club) - Events hosted

GoverningBody


Purpose: Governing organizations (NAR, Tripoli, etc.) Data Type: Reference data (small curated list of governing organizations) Key Property: id (indexed)

GoverningBody Properties

PropertyTypeIndexedDescription
idSTRINGYesUnique identifier
nameSTRINGNoOrganization name

GoverningBody Neighborhood Diagram

graph LR
    GoverningBody((GoverningBody))
    Club[Club]

    GoverningBody -->|GOVERNS| Club

    style GoverningBody fill:#C0392B,stroke:#922B21,stroke-width:3px,color:#fff

GoverningBody Relationships

  • (GoverningBody)-[:GOVERNS]->(Club) - Clubs governed

LaunchSite


Purpose: Physical launch locations Data Type: Reference data (curated list of launch sites) Key Property: id (indexed)

LaunchSite Properties

PropertyTypeIndexedDescription
idSTRINGYesUnique identifier
nameSTRINGNoSite name
latitudeSTRINGNoLatitude coordinate
longitudeSTRINGNoLongitude coordinate
altitudeSTRINGNoAltitude/elevation
descriptionSTRINGNoSite description

LaunchSite Neighborhood Diagram

graph LR
    LaunchSite((LaunchSite))
    Club[Club]
    LaunchEvent[LaunchEvent]

    Club -->|MANAGES| LaunchSite
    LaunchEvent -->|TAKES_PLACE_AT| LaunchSite

    style LaunchSite fill:#27AE60,stroke:#1E8449,stroke-width:3px,color:#fff

LaunchSite Relationships

  • (Club)-[:MANAGES]->(LaunchSite) - Managing club
  • (LaunchEvent)-[:TAKES_PLACE_AT]->(LaunchSite) - Events at this site

LaunchEvent


Purpose: Organized launch events Data Type: Reference data (curated list of launch events) Key Property: id (indexed)

LaunchEvent Properties

PropertyTypeIndexedDescription
idSTRINGYesUnique identifier
nameSTRINGNoEvent name

LaunchEvent Neighborhood Diagram

graph LR
    LaunchEvent((LaunchEvent))
    Club[Club]
    LaunchSite[LaunchSite]

    LaunchEvent -->|HOSTED_BY| Club
    LaunchEvent -->|TAKES_PLACE_AT| LaunchSite

    style LaunchEvent fill:#F4D03F,stroke:#B7950B,stroke-width:3px,color:#000

LaunchEvent Relationships

  • (LaunchEvent)-[:HOSTED_BY]->(Club) - Hosting club
  • (LaunchEvent)-[:TAKES_PLACE_AT]->(LaunchSite) - Event location