The project root contains the following files and directories:
app.mkbuild/build/ directory.codex/digitized/.ppdig files in a directory per app.doc/doc/ directory.Example1.mk, Radar.mk, Testapp.mkapp.mk doesn't cover.lintTemplate.htmlmake serve shows in place of an app while lint reports errors.localServer/make serve: the development server's index page, a symbolic link to each app's web image, the PHP router that stands in for the production .htaccess rewrites, and the server-side saved-input, log, and trouble-report files. See Testing and debugging apps.Makefilenode_modules/npm install.package.json, package-lock.jsonnpm package files. They record the dependencies of the build scripts.source/source/ directory.tmp/codex/ audit tools. Not used by the build.tools/digitizer/ web app and, under upgradeToV5/, the harnesses that compared the V5 apps against V4 during the upgrade.version5.bbprojectd/source/ directoryThe source/ directory contains the following directories:
source/airportData/source/airportData/ directory.source/app/source/app/ directory.source/cdv/source/cdv/ directory.source/image/source/image/ directory.source/service/source/service/ directory.source/app/ directoryThe source/app/ directory contains the following directories:
source/app/<appId>/Baron, Bonanza, C172, C182, C310, Kodiak, PA28, and TBM.source/app/common/source/app/Example1/index.html, a service worker, and a buildStamp/ with app.js, one page, and an image. A starting point for a new app.source/app/Radar/Radar.mk.source/app/Testapp/source/app/common/ directoryThis directory contains the source code for the common infrastructure and utilities. It contains the following files and directories:
source/app/common/aero/
Common files related to aeronautical functions: aircraft types and options, performance tables, airports, weather, wind, and weight and balance.
source/app/common/mvcs/
The MVCS infrastructure code. See the MVCS Overview.
source/app/common/option/
Optional modules. These must be explicitly imported as required. These include
speech.jsspeech Reference.svgDraw.jstold.jsrenderTold() methods. See the TOLD Reference.units.jsunitTest.jsunitTest Reference.source/app/common/page/
App pages that are independent of the specific app or aircraft type. These are:
aeroSettingsCards.jssource/app/common/script/
Files that are included in the app as classic scripts rather than modules: the global utility functions (util.js, numUtil.js, objectUtil.js, domUtil.js) and device detection (localDevice.js). Each app's index.html lists them in <script> tags. The source/app/common/script/lib/ directory holds the external libraries included the same way, currently Modernizr and UAParser.
The directory also includes polyfill.js, general polyfills for JavaScript features more recent than the Technology use criteria. No app currently loads it.
source/app/common/eslint.config.mjs
The eslint configuration used to lint the common code and every app.
source/app/<appId>/ directoryThe unique part of each app is in a directory under source/app/<appId>. Typically, the appId is the first word in the full app name. For example, 'C182' for the 'C182 Performance' app. This directory typically contains the following files and directories.
buildStamp/buildStamp because this name is replaced with a build timestamp in the web image to ensure that all the contained files and directories fetched by the client will be the versions for this build. See The Service Worker and caching. The directory typically contains the following:buildStamp/aircraftData/typeData.js, which contains type-wide data. The options are in options.js.buildStamp/icon/make image and checked into git.buildStamp/image/buildStamp/internalData/airportData.js. Generated by make db and checked into git.buildStamp/page/buildStamp/app.jsbuildStamp/manifest.jsonbuildStamp/svFormat.jsinfo object for state variables formats that are widely-used in the app.eslint.config.mjseslint configuration. The build lints every app with the common configuration, so this copy is not used.externalData/index.html, where the app fetches them. Because this data is not under buildStamp, the contents will be shared among all currently active app versions. Any data placed here must be backward compatible or have its own versioning convention. The current contents are:externalData/airportData.jsonexternalData/airportDataTimestamp.jsonairportData.json. The app fetches this file when the app is started or resumed after a long period of inactivity. If the timestamp is newer than the most recent update or built-in database, then the large airportData.json is fetched and the database is updated.icon/index.html refers to. Generated by make image and checked into git.index.htmlindex.html file for this app. The web build inserts the file manifest and the stylesheet links into a copy of it.serviceWorker.jsThe app's .htaccess file is not here but in source/service/<appId>/.
source/app/Testapp/ directoryThe Testapp has the same layout as an aircraft app without the icons and service worker. Under buildStamp/ it has:
aircraftData/mytype.js, with models and options that exercise the option machinery, and its procedures.page/test/source/airportData/ directoryThis directory contains the inputs and outputs of make db. See Building the airport database.
NFDC/APT_BASE.csv, NFDC/APT_RWY.csv, NFDC/APT_RWY_END.csvmake db. The EFF_DATE column on every row is removed so that a cycle's diff shows only the data that changed.NFDC/EFF_DATE.txt, NFDC/APT_CSV_DATA_STRUCTURE.csvourairportscom/airports.csv, ourairportscom/runways.csvmake db.stations.xmlmake db.dbFlags/<appId>.txtbuildAirportDB.js flags for each app that has an airport database, such as its runway requirements.logs/<appId>_log.txtsource/image/ directoryThis directory contains the source files used to create images associated with each app. Each app has a separate directory named by the appId containing source files such as:
The common/ directory holds the sources shared by all apps.
source/service/ directoryThis directory contains the server-side PHP files that implement each app's API. It contains a common/ directory with the service files, which are the same for all apps, and a directory for each app named by the appId that holds the app's .htaccess file. The .htaccess file rewrites the app's API requests to the common files and sets the POH_APP environment variable to the app's appId. The web build copies .htaccess to the app's root and the PHP files to its service/ directory.
The directory also holds the files make serve uses to run the services locally: localRouter.php, a PHP router that does what .htaccess does on the production server, localBsConfig.js, the browser-sync configuration, and localIndexTemplate.html, the template for the development server's index page.
source/cdv/ directoryThis directory contains the files needed to build Cordova native apps. Each app has a directory named by its appId that contains a Cordova config.xml, a res/ directory of native app image resources, and the logo image for the splash screens. The native apps themselves are built in the private release repository. See Native apps.
build/ directoryThe build directory contains the results of the build process. It contains the following directories:
build/cdv/appId. Each holds the app's config.xml, res/, and a www/ directory with the app.build/doc/doc/ directory.build/lint/eslint results for each JavaScript source file. This allows the build process to detect which files need to be linted without linting all files.build/web/appId. Each holds index.html, the service worker, .htaccess, the service/ PHP files, the externalData files, and the app itself under a directory named with the build timestamp.doc/ directoryThis directory contains all the project documentation as Markdown files. make doc converts them to HTML in build/doc/. See Building the documentation.
index.mdhistory.mdmarkdownStyle.cssapp/dev/mvcs/mvcs_index.md that indexes them.