My Rocket and Launch-tracking "app", as implemented in Airtable

The Rocketry Forum

Help Support The Rocketry Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.

neil_w

OpenRocketeer
TRF Supporter
Joined
Jul 14, 2015
Messages
16,642
Reaction score
11,411
Location
Northern NJ
In another thread I talked about a phone app that I wanted. Since it is basically a database app, I decided to get off my lazy butt and see what I could do with an off-the-shelf free configurable DB app. I chose Airtable because it seemed to have decent capabilities and was highly reviewed. Here I will document what I did and how it works; maybe this will be useful to someone. I haven't yet figured out if there's a way to share my app so others could use it (or use it as a starting point); if anyone wants to try it I'll look into it.

Overall I'm pretty impressed with what I've been able to achieve in only a couple days of work. It's far from perfect, and it doesn't do everything as beautifully as it it were a custom app, but I'll take it. If I were willing to upgrade to a paid version, I could get some fancier features, but I am not. If they had a cheaper tier I might consider it but their paid plans seem geared more towards business use and not towards hobbyists like myself.

To review my objectives for this:
  1. I want a clean, easy way to track my rocket flights. With paper and pencil, I often forget; if I remember, the info is often incomplete and then I have to remember to transcribe it RocketReviews or whatever and it just doesn't happen.
  2. It needs work on an iPhone and/or iPad and not be dependent on a cellular connection See post #28.
  3. Cloud sync and web front end is highly desirable so I can edit in a browser on the computer
  4. It should be easy to enter flight info in the field.
  5. It should be easy to use in general, so I'll actually use it.
Following posts will show what I built.
 
Last edited:
OVERALL APP ORGANIZATION

Airtable provides a bunch of sample applications that you can use a starting point. I didn't see anything close to what I wanted, so I started from scratch. Each separate application is called a "Base". I called mine "Launches"; I would have used a longer name but the iPhone app has very limited available space for the name, and truncates with ellipses if you exceed it. That is annoying, so I made the name short enough to fit.

You're able to set a background color and add an icon, and I was pleased to see their assortment of icons included a flying rocket, so it looks like this at the top of the screen
1615658420182.png

So from the Airtable home screen, I click on Launches and I'm in.

TABLES

A database is basically a collection of tables. The first thing I did was define the tables I wanted. My first pass wasn't perfect, but after a few iterations I've gotten it pretty close to where I want it. I helped that I had already thought it through pretty well.

The UI makes creating and editing tables very easy.

Here's a high-level summary of my different tables; in later posts I'll go into the interesting ones in more detail. The tables show as a list of tabs at the top of the screen (you can rearrange as desired).
1615660872238.png
  1. Rockets: This is a list of all my rockets, including fixed data (name, motor mount diameter, weight, recommended motors etc.) and links to flights and launches. I have 21 rockets, so it didn't take very long to fill this all in. For those with hundreds... well, that's your problem. :) Note that you can import from Excel or other sources if you have info entered there.
  2. Flights: This is the table I really created this app for: a list of all my rocket flights with a pretty full set of data for each. Unfortunately I don't have good documentation of all my past flights, so this will be for all my future flights.
  3. Launches: This is a list of "launches", each of which is a single date. That's a bit limiting, but I couldn't figure out a straightforward way to enter a multi-day launch as an entity. It's just as well, probably; I really want a single date attached to each flight.
  4. Sites: All the sites and/or clubs I fly at.
  5. Electronics: All my different pieces of electronics that might or might not be included in a flight. Right now I only have two, so this is a small table. :)
  6. Motors: A list of all motors I might use; right now this is all Estes and Q-Jet motors, plus an assortment of single-use Aerotechs. It was surprisingly quick to enter this table in, and once it's in it doesn't change often. It's easy to add more when needed. It's possible I could have found a way to export a list from Thrustcurve and load it in here.
  7. Motor Manufacturers: Just a shorty list of manufacturers whose motors I might use, not really necessary but has a couple of benefits which I will show.
 
Last edited:
ROCKETS TABLE

Here's one screenful of my Rockets table (click to enlarge):
1615661629241.png

