Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Primary Mentor
or Pascal Brandt

Backup Mentor

TBD
Harsha Kumara
Assigned to
TBD
Sai Sandeep Mutyala

Background

Image Added

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 nodejs Node.js as the Atlas 3.0 Project, but this new, node-based server code was never fully deployed in production. During In 2017, the  the broader OpenMRS infrastructure was migrated and updated so all services are deployed using Docker and single-signon was switched to use LDAP. As a result, some of the functionality of the PHP-based Atlas has been lostLDAP. 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 is was to address the remaining tasks to bring the node-based OpenMRS Atlas into production. This will include included some code changes, some additional features (e.g., most importantly, adding LDAP support), and dockerizing 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

    Dockerize the application

    (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 

Image Added

  • Fixed addition, updating and deletion of markers

Image AddedImage Added

  • Added admin functionality and created an admin page

Image Added

  • Fixed the Atlas module

Image Added

  • Created an RSS feed

Image Added

  • Implemented upload of markers

Image Added

  • Implemented download of map screenshots

Image Added

  • Allowed admins to download marker data

Image Added

  • Allowed markers to have co-owners

Image AddedImage Added

  • Added Email notifications to notify owners of their fading markers

Image Added

  • Implemented search for markers

Image Added

  • Created a data page

Image Added

Resources

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)