Gazelle Demo Creator TUI and config.ini driven deployments — GSoC 2025 with Mifos

YASH SHARMAYASH SHARMA
4 min read

This summer during Google Summer of Code 2025, I worked with the Mifos community on Gazelle, a Deployment-as-a-Service tool for Digital Public Goods. My project focused on building a Python Textual-based Terminal UI called Demo Creator, which makes it easier for teams to author and deploy curated demos.

Demo Creator is configuration-driven and supports authoring, versioning, synchronization, and storing of demos. Alongside, I contributed a new config.ini deployment pathway directly to Gazelle. The demo files created with Demo Creator are intentionally structured so that the community’s demo runtime project can consume them for end-to-end execution in workshops, walkthroughs, and evaluations.


Merged Pull Requests

Demo Creator (TUI)

  • PR #1 → Initial TUI-based demo creator with local and JFrog file upload support

  • PR #3 → Enhanced demo creator user flow and metadata management

  • PR #4 → Major enhancements to demo creation, listing, and management flows

  • PR #5 → Added DPG deployment features and JFrog upload enhancements

  • PR #6 → Enhanced Deploy DPG and Upload workflows

  • PR #7 → Refactored project structure and added documentation

Mifos Gazelle

  • PR #55 → Introduced config.ini-based deployment support

Background

Mifos Gazelle is a DaaS deployment tool that brings up multiple Digital Public Goods (DPGs) (e.g., Mifos X, Payment Hub EE, Mojaloop vNext) quickly, reducing complexity and time needed for end-to-end DPI evaluations and demos. Teams needed a simple, repeatable way to create demo narratives, publish them centrally, and spin up matching environments on demand for hands-on walkthroughs and stakeholder sessions.


What Was Built

  • Demo Authoring & Management

    Create, edit, and manage demos with titles, URLs, and detailed steps. Each demo is tracked with snapshots and safe-delete markers for synchronization (select a demo from table to edit/delete).

  • Upload & Sync

    Upload demos to a remote storage (currently JFrog Artifactory) at runtime, with authentication handled securely and no credentials stored locally.

  • Config-Driven Deployment

    Generate a config.ini file from defaults, edit it as needed, and deploy via Gazelle with live logs—all inside the TUI. This relies on the new config.ini support added in PR #55.

  • Runtime Alignment

    Demo files created in the TUI are intentionally structured so the demo runtime project can fetch and execute them seamlessly.


Deliverables

  • A Python-based TUI (built with Textual) for managing the full lifecycle of demo files.

  • Integration with Gazelle to deploy environments based on generated config.ini .

  • Support for selective deployment of DPGs to align with each demo’s requirements.

  • Contribution of config.ini deployment support directly to Gazelle.


User Experience

From the Main Menu, users can:

  • Create Demo → add steps, URLs, and details → save and store them locally.

  • Upload Demo → authenticate → push to a remote store.

  • Deploy DPG → review/edit config.ini → save → run Gazelle with live logs.

This creates a smooth flow from idea → demo file → live environment, without switching tools.

For more details use demo-creator/docs

Reusable demos plus config.ini provide a single source of truth for reproducible deployments across different workshops and pilots.


Quick Start

  1. Bootstrap the TUI:
./scripts/install_dependencies.sh
just setup
just run
  1. Author and upload a demo:
  • Create Demo → add steps, URLs, and details → Submit → Upload Demo → enter remote credentials → Start upload
  1. Deploy DPGs:
  • Deploy DPG → review/edit config.ini → Save → Deploy → watch live logs

Architecture Snapshot

The TUI is built on Textual, with dedicated screens for login, demo creation, upload, deployment, and logs.

  • Demo data is stored as JSON and indexed via metadata.json with timestamped snapshots.

  • Configurations (repo paths, branches, deploy templates) are centralized.

  • Gazelle deployments are triggered with templated commands consuming generated .ini profiles.

  • Demo files remain runtime-friendly for execution by the community demo runtime project.


Impact

  • Faster demos
    Author → Upload → Deploy flow reduces setup time.

  • Repeatability at scale
    Externalized demo content + standardized config.ini ensure reproducibility across workshops, webinars, and pilots.

  • Lower friction
    Simplified orchestration and environment-agnostic design cut down on ad-hoc support for demo installs.


What’s Next

  • Extend config.ini defaults to cover more DPGs and richer demo narratives.

  • Enhance log streaming, cancellation, and cleanup inside the TUI.

  • Refine upload flows for better collaboration in multi-user scenarios.

  • Track further work under the GAZ-17 epic.


Acknowledgments

Huge thanks to my mentors for their guidance on architecture and reviews, to the Mifos org admins for roadmap alignment, and to the Mifos community for discussions, testing, and feedback. This collaboration helped me learn a lot, and the overall experience was truly awesome.

Overall, this project has been a rewarding learning experience, and I’m excited to see how the community builds on these foundations going forward.

0
Subscribe to my newsletter

Read articles from YASH SHARMA directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

YASH SHARMA
YASH SHARMA