Atlas 3.1 Project
Primary Mentor | @Burke Mamlin |
Backup Mentor | @Harsha Kumara |
Assigned to | @Sai Sandeep Mutyala |
Background
The OpenMRS Atlas provides a voluntary registry of OpenMRS implementations all over the world. The server code was originally written using PHP and has been adapted a few times over the past decade. During GSoC 2016 and 2017, a new version of the Atlas server code was written in Node.js as the Atlas 3.0 Project, but this new, node-based server code was never deployed in production. In 2017, the broader OpenMRS infrastructure was migrated and updated so all services are deployed using Docker and single-signon was switched to LDAP. Given users could no longer authenticate to create or update their markers and, by default, untouched markers fade over time, OpenMRS Atlas was literally fading away in disrepair.
Purpose
The goal of this project was to address the remaining tasks to bring the node-based OpenMRS Atlas into production. This included some code changes, some additional features (most importantly, adding LDAP support), and ensuring the application could be deployed and configured by our infrastructure (i.e., using Docker).
Required Skills
Nodejs
Ability to write and refactor a REST API
Familiarity with Docker
Basic Javascript and HTML
Basic SQL commands (i.e., MySQL)
Basic Java programming (if Atlas module needs to be refactored)
Objectives
Add LDAP support for OpenMRS ID (LDAP functionality should be isolated – i.e., avoid LDAP references spread throughout the code)
All features, including basic administrative functions should be performed through REST API calls
Support downloadable images (help users create an image for a slide deck without creating a burden on the server)
Refactor marker images to be uploaded (confirm type, limit size) so they can be served securely
Prevent javascript injections (including when displaying user-uploaded images)
Minimal Viable Product (MVP)
Users can authenticate via LDAP
Users can add and update markers
Atlas module works on supported versions of the Reference Application
Product is deployed to replace Atlas 2.1
Extra Credit
All external/user URLs should have “rel=nofollow” (https://www.w3schools.com/tags/att_a_rel.asp)
Allow admins to access to disable/delete anything suspicious
Notify admins when new site is added (including image)
Atlas module works with new Atlas server on both new and legacy versions of OpenMRS
Progress TODO List
Primary Goals
Additional Goals
Features Implemented / Fixed
Implemented Login through LDAP
Fixed addition, updating and deletion of markers
Added admin functionality and created an admin page
Fixed the Atlas module
Created an RSS feed
Implemented upload of markers
Implemented download of map screenshots
Allowed admins to download marker data
Allowed markers to have co-owners
Added Email notifications to notify owners of their fading markers
Implemented search for markers
Created a data page
Resources
Atlas 3.0 Project (also, this thread in OpenMRS Talk)
Blog - Weekly progress on the project is documented here
openmrs-contrib-atlas (2.1) - php - current production
openmrs-contrib-ansible-docker-compose - used to create a local staging LDAP server
Infrastructure provided
Staging LDAP with users in both atlas-user and atlas-admin groups
Staging server (docker host)
Bamboo pipeline deploying image to docker hub AND docker image to staging server
LDAP credentials
SMTP credentials
S3 bucket to store - and serve - images (if desired)
Backup with current data (atlas 2.1)