Developers
Want to help?
Want to help?
All POH Performance are written and maintained by volunteers. The apps are free, and the source code is published to foster a community effort. You can help add 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 web application (WebApp). All POH performance apps share a common framework with aircraft-dependent pages. The apps require a lightweight PHP backend for weather and settings backup, but can function without it. Apps distributed by POH Performance LLC use the backend served by pohperformance.com.
The browser version of the app can be executed locally using any modern browser. The WebApps can be installed as icons on mobile devices and can function while disconnected from the Internet if installed correctly. 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 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.
POH Performance LLC has a licence agreement with Textron Aviation Inc. for the use of Textron's POH data. Volunteers willing to help add model data to the existing Textron aircraft apps (C172, C182, Baron, and Bonanza) will be required to sign a temporary sub-license agreement. Developing POH Performance apps for additional Textron aircraft types will require a separate license agreement with Textron and may require a payment to Textron. Any derivative work related to Textron aircraft types will also require a separate license agreement with Textron and possible payment to Textron in addition to a licence from POH Performance LLC. Please contact info@pohperformance.com if interested.
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 .
As mentioned above, all POH Performance Apps are maintained by volunteers and resources are extremely limited. Almost all requests for additional models will be put at the end of a very long to-do list unless you help. On the other hand, volunteer effort usually goes to the top of the to-do list. The amount of skill and effort required from you and from POH Performance LLC varies depending on the desired outcome:
Some coding skill is helpful but is not required. Care and attention to detail is required. Here are the typical steps to add models, options, or related types (e.g., Cessna 210 vs. Cessna 182) to an existing POH Performance LLC app:
POH Performance LLC cannot support apps that would only be valuable to a limited number of users. Types that have less than several hundred aircraft will likely be rejected.
Creating an app requires moderate JavaScript and HTML coding skills. You must also be comfortable with Git. You'll be required to make a long-term commitment to help support the app. Here are the typical steps:
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 and other licenses. 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 and potentially other licenses. 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 | 26,847 |
| Baron | 33,409 |
| Bonanza | 64,183 |
| C172 | 29,074 |
| C182 | 52,297 |
| Kodiak | 55,967 |
| PA28 | 28,065 |
| Radar | 3,812 |
| TBM | 115,923 |
The infrastructure is included in each app and is the same for all apps. The TBM version is significantly larger since it includes the checklist 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.