Right now I have the view grouped by manufacturer, so all my scratch rockets are shown first, and then the Estes start below and so on. In the toolbar up top you can see "Grouped by 1 field"; I can change that to any field to group as needed, e.g. by motor mount size, or by year I build, or whatever.

The primary key for this table is the rocket name, which is just a single line text. For those that have multiples of the same rocket, you would need to make those names unique somehow.

For manufacturer I defined a set of allowable values. When you go to fill in the field for a new rocket, it will give those as options. Here's what that looks like:
1615661995105.png
If you start typing a name, it'll match it to one of the available options, so it all works pretty quickly and smoothly.

Next I put an assortment of columns that seemed to cover the info I need, and might be useful in the field when choosing a motor (especially the "recommended motors" field, which is just a text field).

The Attachments field lets you attach pictures, videos, whatever. For starters I put in a pic of each rocket. Unfortunately, in some other views it really wants square (or nearly) pictures, so I might go modify the pics. Same problem exists in the TRF media galleries, it's really frustrating when your pictures are cropped to long and skinny.

At the far right are flights and launches; those are automatically linked back when entered into those other tables, we'll come back to that.

If I expand one item, it looks like this:
1615662721320.png
Scrolling down there's more:
1615662747760.png
The low information density really drives me nuts; why there needs to be so much whitespace between everything is a mystery, and it means you have to do a lot more scrolling than otherwise would be necessary. This is probably my biggest complaint about the app.

Anyway, here you can see an example where the attachment image is shown cropped to a square, which sucks. You can click on it and get a proper view of the whole image.

Also, here you can see "Flights" and "Launches", which is proper list of all the Launches and flights for this rocket. I'll show this better later.
 
Last edited:
FLIGHTS TABLE

As mentioned previously, this table is why I bothered with all this. When at a launch, creating new entries in this table is the primary use for this app.

I tried to included everything that I could think of that would be useful.
1615663161674.png
The Date field is linked to a Launch (described in next post). The Rocket field is linked to a Rocket, and that brings with it the recommended motors. So when adding a new flight, if I select "Diamond Cutter" in the Rocket field, then it immediately populates the Recommended Motors column, so I have it there as an instant reference.

The next column is a link to a motor in the Motors table, and delay is entered separately. It may or may not turn out to be of value to have delay specified separately from motor, but it seemed like a good idea at the time. It certainly made the Motors table more compact.

The Motor brings along with it Total Impulse, which is there primarily to make it easy to sum up and summarize later. Next is Electronics, which allows me to indicate which of my enormous collection were used in this flight (those options are pulled from the Electronics table). Next come the results of the flight: first, an assessment of Ejection (options: Perfect, a little early, very early, a little late, very late, none). Next is Result, which is a result of the flight. Multiple options may be selected, and include Recovered, Light Damage, Moderate Damage, Severe Damage, Lost, Trees, Power Lines, Inaccessible. Next is altitude, a general purpose Notes field, and an attachment field where flight photos and/or videos can be added.

I only pre-populated a few for illustration. As it fills out over time, I can again use the grouping and sorting functions as needed to refine my view.
 
Last edited:
LAUNCHES TABLE

Before heading out to the field, I would create a new Launch entry for that day:
1615663823757.png
Most of the fields are pretty self-explanatory. In the Rockets field, I add all the rockets that I'm bringing with me (chosen from the list linked to the Rockets table). The "Flights" column lists all the flights from that launch; that column is populated automatically (I'll talk more about that later).

If I expand that launch, I get this (once again in two pieces):
1615663999045.png
1615664032572.png

That's a pretty nice summary of my day. From there I can click on any of the Rockets or Flights to get full details.
 
Last edited:
OTHER TABLES

There's less to say about the other tables. Not all of them are necessarily needed; but it was so easy to add them and there isn't much downside to having extras.

Sites
A good little summary of each site and/or club I fly at. I can put directions, links to websites, and/or other stuff here in the future.
1615664239513.png

Electronics
My various (!) electronics bits, so I can easily keep track of when each one is used.
1615664315202.png

