Child pages
  • Atlas 3.1 Project
Skip to end of metadata
Go to start of metadata
Primary Mentor

Backup Mentor

Assigned toTBD


The OpenMRS Atlas provides a voluntary registry of OpenMRS implementations all over the world. The server code was written using PHP and has been adapted a few times over the past decade. During GSoC 2016, a new version of the Atlas server code was written in nodejs as the Atlas 3.0 Project, but this new, node-based server code was never fully deployed. During 2017, the 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 lost.


The goal of this project is to address the remaining tasks to bring the node-based OpenMRS Atlas into production. This will include some code changes, some additional features (e.g., LDAP support), and dockerizing the application.

Required Skills

  • Nodejs
  • Ability to write and refactor a REST API
  • Basic Javascript and HTML


  • Add LDAP support for OpenMRS ID

  • Dockerize the application
  • 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)

Extra Credit


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)


  1. While I cannot be a 'full' mentor (on nodejs and rest api), I can certainly help with any infra questions (docker, deployment, CI, testing servers, requirements). I'd love to get Atlas to 3.1 deployed.

  2. About ldap.

    Atlas 2.0 (the prod one in was using some sort of SSO with . Instead of fixing it, I'd like login to go straight from ldap for both authentication and authorization.

    Atlas 2.0 is in:

    LDAP is in:

    Both should be runnable locally.

    Atlas 3.1 needs to be deployed on the same way.

    Our ldap server is not accessible from outside our infrastructure, but I'm happy to create a new machine for you to deploy Atlas 3.1 and a copy of our LDAP. I can create them, but I need to know one or two weeks before hand.

    I don't really know much about the schema we have for ldap, but this page is supposed to make sense:

    And I have these configs on crowd (some sort of intermediate between jira/confluence and ldap):

    I do assume there will be two types of users in atlas: one that can only edit/delete their own location, and admin one that can edit or delete any location. Admins should be part of ldap group 'atlas-admin'. But that would be extra (big grin)

  3. I'm creating a VM named 'ruiru' to be a copy of our ldap. Docker configuration will be identical to prod (, and I will be copying the data from prod soon.

    I'm also creating another VM for atlas-stg, named 'kisumu'. The docker configuration comes from:  . The student selected will have ssh access to this machine.

    I will organise the docker repository, tag and build as soon as there's a git repository ready. So any commit to the master of your repository will be automatically deployed to the staging server.

    LDAP will only be accessible from kisumu machine, but you should be able to run it locally (without tls, though).