Prerequisite Knowledge

Before jumping into building with O3, you should be familiar with the at least HTML, CSS, and JavaScript. If you're totally new to frontend development, it's especially important that you develop a good grasp of the fundamentals. Below is a list of the technologies we use in O3 and some recommended resources to learn them.

JavaScript

Knowing JavaScript is a prerequisite to everything else. We recommend going through the following resources:

React

The official docs are a great way to get acquainted with React. Don't gloss over the fundamentals! Having a solid understanding of its core concepts is very important in helping you learn how to develop high-quality frontend modules in O3. We also recommend going through the following resources:

TypeScript

Most of our code is written in TypeScript. We recommend going through the following resources:

JavaScript tooling

  • yarn - we use yarn as our package manager. Generally, if the repository you're looking at has a yarn.lock file at its root, it uses yarn. We leverage yarn's workspaces for versioning and publishing packages within our monorepos.

  • turbo - we use turbo to run scripts during local development and our continuous integration processes.

  • swc - we use SWC to compile our JavaScript and TypeScript code into a format all major browsers support.

  • webpack - we use webpack to bundle our code for production. We use webpack 5, which is the latest version of webpack at the time of writing.

Git

It is imperative that you keep your code in a version control system. OpenMRS uses Git. You should know the basics of using Git and GitHub. Great learning resources include:

OpenMRS

OpenMRS provides various APIs through which the frontend can request data. We recommend acquainting yourself with the documentation of these APIs as well as the OpenMRS data model. Find the relevant links below:

Next steps

Ready to jump in? It's time to learn about the key repositories in the O3 ecosystem and how they work together. Head over to the next section to learn more.