Developers
Want to help?
Want to help?
The apps are free and the source code is published in order to foster a community effort. Much of the Bonanza, Baron, C172 and C182 data was encoded by volunteers. In addition, volunteers ported the Baron and PA28 apps. You can help add a new aircraft model data to an existing app even with minimal coding skills. Contact info@pohperformance.com if interested.
The POH performance apps are written in Javascript, HTML, and CSS as a single page application. All POH performance apps share a common framework with aircraft-dependent pages. The browser version of the app can be executed locally using any modern bowser. The apps require a lightweight PHP backend for weather and settings backup, but can function without it.
The iOS and Android versions of each app are generated using Cordova, which produces a native application with an embedded WebView along with the code.
The source is published on SourceForge here. There is extensive documentation included with the source. See README.html.
SourceForge also hosts a developer forum for the app. See POH Performance Discussion .
The code is provided under license. The license is free for non-commercial use. The purpose of the license is to protect the developers and to ensure that derivative works are not confused with POH Performance versions.
Adding a new aircraft type requires reasonable Javascript skill. It is best approached by starting from a similar existing aircraft type. Simple model additions to an existing aircraft type app, only require minimal coding skills. Most of the effort involves translating the performance tables and/or graphs into the internal JSON-like format. All performance data should be compared against the POH at least twice.
For the curious, here's a snippet from the Cessna 172S:
climbRate: new Ptable({
title: "Climb rate",
parmNames: ["temperature", "altitude"],
a: [
{p:-20, a: [
{p:0, v:855},
{p:2000, v:760},
{p:4000, v:685},
{p:6000, v:575},
{p:8000, v:465},
{p:10000, v:360},
{p:12000, v:255}
]}, {p:0, a: [
{p:0, v:785},
{p:2000, v:695},
{p:4000, v:620},
{p:6000, v:515},
{p:8000, v:405},
{p:10000, v:300},
{p:12000, v:195}
]}, {p:20, a: [
{p:0, v:710},
{p:2000, v:625},
{p:4000, v:555},
{p:6000, v:450},
{p:8000, v:345},
{p:10000, v:240},
{p:12000, v:135}
]}, {p:40, a: [
{p:0, v:645},
{p:2000, v:560},
{p:4000, v:495},
{p:6000, v:390},
{p:8000, v:285},
{p:10000, v:180}
]}]
}),
Some aircraft use graphs for performance data. In this case, each curve in a graph must be digitized into a series of points in a piecewise-linear fashion. You'll need more points where the lines are curvier. Accuracy is essential: Make sure that you get it to ¼ grid-point or better. You can do this manually, but that is often error-prone. A better alternative is to use a software digitizer. Most digitizers require you to provide an image of the graph. Once the graph image is loaded you trace each axis. Do this carefully as the quality of the results depend on it. Then trace each curve to gather the points. It's better to use your eyes to get the low order digits within a grid point, as most scanned graphs have some skew that makes sub-grid accuracy difficult.
Here's a list of some software digitizers:
The apps require a backend server to retrieve weather and save, restore, and transfer user data. The PHP code for the backend server is included in the source.
As mentioned above, all deployment is governed by a software license. There are several ways to deploy the code you create:
Adding a new aircraft type in a separate app needs some discussion, as each new app requires on-going support. First, the app must support a substantial number of aircraft. An app that only supports your particular model of the type probably won't make it worthwhile for POH Performance to undertake the additional burden. It helps if you sign up to help support the new app for the long-term.
You may have to change the code to point to your backend. If the aircraft is similar to the one in an existing app, you may be able to use the POH Performance LLC backend, but get permission first.
Here are the some lines of code statistics on the application. This includes code, JSON, and comments, but not external libraries.
Infrastructure | 25,327 |
Baron | 33,144 |
Bonanza | 57,939 |
C172 | 25,184 |
C182 | 39,501 |
Kodiak | 39,389 |
PA28 | 12,839 |
Radar | 3,230 |
TBM | 79,082 |
The infrastructure is included in each app and is the same for all apps. The TBM version is significantly larger since it includes the emergency procedures and circuit breakers for all the models, whereas the the other aircraft types do not have that functionality. The Radar app is the simplest, having only two unique pages.