Motors
A convenience, so that I can easily keep track of flights for each motor type, and also Total Impulse is useful for reference and enables tracking of total N-s burned. Right now, MFR is a link to an entry in the Motor Manufacturers table, but I'm going to get rid of that table and just make it a single selection field.
1615664380866.png

Motor Manufacturers
Going away, not useful.
 
Last edited:
LINKING
Many fields are defined as links to items in another table. For example, for a Flight, the Rocket is a link to an entry in the Rockets table.

Whenever you create a link in one direction, Airtable automatically creates a link back in the opposite direction (OK, it's really the same link, but shown in two different places.) So, not only does that flight point to a particular Rocket, but the entry for that Rocket now also points back to this flight. That is how you automatically get a list of flights attached to the rocket, e.g.:
1615664800796.png
That's nice, because it's exactly what you want it to do. Everything is linked to everything else, and by expanding the item you get nice lists of all associated objects. So this entry for Diamond Cutter has a list of all its linked flights, and a list of all the Launches it was brought to. If I then expand that Rad Rocks launch, then I get this:
1615664919682.png
(higher up there is a list of all the rockets I brought to the launch, etc.) Once again, this is exactly what we'd want it to do. So, other than the $!&#% excessive whitespace, it is for the most part giving me the views that I think I'm going to want.

Further customization is possible. There are apps you can plug in, you can write scripts, define automations, etc. But they're not available in the free plan, so I'm not much interested in even learning about them.
 
Last edited:
CLOSING THOUGHTS, FOR NOW

Once I actually start using this I'll get a better idea of how much I like it. Well, that's not totally correct: entering my list of rockets counts as "using" it, and that was very easy and quick and pleasurable. It's entering flight data in the field that is the true test.

My impressions so far are quite positive. Given that it's free, and given how quickly I was able to put this all together, I don't see how I can complain.

There are some things that don't seem to be readily possible, which would be easy in a custom app. Like, if a rocket is listed as having two stages, I would like to be able to have it display two separate Motor and Delay fields in the Flight record. But it can't do things like that, so I just let you enter multiple motors into the "Motor" field. But only one delay field is available (I could make it multiple I guess). For those with more complex rockets with a lot of different motor configurations it's hard to capture here.

My biggest complaints, as noted above, are the image cropping and the excessive whitespace all over the place. Both of these can be dealt with. I do plan to file some feedback with the company regarding both of these.

So that's it. If anyone has any questions, fire away.
 
Last edited:
Wow, nice job! I'm glad you found a platform that works for what you needed.
80% of the functionality I wanted for 0.01% of the effort to create a full custom app seems like a good trade.

At the first launch I will find out how well what I *thought* I needed overlaps with what I *actually* needed. :)
 
This is awesome. I was following the other post as I've been looking for a better way to keep track of rockets, flights, motors, etc. If you need beta testers, I'm happy to help...
 
Here's a new thing: I added a "roll-up" field to a Launch to total up the N-s burned at the launch. This sums the N-s values of the motors in all the attached flights.
1615683965385.png
Have to see if I can do any other interesting stuff with roll-ups. It is impressive how easy it is to do this stuff in this app.
 
This is awesome. I was following the other post as I've been looking for a better way to keep track of rockets, flights, motors, etc. If you need beta testers, I'm happy to help...
It's a little confusing but I think there's a way for me to share. Basically, I can give you read access to my project, and then you can make a full copy of it to yours. Your copy is independent from mine and you can modify it as you see fit.

At least, that's how I interpret it. If you (or anyone else) wants to give it a try, PM me.
 
Neil is there a way to add a motor inventory and if used for a flight that it removes it from inventory.
 
Neil is there a way to add a motor inventory and if used for a flight that it removes it from inventory.
Might be doable, I'll give a look.

I'm not convinced that it would be *useful* given the way it would need to work, though, within the limitations of the app. It's likely that something better could be done with the non-free version, which allows for scripts and apps and other good stuff.
 
Might be doable, I'll give a look.

