Welcome to AXEMAS documentation!

Development Framework for MultiPlatform hybrid mobile applications.

AXEMAS handles the whole navigation of the application and transition between views, while it permits to implement the views content in HTML itself.

AXEMAS works using sections, each Section represents the content of the view and is loaded from an HTML file or from an external URL.

Whenever native code requires to be attached to a section, it is possible to attach a SectionController to a Section itself.

Getting Started

To Install AXEMAS you need Python 2.7 with the pip package manager installed as AXEMAS uses Python to generate project skeletons. To install pip follow the Pip Install Guidelines. Then you can install AXEMAS toolkit using:

$ pip install axemas

To create a new AXEMAS project you can then use the axemas-quickstart command, it will automatically create a new AXEMAS project:

$ gearbox axemas-quickstart -n ProjectName -p com.company.example

See Quickstarting a New Application for additional details on the gearbox command.

Basic Project Introduction

By default AXEMAS will create for you a basic application for iOS and Android. Content of the application will be available inside www directory and the application will load www/sections/index/index.html on startup.

The application can be run by simply opening in Android Studio or XCode the android and ios projects inside the newly created application directory and then pressing the Run button inside the IDE.

To start customizing the application and providing your own code, you can open the www directory in your favourite editor and start editing sections.

From the index.html section, you can then use the JavaScript API to push and pop additional sections and implement your whole Application.

Binding to Native Code

The previous code shows how to load HTML based sections and rely on the JavaScript API to implement your web application. When more advanced features or interaction with the hardware is needed you might need to get to native code level. AXEMAS has been designed specifically to make it as easy as possible to work with native code, the main difference with frameworks like Cordova is explicitly that AXEMAS makes native a first citizen of your application.

HTML sections loaded by your application are explicitly declared inside the application code itself and the application window is explicitly create using makeApplicationRootController from the NavigationSectionsManager

Inside your AppDelegate for iOS:

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window.rootViewController = [NavigationSectionsManager makeApplicationRootController:@[@{
        @"title": @"Home",
        @"url": @"www/home.html",

    [self.window makeKeyAndVisible];
    return YES;


Or in your AXMActivity subclass onCreate() method for Android:

public class MainActivity extends AXMActivity {
    protected void onCreate(Bundle savedInstanceState) {

        if (savedInstanceState == null) {
            JSONObject data = new JSONObject();
            try {
                data.put("url", "www/home.html");
                data.put("title", "Home");
            } catch (JSONException e) {

            NavigationSectionsManager.makeApplicationRootController(this, data);

The binding between the HTML Sections and native code is performed using SectionControllers, to link a section to a section controller is as easy as registering the controller class for the specified route:

[NavigationSectionsManager registerController:[MySecionController class] forRoute:@"www/mysection.html"];
NavigationSectionsManager.registerController(this, MySecionController.class, "www/mysection.html");

To get started using SectionControllers read the iOS API and Android API.


Indices and tables