Giter Club home page Giter Club logo

orbf2's Introduction

Build status Test Coverage Code Climate

About

OpenRBF 2.0 logo

A rule engine on top of dhis2 developed by Bluesquare, to let power users describe their Results-Based Financing scheme.

More info about the tool https://bluesquarehub.com/services/openrbf-2-0/

Created with the support of the World Bank.

World Bank logo

Thanks to the DHIS2 team for their help and support

DHIS2 logo

Using

A wizard approach guiding you in the setup of projects

With your rules editor and visual explanation

activity rule dependency graph

payment rule  dependency graph

each formula will be mapped to a dhis2 data element.

You can easily verify your formula with the invoicing simulation form with a built-in invoice explainer showing you how was this amount/score calculated

invoicing explainer

Every change is tracked and you publish your project draft to be used at a given period.

Database

The database configuration is handled in database.yml.

Rails limits the number of database connections with he pool setting. This is the maximum size of the connections your app can have to the database.

A puma worker on 1 dyno will need RAILS_MAX_THREADS connections. Sidekiq on 1 dyno will need SIDEKIQ_CONCURRENCY connections.

Rails maintains its own database connection pool, with a new pool created for each worker process/dyno. Threads within a worker/dyno will operate on the same pool.

The current pool is set to ENV["DB_POOL"] || ENV['SIDEKIQ_CONCURRENCY'] || ENV['MAX_THREADS'] || 5.

Current size

In production, we currently have:

SIDEKIQ_CONCURRENCY => 20 MAX_THREADS => 5 WEB_CONCURRENCY => 1 DB_POOL => 1

This means that we need a DB_POOL of:

      [SIDEKIQ_CONCURRENCY, MAX_THREADS*WEB_CONCURRENCY].max
      => [20, 5*1].max
      => 20

The current pool size is 20.

(Run bundle exec rake config:check_db_pool to get a live version of this output)

Contributing

Dependencies and config

Run script/setup, this should install all dependencies and create the local databases.

Run script/test to check if everything was successfull.

A default user and program will be create by the db/seeds.rb file.

Seed a project

We have an example project that can be created using the public DHIS2 demo instance (https://play.dhis2.org/demo/) to showcase a RBF project configuration:

http://127.0.0.1:3000/setup/seeds

This will generate a "typical" RBF project with quality, quantity & payment rules for you to explore and play with.

Admin interface

You can access any element in the application using the admin interface at

http://127.0.0.1:3000/admin

Optional

If you set an ENV variable for LOG_ROCKET_TOKEN, a logrocket session will be started. (Currently only enabled in production)

Tests

Run the tests after any change:

bin/rspec

Deploying

Hosting provider

We recommand Heroku to host the application, but any hosting should work as long as it support Rails & Postgresql. On heroku, deploy should be as simple as:

git push heroku master
heroku run rake db:create db:migrate db:seed

Or you can use this button to get up and running immediately:

Deploy

Deploying the dhis2 app 'hesabu manager'

A dhis2 app called hesabu-manager is available but not yet on par with the web application.

heroku run rake ui:setup_all -a yourappname
heroku run rake ui:deploy_all -a yourappname

Restoring a testing or production Environment

get a fresh copy using Heroku

heroku pg:pull DATABASE_URL orbf2 --app yourappname

to speed up things you can a copy without the dhis2_logs table

bundle exec rake db:fetch APP_NAME=yourappname

Sub modules & related projects

orbf2's People

Contributors

alfretoine avatar apneadiving avatar butofleury avatar dependabot[bot] avatar franckhaki avatar madoleary avatar mestachs avatar pjaspers avatar vanakenm avatar xgill avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.