I'm not convinced that it would be *useful* given the way it would need to work, though, within the limitations of the app. It's likely that something better could be done with the non-free version, which allows for scripts and apps and other good stuff.
I just thought it would be a nice feature, since this is something I always forget to do. Never fails I plan a flight and go for a motor in my fire safe and it is not there because I forgot to remove it from my inventory sheet...:facepalm:
 
You can do it in either place and it syncs automatically. I did it all of the configuration on my desktop in a browser, where it is obviously much easier.

If you want to use my base as a starting point for yours, just PM me.
 
I do inventory management in a single table that has entries for receipts (+) and use (-). The report is a pivot table that sums by item. That’s in excel - but cross-tab or pivot queries are available in SQL.
 
Neil,

impressive work. Do you have a URL that you use for your own webpage? If so did you consider using MySQL which is free with most cpanel implementations? Major difference is you get to it via the web but it would still work on the iPhone.
 
impressive work. Do you have a URL that you use for your own webpage? If so did you consider using MySQL which is free with most cpanel implementations? Major difference is you get to it via the web but it would still work on the iPhone.
It's implemented in Airtable, which basically gives you a GUI front end to hide all the SQL stuff behind the scenes. The advantage of doing it this way is that I don't have to host anything, and synched iOS, Android, and web clients are all included. The phone app can run stand-alone, so you can use it at a launch without cell access and it'll synch later. At least, I think it will, I suppose I should confirm that at some point. :)

Certainly, the database guts of what I've done here are pretty trivial, but rolling my own would not have given me the synchronized mobile apps and nice GUI, at least not without a lot of extra work.

My Base can be shared within Airtable for those who want to give it a try. To do so requires you to create an Airtable account and then PM me your email address.
 
MOTOR INVENTORY

I got motor inventory tracking kinda-sorta working. It's not great, and I probably won't use it myself, but I'll leave it in so that when others copy mine they'll get it, and can choose whether to use it.

I added a new table called "Motor purchases":
1615741965134.png
The only columns that actually matter there are the Motor and Quantity. Motor links back to an entry in the Motors table, of course.

Note that for this to make any sense, the Motors table would need to be altered so that each combination of motor type and delay would have its own entry. There's nothing wrong with that, it just makes the motor table a lot larger. I didn't want to do that, so what I have there serves for demo purposes but doesn't actually do anything useful.

Anyway, in that table you would log your motor purchases, or any action (other than a flight) that changes the number in your inventory. The first entry in the table should be your starting inventory.

Then, there are three new columns in the Motors table:
1615742207764.png
"Bought" is a roll-up sum of all the purchase quantities of that motor in the Motor Purchases table. "Used" is a roll-up count of all the flights that used that motor. Finally, "Inventory" = Bought - Used.

Great, except for one big problem: it doesn't account in any way for flights that use more than one motor. There's probably a way to solve this but I'm not highly motivated to try to figure it out. This is another good example of something that could be solved very easily in a custom app, but is more challenging when trying to work within the capabilities offered by a "generic" framework.

Note that the C12 shows an inventory of -1 because I have one flight showing it's used an zero purchases.

So that's it. As I said, I'll leave that in there and folks can choose to use it (or rather, use it as a starting point to make it do something useful) or just delete the extra table and unneeded columns.

As an additional note, the Total Impulse summation suffers from the same problem right now of not accounting for multi-engine flights. Maybe at some point I'll try to sort that out, but at the moment the vast majority of my flights are single-motor, and total impulse summation isn't very important anyway.
 
This is very interesting and tempts me to look closer to get, maybe, away from my 19th century flight log (4x6 spiral notebook and pencil).

One data nitpick: you have the certified total impulses listed for the Q-Jets but the full letter category total impulses for the Estes motors (except E16 and F15). For example, an Estes C6 is really 8.82 N-s and the B6 is 4.33 (per NAR cert data). No big deal, I suppose, but since I'm used to summing these up for the Newton Tally threads it sort of jumped out at me.

All in all very impressive!
 
This is very interesting and tempts me to look closer to get, maybe, away from my 19th century flight log (4x6 spiral notebook and pencil).
Just sign up for Airtable, send me your email address and I'll share it and you can try it out. It's all free, so no commitment.

