Skip to content
This repository

An exploration in making app authoring available to non-developers

Octocat-spinner-32 doc Some README updates for local component dev. March 25, 2014
Octocat-spinner-32 lib Code formatting and a var name update to make it more clear. April 17, 2014
Octocat-spinner-32 locale Mobile Development Draft April 13, 2014
Octocat-spinner-32 public Merge pull request #1140 from secretrobotron/mobile-dev April 17, 2014
Octocat-spinner-32 routes Update Dependencies April 11, 2014
Octocat-spinner-32 test added a basic smoke test for server. January 09, 2014
Octocat-spinner-32 vagrant Tabbing and EOF \n fixes February 10, 2014
Octocat-spinner-32 views Merge pull request #1140 from secretrobotron/mobile-dev April 17, 2014
Octocat-spinner-32 .bowerrc Setting bower's directory to be vendor instead of components, adding … July 29, 2013
Octocat-spinner-32 .gitignore Add webmaker download locales script April 10, 2014
Octocat-spinner-32 .gitmodules Using https endpoint so heroku likes the submodule. August 19, 2013
Octocat-spinner-32 .jshintignore Adding requirejs optimize task to default grunt. January 27, 2014
Octocat-spinner-32 .travis.yml added a basic smoke test for server. January 09, 2014
Octocat-spinner-32 Update September 30, 2013
Octocat-spinner-32 Gruntfile.js Fix for l10n/bundle in published apps. March 07, 2014
Octocat-spinner-32 LICENSE Initial commit July 29, 2013
Octocat-spinner-32 Procfile 1. fixing whitespaces January 23, 2014
Octocat-spinner-32 Add badges for test and package.json April 11, 2014
Octocat-spinner-32 Markup fixes September 29, 2013
Octocat-spinner-32 app.js Update webmaker-i18n again April 17, 2014
Octocat-spinner-32 appmaker.sublime-project fix after bad merge January 20, 2014
Octocat-spinner-32 appmakerStatsConfig.js debugging statsd November 11, 2013
Octocat-spinner-32 bower.json Adding GA events to the designer. April 17, 2014
Octocat-spinner-32 package.json Update webmaker-i18n again April 17, 2014
Octocat-spinner-32 sample.env offline loading March 31, 2014
Octocat-spinner-32 statsd.js Killing child process on exit. January 06, 2014
Octocat-spinner-32 verify-test.js 1. Removed ejs partials. October 01, 2013


Build Status Dependency Status devDependency Status

Welcome to Appmaker (beta).

Appmaker is a tool that helps anyone, not just developers, create mobile applications.

Appmaker apps are composed of web components, custom/resusable HTML tags, connected with events and listeners.

To learn more about web components, check out the Polymer Project.

More resources:

Getting Started

This section covers how to get Appmaker running locally. The workflow is optimized for contributors.


Make sure you have nodejs, npm, and git installed.

grunt is required to run the test suite. To install grunt on unix and OS X, run sudo npm install -g grunt-cli.

We manage client-side dependencies using bower. In order to add/remove these dependencies, you need to have bower installed globally on your machine, which can be done on unix and OS X via sudo npm install bower -g.

Forking And Cloning The Repository

Create a root mozilla-appmaker directory:

mkdir mozilla-appmaker
cd mozilla-appmaker

Fork this repository, and then clone your fork into the mozilla-appmaker directory:

git clone<your GitHub username>/appmaker.git appmaker

Your directory structure should look like this:

  ├── appmaker/

Configure remote:

cd appmaker
git remote add upstream
git fetch upstream

Environment Setup And Configuration

Install Node packages:

npm install

Configure your env:

cp sample.env .env

A short explanation of a complete .env file:

MONGO_URL: REQUIRED - the URI for your mongod instance and database, for example mongodb://localhost/appmakerdev (or whatever your database is named)
COOKIE_SECRET: A long, complex string for cookie encryption (NOTE: You define this for your local use, the string can be anything).
STORE: Storage approach for publishing apps. `local` is the default, `s3` requires additional environment variables (prefixed by S3_)
S3_BUCKET: S3 bucket name. e.g. ""
S3_KEY: An access key for the S3 bucket listed above.
S3_SECRET: The secret corresponding to the specified S3 access key.
S3_OBJECT_PREFIX: String to prepend S3 objects. Useful for storing objects in folders. E.g. "level1/level2" => <bucket>/level1/level2/<filename>.
PUBLISH_URL_PREFIX: String to prepend to filenames that are saved when publishing. Try use the URL that matches the protocol from which assets are hosted to avoid mixed content blockage.
PERSONA_AUDIENCE: The hostname and port of Appmaker used by Persona for authentication
PORT: The port that the web process listens on for incomming connections
GITHUB_TOKEN: A personal Github token used for loading lists of components from the mozilla-appmaker org during development (
EXCLUDED_COMPONENTS: A comma-delimited list of component repositories to exclude from the mozilla-appmaker org. The name is the repo name rather than the component name, though this is usually the same.
BUNDLE: Any non-null value will cause the application to bundle as many resources as possible
LOAD_FROM_GITHUB: if omitted, or "false", instructs appmaker to load components from repositories hosted on

Install and run MongoDB

  1. Install from MongoDB installation packages, brew, apt-get, etc
  2. Either configure MongoDB to run on startup or manually start the mongod daemon. You can also run mongod from foreman by adding it to your Procfile

Start the Server

foreman start


foreman start -p <PORT>

If you need foreman:

sudo gem install foreman

NOTE: foreman's configuration file is Procfile in the root of the appmaker directory Foreman explanation:

How you can help

Component Development

Required reading:

Ceci is a set of foundational elements used in a AppMaker app, implemented as a set of Polymer components. If you create a new component, it's really an HTML tag that Polymer processes and then injects a variety of capabilities into that tag / JS object

Example AppMaker Component

TODO link to the Counter example, provide explanation

Submitting A Pull Request

Switch to develop branch:

cd mozilla-appmaker/appmaker
git checkout develop

Pull the latest version:

git pull

Create a new branch (for example a feature branch):

git checkout -b your-feature-branch-name

Make changes to the local copy, commit your changes, and then make sure your patch still works with latest version of develop branch:

git checkout develop
git pull
git checkout your-feature-branch-name
git rebase develop

Test commits:


Submit changes:

git push origin your-feature-branch-name

Submit the pull request at For more assistance, see Github's help page on creating a pull request.


Appmaker uses the Webmaker-i18n module for localization of both the designer and (ceci) components.

Localizating component

If you have created your own component, see:

Help on translation

Spotted any typo or want to help translate appmaker into your own language?

Appmaker uses Transifex for translation platform. You can check this how to article if you want to contribute for translation and visit Appmaker on Transifex to start translate.

Something went wrong with that request. Please try again.