OpenMRS 3.0 Micro Frontend Demo Page
About
We're building a new frontend for OpenMRS via a collaborative process that leverages modern frontend technologies. These technologies will enable OpenMRS users and developers around the world to share more frontend functionality, reduce duplicated effort, and have a better user experience.
Quick Links
Here are the most important links for this project, aside from the actual code. High-level project documentation and information about how to join us can be found below.
Note: If you are new to this page, please review this page's contents before clicking on these buttons. These are convenient links to team resources but should only be utilized after completing basic onboarding. |
---|
Project documentation
Where to find work
Designs
How to Work with the Designs
Current Status VERY ACTIVE
How does this project fit in with the strategy?
We are working on 3 main goals that will unlock better frontend collaboration across OpenMRS:
- Plug-and-Play Frontend Architecture: makes it possible for frontend feature development to be shared across teams, organizations, and distributions
- Implementer Tooling: makes it easier for non-developers to configure the product to the needs of their organization or site
- A friendly, modern, consistent User Experience: with a professional UX framework, this further unlocks frontend feature-sharing, and creates a 3.0 option of the OpenMRS RefApp
Background
Watch this 15 minute video that will give you a better understanding of our vision.
Strategic Fit for OpenMRS
Decision Making Process
We use an RFC (Request For Comments). Major decisions are made through GitHub pull requests where anyone can comment.
How to Join
Weekly Meeting Information
When: Thursdays at 4pm UTC / 9:30pm IST/ 7pm EAT / 5pm CET / 11am ET / 8am PT
Where: Zoom link for computer or mobile
What Happens On These Calls:
- Dev Demo: latest work done (if it’s the end of a sprint, we also do the full sprint demo)
- Dev Discussion: Any blockers or things to clarify
- Product Priorities: We clarify any epics or issues that need more ownership or to be prioritized
- Design Updates: We wrap up by looking together at the latest design work, so we know what designs are soon to be ready for development
Notes: Notes for meetings
Other Meeting Resources
Talk: Hyperlink
Slack channel: #microfrontends
GitHub: Link to Git page
Website Board/Additional Forum: Additional site link
How to Contribute
- Check the Developer's Guide: Use our Developer's Guide to get started. Look for answers there.
- Introduce Yourself: Come say hello on our Slack channel (listed above).
- Find Intro Tickets: Intro tickets you can use to start contributing are available here:
- Note: To view the designs in detail, you'll need an invite to our Zeplin account. Ask Grace Potma& Eric Achillah for help - @grace & @Eric on Slack. Make sure you also review our short How to Use Zeplin video.
- Please assign tickets to yourself before starting work. This helps avoid confusion and accidental duplication of work. Double-check the ticket's Epic for other related work before working on things outside the described scope of the ticket - you may accidentally be replicating a feature someone else is already working on.
- Please only take 1-2 tickets at a time. This helps you to focus on getting 1-2 things done at a time. If you assign yourself to multiple tickets, this prevents others from working on them, so please be considerate of others and only pick up 1-2 tasks at a time. When those are done, you can assign yourself another 1-2 other tasks. If you have submitted your PR for 2 tickets and are still waiting for feedback, it is okay to pick up another ticket, so long as you promptly respond to the feedback on your original tickets so that work can be merged promptly.
- Meet Us! Come to a weekly squad call to learn more about what we do and get hands-on experience.
- Sprints: Become part of our regular sprints. This will happen naturally as you join our calls, though you don't need to join all calls in order to participate. Here is our active board. We use epics to break down features and widgets, and we typically work in 3-week sprints.
More Information
(1) Plug & Play Architecture: The frontend stack we're building on using Micro Frontends
Goal: Frontend architecture designed for extensible and configurable apps and widgets.
What are Microfrontends? Microfrontends are in-browser javascript modules (ESMs) that provide application UI. They make it possible to have extensible, configurable and independently deployable frontend features. It means you can get your frontend live and updated fast.
Our MF Framework is Single-SPA: We chose to use single-spa, the most popular microfrontends framework, as the basis upon which to build this new frontend architecture.
Our MF Tech Stack: Primarily React, HTML and CSS, but it's not unfeasible that one could choose to develop in a JavaScript framework of their choosing - that's the whole premise behind microfrontends after all.
Repositories You Should Know About
Frontend 3.0 uses a framework called esm-framework
, which is housed in openmrs-esm-core, along with the app shell and tooling. Distributions will use these core modules and package a number of Microfrontends which are built on them. The reference application is made up of all the microfrontends found in the following repositories:
- openmrs-esm-core: Microfrontends which are administrative or else integral to the application
- openmrs-esm-patient-management: Microfrontends which deal with creating, searching, and listing patients
- openmrs-esm-patient-chart: The patient chart microfrontend and all its widgets
- openmrs-esm-home: Microfrontends tied to the home page
Special mention for openmrs-rfc-frontend which is a git repo that facilitates a democratic process where folks can propose changes to the frontend implementation via RFCs (Request For Comments). Please read, for example, the Contributing Guidelines for Microfrontends, which were established with RFC #20.
(2) Implementer Tooling: Tooling we're building to make MFE easier for implementers to configure
Goal: Enable both developers and non-developers to easily configure their distribution, and re-use that configuration rapidly.
(3) Building a Friendly, Modern UX in RefApp v3.0
Goal: Create a better means for building out a shared UI. Modernizing the entire RefApp frontend, using Carbon Design System for UI consistency and faster dev value. Our OpenMRS Reference Application needs to become a Point of Care application, that’s modern, friendly, and works well on tablets.
We're currently in the process of implementing new designs that leverage the carbon design system for our reference application. (More on why we chose carbon here).
We're not starting from scratch though. Rather, we're migrating from an old set of designs (and an old style guide) to the new designs (and now migrating to use Carbon Design System as well - not all the Carbonizing work is done). As such, it should not be unexpected that gaps will be found in documentation, incomplete implementations, broken functionality and so on as we move to get everything back in order.
Designs:
Our Design System:
Our Simple Style Guide for reference:
Meet the Members
Finally, member information. This will include the project’s leaders, or any other noteworthy members, sorted by their role and given contact information. It is important to maintain a distinction between teams and squads. All contact tables should be conveyed using the same format. Currently being used is this table below. The left column indicates the different positions, and the corresponding right columns will list the tags of all active members holding those positions.
Project Owners | AMPATH | |
OpenMRS | ||
Mekom Solutions | ||
Regenstrief Institute | ||
UX Design | Ciarán Duffy, Paul Adams | Sonder Design & AMPATH |
Software Architecture | Smapiot & Mekom Solutions | |
PIH | ||
Developers, DevOps, QA, BA | Dennis Kigen (Unlicensed) Donald Kibet | AMPATH |
OpenMRS | ||
Romain Buisson | Mekom Solutions | |
Nikita Malyschkin | Smapiot & Mekom Solutions | |
UCSF | ||
PIH | ||
BA/Clinical Feedback | ||
Brown, Backend & FHIR Support | ||
Bett Kipchumba | AMPATH, Backend & FHIR Support |