One data nitpick: you have the certified total impulses listed for the Q-Jets but the full letter category total impulses for the Estes motors (except E16 and F15). For example, an Estes C6 is really 8.82 N-s and the B6 is 4.33 (per NAR cert data). No big deal, I suppose, but since I'm used to summing these up for the Newton Tally threads it sort of jumped out at me.
I took the Estes values from their motor chart... A mistake I guess. I'll go fetch better values from Thruscurve.org.

Still need to think of a good solution to dealing with clusters and multi-stagers, with regard to Total impulse summation.

UPDATE: I repopulated with values from Thruscurve. Look better?
1615763429143.png
 
Last edited:
UPDATE: I repopulated with values from Thruscurve. Look better?
Some do. Agree on the Estes Cs.

Per NAR cert data:
Estes 1/2A3 - 1.09 N-s

Estes A3 - 2.22 N-s
Estes A8 - 2.32 N-s
Estes A10 - 2.00 N-s

Estes B4 - 4.29 N-s
Esters B6 - 4.33 N-s (5.60 would be a low C)

Some of these values don't match what's on the table/list (https://www.nar.org/standards-and-testing-committee/nar-certified-motor-list/), but are from the actual individual cert pages linked to the entries there. I suppose I should bug them about making that consistent.

It looks like those values from Thurstcurve are rounded to the nearest .05 N-s, so in that case the list above would be:
1/2A3 - 1.10
A3 - 2.20
A8 - 2.30
A10 - 2.00
B4 - 4.30
B6 - 4.30

And of course all of this probably doesn't matter a whole lot outside of some really narrow contexts (like contest flying).
 
@neil_w was kind enough to do the heavy lifting on this, but for my purposes I wanted to make some adjustments. My previous iterations were in Notes and then Memento and focused on some of the more mundane info. I like to keep a list of suitable motors and the respective shifts in weight, CG, velocities, etc handy - especially if I'm impulse buying motors at a launch.

So using Neil's base, I linked the motors table to the rocket table. It seems to work pretty well for now. I have some more figuring to do, but for now I basically have to add a separate entry for the same motor used in different rockets (since the CG, velocities, etc are part of the motor entry). It's a bit more work up front, but should be good at the RSO table.

Airtable.png
 
IMPORTANT UPDATE ON OFFLINE OPERATION: A STEAMING HOT CUP OF "NOPE"

The phone app can run stand-alone, so you can use it at a launch without cell access and it'll synch later. At least, I think it will, I suppose I should confirm that at some point. :)
I should have checked more carefully before I wrote this. In fact, the phone app *is* dependent on an internet connection for most functionality. So if you want something that'll work for you when you're at a launch with no cell service, forget it. :(

If you fire it up while internet is connected, it seems like it will cache at least some of the database, and can then be used in read-only mode if you lose the connection. But read-only operation defeats the original purpose of this app.

Fortunately for me, here on the east coast the launch sites do have cell service, so it's not an issue for me. But I know it matters to others. Sorry for the misinformation.
 
So using Neil's base, I linked the motors table to the rocket table. It seems to work pretty well for now. I have some more figuring to do, but for now I basically have to add a separate entry for the same motor used in different rockets (since the CG, velocities, etc are part of the motor entry). It's a bit more work up front, but should be good at the RSO table.
I like this idea a lot, so I think I'm going to add it to mine.

I prefer not to the motors table with sim data, though, so I'm keeping it separate by creating a new table, call it "Sim Data". For each record, link a rocket *and* a motor, and then fill in the info. You should be able to see it back in the rocket table:
1615815308303.png
Here I grouped it by rocket, and then sorted by motor. This is going to force me to add the different delay options to the motor table, which I didn't want to do but it seems like it will bring real benefits so I'll bite the bullet and do it. This change will ripple through to a few other areas.

A linked field is automatically created in the Rockets table. When I expand the record for the Rocket, I now have the relevant sim data down at the bottom:
1615815528815.png

Note that if you view on your phone in landscape mode then you get to see more data, and don't then need to click on the Sim Data to see the full entry. The above screenshot is from a desktop browser, which bafflingly only shows a narrow window of data.
 
Back
Top