# MifosX Community App
This is the default web application built on top of the MifosX platform for the mifos user community. It is a Single-Page App (SPA) written in web standard technologies like JavaScript, CSS and HTML5. It leverages common popular frameworks/libraries such as AngularJS, Bootstrap and Font Awesome.
## Build Status
Travis
[](https://travis-ci.org/openMF/community-app)
## Online Demo
Access the online demo version here
## Building from source
1. Note: Ensure you have ```npm``` installed - goto http://nodejs.org/download/ to download installer for your OS. On Ubuntu Linux you can use 'sudo apt-get install npm nodejs-legacy' (nodejs-legacy is required to avoid the ""/usr/bin/env: node: No such file or directory" problem).
1. Clone this repository to your local filesystem (default branch is 'develop')
1. To download the dependencies, and be able to build, first install bower & grunt
```
npm install -g bower
npm install -g grunt-cli
```
1. Next pull the runtime and build time dependencies by running bower and npm install commands on the project root folder
```
bower install
```
```
npm install
```
1. To preview the app, run the following command on the project root folder
```
grunt serve
```
or open the 'index.html' file in FIREFOX browser
Note: If you see a warning similar to the one shown below on running `grunt serve` , try increasing the number of open files limit as per the suggestions at http://stackoverflow.com/questions/34588/how-do-i-change-the-number-of-open-files-limit-in-linux/
```
Waiting...Warning: EMFILE, too many open files
```
1. Default username/password: mifos/password. This application will hit the demo server by default.
You are done.
### Connecting to a MifosX Platform running on a different host:
By default, when the app is running from the local filesystem, it will connect to the platform (mifosng-provider REST API) deployed on demo.openmf.org.
The app connects to the platform running on the same host/port when deployed on a server.
If you want to connect to the API running elsewhere, then append the baseApiUrl and tenantIdentifier as query parameters,
e.g. http://localhost:9000/?baseApiUrl=https://localhost:8443&tenantIdentifier=default
e.g. http://localhost:9000/?baseApiUrl=https://demo.openmf.org&tenantIdentifier=default
## Adding dependencies
You can also add more dependencies on bower.json.
You can search for them in http://sindresorhus.com/bower-components/ or even:
```
bower search
```
## Running grunt tasks
Grunt tasks are used to automate repetitive tasks like minification, compilation, unit testing, linting, production builds, etc
Following are the tasks integrated.
### Validate JS and HTML files
Validate the JS files to detect errors and potential problems in JavaScript code. All errors output will be written to jshint-log.xml file which get created under project base directory.
Checks the markup validity of HTML files. All errors output will be written to console.
```
grunt validate
```
### Build
Build the code for production deployment.
```
grunt prod
```
### Serve
Use this for development.
Start a static server and open the project in the default browser. The application will hit the demo server.
```
grunt serve
```
## Running the tests
Just open test/SpecRunner.html in the browser.
## Contribution guidelines
Please read the contribution guidelines