Skip to content
FOAM: Feature-Oriented Active Modeller, Version 2
HTML JavaScript Java CSS Swift Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
_includes Github pages for tutorial Sep 25, 2018
_layouts Github pages for tutorial Sep 25, 2018
android/nanos_example_client Merge with master and fix things up Feb 9, 2019
angular Merge pull request #21 from shepheb/tracker May 12, 2017
build-aux use the old make clean Sep 27, 2019
css Github pages for tutorial Sep 25, 2018
demos Undo some suggested changes that weren't necessary. Sep 4, 2019
doc/guides Add documentation for context Jun 21, 2019
lib Add lib/.gitignore Jan 16, 2018
polymer Separate out the list of boot files from the bootloader. Jun 22, 2016
src Merge pull request #2817 from yij793/CPF-2255/foam-RichChoice-section… Nov 21, 2019
swift_src Suppress swift warnings Sep 4, 2019
test Formatting Oct 10, 2019
tools Fix property reference parser white spacing Nov 19, 2019
tutorial uniformising user-select CSS property on all foam Oct 8, 2019
.gitignore Update .gitignore Sep 6, 2019
.istanbul.yml Coverage: demos removed from coverage report Jan 6, 2017
.jscsrc Remove jsdoc plugin and related code/comments Nov 22, 2018
.jshintrc Backport lint config options from real repo. Apr 29, 2016
.travis.yml Bump node versions for travis from 5-7 to 7-9 Jan 23, 2019
AUTHORS Conflict resolution in Authors Jul 6, 2017
COPYING Copyright files Jan 26, 2016
COPYRIGHT Copyright files Jan 26, 2016
Makefile Fixes to errors that broke foam2 (AbstractJDBCDAO, makefile, SQLExcep… Aug 20, 2019 add documentation Sep 27, 2019
checkCoverage.js Raise the bar on test coverage from 80% to 90% Jan 28, 2016
index.html Remove script from index.html Nov 5, 2018
jasmine_benchmarks.json MDAO benchmarks moved to benchmark task, node test loader cleanup Apr 13, 2016
jasmine_coverage.json Missing jasmine coverage config Sep 1, 2016
jasmine_gcloud.json jasmine_gcloud configuration: Revert mistaken check-in of targeted te… Apr 12, 2017
jasmine_node.json Revert jasmine_node.json Jul 16, 2018
migration.txt Improved migration documentation. Jan 10, 2019 HttpServer: Check nanos.webroot for ResourceBase, or compute from JAR. Feb 22, 2019
package-lock.json Install fake-indexeddb Apr 5, 2019
package.json Install fake-indexeddb Apr 5, 2019


Build fully featured high performance apps in less time using FOAM.

  • Application Speed
  • Application Size
  • Developer Efficiency

"Fast apps Fast"

Build Status

Feature Oriented Active Modeller

FOAM is a modeling tool and class based object system. To use FOAM, you create a model of your class by describing the properties, methods, event topics, listeners, and dependencies of your class. FOAM takes this model and generates a usable JavaScript class along with several companion features such as database support and network marshaling.

While FOAM is written in JavaScript, it can be used to generate code for any language or platform, including Android Java and iOS Swift.


Building Java

cd src; ./; cd ../build; cp ../tools/pom.xml .; mvn compile; mvn package

Or you may build and run using

make run

And to clean the project, you may use

make clean

Installing Dependencies

FOAM has no runtime dependencies, but uses a number of third party tools for unit tests, code coverage, and linting. You can install all required tools by doing the following.

  • Install nodejs.

  • Run 'npm install' in the root of the FOAM repository, where package.json is found.

Running Application Controller

The FOAM Application Controller allows you to access components of your foam app by using the browser & displaying it as a GUI. To access, run the following in the parent directory of foam2:

Style Guide

All code should follow the style guide.


  • npm test runs standard unit tests.

  • npm run testDebug runs the unit tests with a debugger.

  • npm run coverage runs code coverage and creates an html report in /coverage.

For in-browser testing, run your favorite web server at the root of the FOAM repository. In a browser, navigate to http://localhost:8000/test/browser/SpecRunner.html to run the unit tests.



Before contributing code to FOAM, you must complete the Google Individual Contributor License Agreement.

You can’t perform that action at this time.