AidStream is a platform for small and medium size NGOs to publish their aid data in IATI standard.
PHP HTML CSS JavaScript Other

README.md

AidStream

AidStream stands as one such platform, that presents complexity of the IATI in an understandable and a consumable way.

User friendly interfaces within the platform enhance an effortless entry, update and publish of the aid data in the IATI format for organisations that want to publish IATI data. The system hides all the complexities and technicalities of the xml. With AidStream, the necessity to understand the details of the IATI standard becomes lesser. All that needs to be done is to register into the system, enter the data and publish it. The data will be easily published to the IATI registry . In addition, AidStream guarantees high security, proper maintenance and easy accessability of the aid data.

wercker status

Install

AidStream can be cloned after having access to the gitlab repository and installed following the procedure given below:

Run

The app can be run with the command below:

  • install the application dependencies using command: composer install
  • copy .env.example to .env and update your the database configurations
  • give read/write permission to the storage folder using chmod -R 777 storage
  • Create a directory uploads inside public folder and, files and temp directory inside the uploads directory.
  • Create organization and activity folder inside files
  • Give read/write permission to uploads directory using: chmod 777 -R uploads/.
  • run migration using php artisan migrate
  • seed dummy data using php artisan db:seed
  • serve application using php artisan serve (append --port PORT_NUMBER to run in different port other than 8000)
  • access localhost:8000

Framework

The application is written in PHP based on the Laravel framework, current version of Laravel used for this project is 5.2.5.

Tools and packages

This application uses many tools and packages, the packages can be seen in the composer.json file

Some major PHP packages used are listed below:

Structure

The application is structured in app/Core/{version} as V201,V202 folder.

Each Version folder contains five folders

  • Codelist - Contains standard values declaration. Detailed documentation is here
  • Element - Contains classes for retrieval of elements needed
  • Forms - Contains all the forms that generates html form using kris/laravel-form-builder
  • Repositories - Contains all the classes for storage and retrieval from database.
  • Requests - Contains form validation rules and messages

Classes inside each of the above directories are properly written within corresponding modules namespace.

Check code quality

We follow PSR-2 for coding standard. To check if your code matches the projects quality checks please see codeclimate.

Code Climate

Tests

There are two types of tests for AidStream, one for unit testing and other one is smoke testing with Hookah library.

Unit Tests

Unit tests are in the tests\app folder. They can be run with the following command:

./vendor/bin/phpunit tests/app 

Smoke Tests with Hookah

Smoke tests are in the tests\Smoke folder, they can be run with the following commands:

./vendor/bin/phpunit tests/Smoke 

To run the tests faster in parallel run it with paraunit like below:

./vendor/bin/paratest --colors -m 2 -p 4 --stop-on-failure --path= tests/Smoke

Continuous Integration

On each push the hookah test will run on Wercker CI. It also sends notification to hipchat on Build-Bot room. Tests run on Wercker's Docker setup.

Integration with Gitomate

Gitomate is an application that automates other actions after a git push is done with special tags.

To open a merge request you can simply do it with adding #mr to the commit message. It will open a merge request for you. If it does not open in the first push try doing a commit amend and force push or make changes with a second commit and do a second push.

Gitomate will also run a code climate analysis for the branch on each push on code climate.