Hey GSoC students,
As you keep exploring ways to contribute to OpenMRS and get comfortable with the codebase, here’s a fun starter challenge for you.
This isn’t just practice work.
It’s a real feature that will go live and be used by the community. Think of it as a hands-on way to demonstrate how you approach data, logic, and clean UI design while contributing something meaningful.
- You are given 3 JSON files (one per repository).
- Your task is to build the dashboard shown in the mockup and render the report dynamically from those JSON files.
- No backend required.
- Mockup
- Repository
Core Logic
CVEs
Sort by: Score (descending)
Dependencies
- Dependency severity = highest CVE severity (by score)
- Fix Version = highest “fixedIn” version that fixes all CVEs
- Sort by:
- Dependency severity
- Highest CVE score
- Name (A–Z)
Repositories
- Repo severity = highest CVE severity in that repo
- Sort repos by:
- Repo severity
- Highest CVE score in repo
- Repo name
UI Expectations
Match the mockup:
- Collapsible repo sections
- Collapsible dependency rows
- Severity pills
- CVE detail table
- Proper sorting everywhere
Submission
Fork the repo and send your PR to:
GitHub - jayasanka-sack/openmrs-contrib-dependancy-vulnerabilities (Will be moved to OpenMRS org soon.)
Phase 2 (Optional / Go Beyond)
If you’d like to go beyond the initial scope, here’s an exciting extension.
The JSON files you were given are based on GitHub Actions artifacts (for example: a run like openmrs-module-billing/actions/runs/22481757742 → Artifacts > dependency report).
Instead of relying only on the static files provided, try to implement logic that fetches the latest report from the main branch automatically.
This makes your solution more dynamic and closer to production usage.
Notes
- The initial phase (static JSON-based dashboard) is expected to be completed by 2026-03-04T18:30:00Z.
- Keep it minimal and simple, and readable. Pretend a teammate will maintain it next month.
- If something in the JSON is missing, handle it gracefully (show
-). - . This is a relatively small dashboard page, so even plain HTML/CSS/JS would be enough. No need to over engineer it unless you really want to explore. Using multiple frameworks just to render a simple set of tables would be unnecessary.


