Prerequisite knowledge
Before developing on O3, you should be familiar with the following technologies:
JavaScript
Knowing JavaScript is prerequisite to everything else. We recommend going through the following resources:
- Introduction to JavaScript - Codecademy (opens in a new tab)
- JavaScript to know for React - Kent C. Dodds (opens in a new tab)
- The Modern JavaScript Tutorial (opens in a new tab)
- JavaScript for impatient programmers (opens in a new tab)
- Josh Comeau's Operator lookup (opens in a new tab)
- Visual guide to references in JavaScript (opens in a new tab)
React
The official docs (opens in a new tab) are a great way to get acquainted with React. Don't gloss over the fundamentals (opens in a new tab)!. Having a solid understanding of its core concepts is imperative in enabling you to learn how to develop high-quality frontend modules in O3. We also recommend going through the following resources:
- Writing Resilient Components - Dan Abramov (dated but still very useful) (opens in a new tab)
- A (Mostly) Complete Guide to React Rendering Behavior - Mark Erikson (opens in a new tab)
- Why React Re-renders - Josh Comeau (opens in a new tab)
- Beginners Guide to React - Kent C. Dodds (dated but still very useful) (opens in a new tab)
- A Visual Guide to React Rendering (opens in a new tab)
- React Re-renders Guide - Nadia Makarevich (opens in a new tab)
- When Does React Render Your Component - Zhenghao hao (opens in a new tab)
TypeScript
Most of our code is written in TypeScript. We recommend going through the following resources:
- TypeScript in 5 minutes (opens in a new tab)
- Total TypeScript (opens in a new tab)
- React + TypeScript Cheatsheets (opens in a new tab)
JavaScript tooling
- yarn (opens in a new tab) - we use yarn as our package manager. Generally, if the repository you're looking at has a
yarn.lock
file at its root, then it uses yarn. - lerna (opens in a new tab) - we use
lerna
to manage our monorepos. - turbo (opens in a new tab) - we use
turbo
to run scripts during both local development and in our continuous integration processes. - swc (opens in a new tab) - we use SWC to compile our JavaScript and TypeScript code into a format supported by all major browsers.
- webpack (opens in a new tab) - we use webpack to bundle our code for production. We use webpack 5 (opens in a new tab), 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 (opens in a new tab). You should know the basics of using Git and GitHub. Great learning resources include:
- Learn Git Branching (opens in a new tab)
- Git and GitHub for Beginners (opens in a new tab)
- Dangit, Git (opens in a new tab)
- OpenMRS Guide to using Git (opens in a new tab)
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: