If you are new to the project, a great place to start is Getting Started |
In order to accelerate project delivery, OpenLMIS version 3 uses a scaled agile approach. Read more about our Methodology and Process.
Minimum
For OpenLMIS version 3, the primary technologies used are:
Layer | Tool |
---|---|
Browser Application | Javascript with AngularJS 1 (HTML5 and CSS are used for templates and layout) |
API Services | Java 8 with Java Spring |
Database | PostgreSQL 9 or Amazon RDS |
Infrastructure | Docker Engine 1 and Docker Compose 1 (Docker Containers run locally, in a data center, or in the cloud) |
To contribute to OpenLMIS, it will be important to have experience with Java or AngularJS or both. To work on the Java back-end of OpenLMIS, you should have knowledge of Java and an interest in working with the Spring Framework and RESTful APIs. To work on the AngularJS front-end of OpenLMIS, you should have knowledge of Javascript, HTML and CSS and an interest in working with the AngularJS framework.
If you do not have these tech skills, there are lots of online resources to learn, and there are also lots of ways to contribute to OpenLMIS besides writing code. We value contributions including bug reports, feature suggestions, documentation, translations and more. See the Contributing section on docs.openlmis.org.
The OpenLMIS software is focused on a service-based, API-driven, modular approach designed to better support customizations and extensions. The goal of this micro-services architecture is to enable multiple OpenLMIS implementations in different countries while still sharing one global, open source codebase. The end result is a powerful, flexible product that emphasizes interoperability, extensibility, andperformance at scale across countries, programs, and products.
(also see Frameworks & Libraries)
Repositories on GitHub (each service/component in its own repo): OpenLMIS
Issue tracking on JIRA.
Developer Forum hosted on Google Groups: https://groups.google.com/forum/#!forum/openlmis-dev
Jenkins for continuous integration.
SonarQube for static code analysis.
Transifex for translation/localization management.
Slack for real time chat, GitHub notifications, etc. Slack domain is openlmis.slack.com.
docs.openlmis.org as a global document repository.
An ERD of the dev branch is at ci.openlmis.org/ERD/, built by a Jenkins build job. An ERD for each service is built by Jenkins and published online at URLs that follow this pattern: http://ci.openlmis.org/erd-[name of the service]/ (eg, http://ci.openlmis.org/erd-referencedata/).
Docker is used for managing containers. See our Docker Cheat Sheet
IntelliJ IDEA is the recommended IDE for Java web service development. See our IntelliJ IDEA Knowledge Base
See OpenLMIS Coding Standards and Service Style Guide.
For UI, see UI Extension Architecture and Guide, UI Coding Conventions and UI Build documentation in the Requisition UI Readme and Dev UI Readme.
The dev community supports several communication channels. Each mode serves a different purpose:
If you are interested in developing or deploying OpenLMIS, please reach out to the community as soon as possible, and be sure to read the Contribution Guide before getting started. The community will help you understand the current state of the product and how best for you to move forward. |