# OBeLiX ![logo](https://hackmd.io/_uploads/B16Av0VG1e.jpg =500x) # Project details: **Applicant:** Adarsh Kalikadien **Faculty:** Applied Sciences **DCC members** Niket Agrawal, Selin Kubilay **Support period** February 2024 - November 2024 **Repository/Archive:** [GitHub Repository](https://github.com/EPiCs-group/obelix) **Research Background**: *OBeLiX (The Open Bidentate Ligand eXplorer) is a software workflow designed to simplify and automate the generation and analysis of transition-metal-based catalyst structures. Its goal is to make the process of building catalyst structures and calculating chemical properties more efficient, reproducible and accessible.* ### Project Description The project focuses on improving Obelix repository following fair principles and selecting and implementing a data managment solution for its output data, having the future data requirements in mind. ## Project Results **FAIR Software Practices** - Implementation of integration tests to test the different workflows in the software package. - Setup Continuous Integration using GitHub Actions to run the integration tests automatically on new incoming code changes. **Scalable Data Infrastructure** - Designed and deployed a scalable data management solution using AWS. - Automated processes for storing, organizing, and linking research data with metadata, ensuring efficient and error-free data management. ### Lessons learned - Working on a database solution without a clear list of requirements may be more challanging and result in a more complex solution than necessary. - When writing integration tests for software packages that take file(s) as input and produce file(s) as output, identify 'scenarios' and 'testcases'. A scenario is the input configuration or starting state of the system for a particular experiemnt. A test case is a check that verifies that a behavior or action was performed as expected, for example, a file is created and it has the expected data. - Print the pass/fail status of test cases for each scenario on the console output of the test. This is visually informative to both users and developers. - Drafting the test output on the console before writing the code for the test will result in a code that is modular, i.e., easy to add/update test cases and aid debugging in failed cases.