Data Model
Person
- Purpose
- User accounts and rocket enthusiasts
- Data Type
- User-generated (one per user account)
- Key Property
id(indexed)
Person Properties
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | Yes | Unique identifier |
givenName | STRING | No | First name |
familyName | STRING | No | Last name |
email | STRING | No | Email address |
picture | STRING | No | Profile 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | Yes | Unique identifier |
name | STRING | No | Design name |
totalLength | FLOAT | No | Total length in meters |
maxDiameter | FLOAT | No | Maximum diameter in meters |
reflectedIn | STRING | No | Reference 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | No | Unique identifier |
name | STRING | No | Official rocket name |
description | STRING | No | Description of the real rocket |
image | STRING | No | Reference image |
manufacturer | STRING | No | Who built the real rocket |
firstFlight | STRING | No | First flight date (YYYY-MM-DD) |
status | STRING | No | Active, 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:
-
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
-
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
-
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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | No | Unique identifier |
name | STRING | No | Name of this physical build |
description | STRING | No | Build notes/description |
image | STRING | No | Photo of the physical model |
buildDate | STRING | No | Build 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | No | Unique identifier |
name | STRING | No | Configuration name |
stageNumber | INTEGER | No | Stage number (1, 2, etc.) |
stageActive | BOOLEAN | No | Whether this stage is active |
delay | STRING | No | Delay setting |
ignitionEvent | STRING | No | What triggers ignition |
ignitionDelay | STRING | No | Delay 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
| Property | Type | Indexed | Description |
|---|---|---|---|
motorId | STRING | Yes | Unique motor identifier |
designation | STRING | Yes | Motor designation (e.g., "H128W") |
commonName | STRING | No | Common name |
manufacturer | STRING | No | Manufacturer name |
diameter | FLOAT | No | Diameter in mm |
length | FLOAT | No | Length in mm |
type | STRING | No | Motor type (reload, SU, hybrid) |
certOrg | STRING | No | Certification organization |
impulseClass | STRING | No | Impulse class (A, B, C, etc.) |
avgThrustN | FLOAT | No | Average thrust in Newtons |
maxThrustN | FLOAT | No | Maximum thrust in Newtons |
totImpulseNs | FLOAT | No | Total impulse in Newton-seconds |
burnTimeS | FLOAT | No | Burn time in seconds |
propWeightG | FLOAT | No | Propellant weight in grams |
totalWeightG | FLOAT | No | Total weight in grams |
delays | STRING | No | Available delays |
propInfo | STRING | No | Propellant information |
caseInfo | STRING | No | Case information |
dataFiles | STRING | No | Data file references |
samples | STRING | No | Thrust curve sample data (JSON) |
sparky | STRING | No | Sparky propellant indicator |
availability | STRING | No | Availability status |
infoUrl | STRING | No | Information URL |
updatedOn | STRING | No | Last 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | No | Unique identifier |
name | STRING | No | Simulation name |
simulator | STRING | No | Simulator software used |
calculator | STRING | No | Calculator type |
maxaltitude | STRING | No | Maximum altitude |
maxvelocity | STRING | No | Maximum velocity |
maxacceleration | STRING | No | Maximum acceleration |
maxmach | STRING | No | Maximum Mach number |
timetoapogee | STRING | No | Time to apogee |
flighttime | STRING | No | Total flight time |
groundhitvelocity | STRING | No | Ground impact velocity |
launchrodvelocity | STRING | No | Launch rod velocity |
deploymentvelocity | STRING | No | Deployment velocity |
optimumdelay | STRING | No | Optimum delay |
simulationData | STRING | No | Full 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | Yes | Unique identifier |
filename | STRING | No | Original data file name |
date | STRING | No | Flight date |
flightNumber | INTEGER | No | Flight number from altimeter |
apogeeAGL | FLOAT | No | Apogee above ground level (feet) |
groundElevationMSL | FLOAT | No | Ground elevation MSL (feet) |
drogueDeployTime | FLOAT | No | Drogue deployment time (seconds) |
mainDeployTime | FLOAT | No | Main deployment time (seconds) |
maxDrogueCurrent | FLOAT | No | Max drogue current (amps) |
maxMainCurrent | FLOAT | No | Max main current (amps) |
flightData | STRING | No | Time-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
| Property | Type | Indexed | Description |
|---|---|---|---|
serialNumber | STRING | Yes | Unique serial number |
manufacturer | STRING | No | Manufacturer (e.g., PerfectFlite) |
model | STRING | No | Model name |
firmwareVersion | STRING | No | Firmware version |
softwareVersion | STRING | No | Software 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | Yes | Unique identifier |
mainDeployAltitude | FLOAT | No | Main chute deploy altitude (feet AGL) |
apogeeDelay | FLOAT | No | Apogee 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | Yes | Unique identifier |
name | STRING | No | Kit name |
url | STRING | No | Product URL |
imageSrc | STRING | No | Product image URL |
price | FLOAT | No | Price |
currency | STRING | No | Currency code |
sku | STRING | No | SKU/product code |
stockStatus | STRING | No | Stock availability |
description | STRING | No | Product description |
height | FLOAT | No | Kit height |
recoverySystem | STRING | No | Recovery system type |
projectedMaxAltitude | STRING | No | Projected max altitude |
recommendedEngines | STRING | No | Recommended engines |
estimatedAssemblyTime | STRING | No | Assembly time estimate |
ageRecommendation | STRING | No | Age recommendation |
instructions | STRING | No | Instructions info |
instructionsUrl | STRING | No | Instructions URL |
launchSystem | STRING | No | Launch system type |
launchRodSize | STRING | No | Launch rod size |
motorMount | STRING | No | Motor mount type |
finMaterials | STRING | No | Fin materials |
finArray | STRING | No | Fin array configuration |
decalType | STRING | No | Decal type |
parachute | STRING | No | Parachute info |
parachuteSize | STRING | No | Parachute size |
shockCordType | STRING | No | Shock cord type |
shockCordMount | STRING | No | Shock cord mount |
links | STRING | No | Related 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | Yes | Unique identifier |
name | STRING | No | Manufacturer name |
url | STRING | No | Website URL |
logo | STRING | No | Logo image URL |
description | STRING | No | Description |
biography | STRING | No | Company biography |
location | STRING | No | Location |
email | STRING | No | Contact email |
telephone | STRING | No | Contact phone |
foundingDate | STRING | No | Founding date |
founders | STRING | No | Founder 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | Yes | Unique identifier |
name | STRING | No | Club name |
clubNumber | STRING | No | Official club number |
location | STRING | No | Location |
website | STRING | No | Website URL |
image | STRING | No | Club 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | Yes | Unique identifier |
name | STRING | No | Organization 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | Yes | Unique identifier |
name | STRING | No | Site name |
latitude | STRING | No | Latitude coordinate |
longitude | STRING | No | Longitude coordinate |
altitude | STRING | No | Altitude/elevation |
description | STRING | No | Site 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
| Property | Type | Indexed | Description |
|---|---|---|---|
id | STRING | Yes | Unique identifier |
name | STRING | No | Event 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