LavaanGUI

The Product

Our project focused on improving LavaanGUI, an open-source tool that simplifies Structural Equation Modeling (SEM) for psychology researchers through a visual interface. LavaanGUI bridges R (via the lavaan package) and the web (via Shiny and JavaScript) to make code-heavy model specifications more intuitive and accessible. Since LavaanGUI was already a minimum viable product, we worked with the existing codebase.

Our main contributions were to enhance the application by adding new features and important functionalities. We provided a User-Tutorial and walk-through for new Users, statistical advanced features for SEM such as Likelihood-ratio testing, parameter constraints, and multi-grouping. Additionally, we developed a live-syntax-to-graph interaction, where Users see real-time visual updates of the SEM model graph as they modify the lavaan syntax.

Our changes made lavaanGUI more usable for researchers/students who may not be experienced coders, while keeping it flexible for expert users.


The Customer

Our client was Dr. J.D. Karch. He is an assistant professor at the Institute of Psychology at Leiden University and developed LavaanGUI. Communication with the client occurred through bi-weekly meetings on location or Microsoft teams. We worked closely with Karch, as he developed the website on his own, he could give constructive feedback on usability and performance expectations.

  • client: "Well... This is one of the not-so-nice functions I developed. "
  • "All models are wrong, but ours at least update live."
  • "Making models behave, one constraint at a time."
  • "Our models aren't just pretty—they're parameterized."
  • "Without SCRUM, we'd still be arguing over design choices."
The Team

The team consisted of six students from Leiden University. While all members contributed to development and testing, some member had a specific additional roles. Product Owner-Romualdo Santolla, Scrum Master-David Moerdijk, Leon Altfeld, David Wünsch, Koen Simonides, and Jesse Kroll. We held regular SCRUM meetings and maintained professional communication with the client throughout the project. Within the team, we mainly split into smaller subgroups of 2 members to ensure effective task distributions. As a team we are most proud of our exponential learning curve regarding our understanding of the development process fostered by elaborate and neat SCRUM work. Additionally, we learned new statistical concepts, previously unknown programming languages such as R, Javascript, & svelte, and with this we implemented relevant solutions.


The Technologies