<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>configuration | UCSC OSPO</title><link>https://ucsc-ospo.github.io/tag/configuration/</link><atom:link href="https://ucsc-ospo.github.io/tag/configuration/index.xml" rel="self" type="application/rss+xml"/><description>configuration</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Sat, 26 Sep 2026 00:00:00 +0000</lastBuildDate><image><url>https://ucsc-ospo.github.io/media/logo_hub6795c39d7c5d58c9535d13299c9651f_74810_300x300_fit_lanczos_3.png</url><title>configuration</title><link>https://ucsc-ospo.github.io/tag/configuration/</link></image><item><title>Final Blog: StatWrap: Group and Individual Customizations</title><link>https://ucsc-ospo.github.io/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/</link><pubDate>Sat, 26 Sep 2026 00:00:00 +0000</pubDate><guid>https://ucsc-ospo.github.io/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/</guid><description>&lt;h1 id="introduction">&lt;strong>Introduction&lt;/strong>&lt;/h1>
&lt;p>Hello everyone!&lt;br>
I am Dibyanshu Pal Kushwaha, an undergraduate student studying Electrical Engineering at the National Institute of Technology Agartala, India. As part of the &lt;a href="https://ucsc-ospo.github.io/project/osre26/northwestern/statwrap/">StatWrap: Group and Individual Customizations&lt;/a> project, my &lt;a href="https://docs.google.com/document/d/17IxWc-m0opZdSriHxedDrdlh_M0gPVVBOz5l3enufQU/edit?usp=sharing" target="_blank" rel="noopener">proposal&lt;/a>, under the mentorship of &lt;a href="https://ucsc-ospo.github.io/author/luke-rasmussen/">Luke Rasmussen&lt;/a>, focuses on expanding StatWrap&amp;rsquo;s capabilities to provide more flexibility to individual users and groups. Over the summer, I worked on making StatWrap&amp;rsquo;s core features—project templates, reproducibility checklists, and asset attributes—fully customizable and shareable.&lt;/p>
&lt;h1 id="about-the-project">&lt;strong>About the Project&lt;/strong>&lt;/h1>
&lt;p>&lt;a href="https://sites.northwestern.edu/statwrap/" target="_blank" rel="noopener">StatWrap&lt;/a> is a free and open-source assistive, non-invasive discovery and inventory tool used to document research projects. It helps investigators identify and track changes in a research project as it evolves, which is critical for reproducibility.&lt;/p>
&lt;p>Before this project, features like the directory template for creating new projects and the reproducibility checklist were static—meaning everyone who downloaded StatWrap had the exact same configuration. However, every researcher, team, and institution works differently.&lt;/p>
&lt;p>The goal of my project was to break away from this &amp;ldquo;one-size-fits-all&amp;rdquo; approach. I was tasked with building configuration schemes that allow users to create, modify, import, and export custom project templates and reproducibility checklists, as well as configure custom file-level attributes. All of this needed to be done securely, with robust error handling and seamless user interfaces.&lt;/p>
&lt;h1 id="deliverables">&lt;strong>Deliverables&lt;/strong>&lt;/h1>
&lt;p>After an incredible summer of coding, testing, and refining, I am thrilled to share the completed deliverables for this project:&lt;/p>
&lt;h2 id="1-custom-project-template-builder">&lt;strong>1. Custom Project Template Builder&lt;/strong>&lt;/h2>
&lt;p>Researchers often have specific folder structures they use for every new project. I built a comprehensive Custom Template Builder to support this workflow.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Folder Upload &amp;amp; Filtering&lt;/strong>: Users can upload an existing project folder to act as a seed for their new template. To ensure templates remain clean and lightweight, the system intelligently ignores irrelevant files (like &lt;code>.csv&lt;/code>, &lt;code>.png&lt;/code>, or &lt;code>node_modules&lt;/code> folders etc) during the preparation phase.&lt;/li>
&lt;li>&lt;strong>Rigorous Security Checks&lt;/strong>: Since templates can be shared, security is paramount. The import process includes strict security checks to prevent path traversal attacks, enforce size limits, and block potentially malicious file types. If an issue is detected, clear warnings are displayed to the user.&lt;/li>
&lt;li>&lt;strong>Manage Saved Templates (Edit/Export/Delete)&lt;/strong>: Once a custom template is created, it appears alongside the default templates. Users can easily edit the template, export it as a &lt;code>.zip&lt;/code> file to share with collaborators, or delete it (with a safety confirmation dialog to prevent accidental data loss).&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Custom Template Builder" srcset="
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/template-builder_hu0c5f0e9c7d29af92317135d943ccc76e_111893_14954c1e89ba03ec1dd56ff44a13a468.webp 400w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/template-builder_hu0c5f0e9c7d29af92317135d943ccc76e_111893_a895c43a1c63fce96fc2959f3df026d9.webp 760w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/template-builder_hu0c5f0e9c7d29af92317135d943ccc76e_111893_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.github.io/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/template-builder_hu0c5f0e9c7d29af92317135d943ccc76e_111893_14954c1e89ba03ec1dd56ff44a13a468.webp"
width="760"
height="479"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Delete Template Confirmation" srcset="
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/delete-template_hub0f1ff2dc05dbc093e3cca1b030ec505_215761_ab88f7ccb65271e9369d3eb9d66b1980.webp 400w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/delete-template_hub0f1ff2dc05dbc093e3cca1b030ec505_215761_b2f793d990208a7f83db025c1ac79548.webp 760w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/delete-template_hub0f1ff2dc05dbc093e3cca1b030ec505_215761_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.github.io/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/delete-template_hub0f1ff2dc05dbc093e3cca1b030ec505_215761_ab88f7ccb65271e9369d3eb9d66b1980.webp"
width="760"
height="469"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Final Available Templates View" srcset="
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/final-template_hu65afd7451cd06c1ca830cc153dbbafd5_394288_fc2238f2a16ee840cca538baf35bfbf3.webp 400w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/final-template_hu65afd7451cd06c1ca830cc153dbbafd5_394288_ca1bc798fdbf870adbedc4d319f150b7.webp 760w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/final-template_hu65afd7451cd06c1ca830cc153dbbafd5_394288_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.github.io/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/final-template_hu65afd7451cd06c1ca830cc153dbbafd5_394288_fc2238f2a16ee840cca538baf35bfbf3.webp"
width="760"
height="475"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="2-fully-customizable-reproducibility-checklists">&lt;strong>2. Fully Customizable Reproducibility Checklists&lt;/strong>&lt;/h2>
&lt;p>StatWrap provides a default reproducibility checklist, but institutions often have their own specific requirements. I completely overhauled the checklist system to make it dynamic.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Manage Checklists&lt;/strong>: A new &amp;ldquo;Manage Checklists&amp;rdquo; dropdown allows users to Add, Import, or Export checklists as JSON files.&lt;/li>
&lt;li>&lt;strong>Checklist Addition&lt;/strong>: When adding a new checklist item, the system checks for and prevents duplicates. Users can also add an optional description.&lt;/li>
&lt;li>&lt;strong>Interactive UI&lt;/strong>: Custom checklist items appear with edit and delete buttons. The optional description is accessible via a neat &lt;code>(?)&lt;/code> tooltip icon to keep the interface uncluttered.&lt;/li>
&lt;li>&lt;strong>Drag-and-Drop Reordering&lt;/strong>: Priorities change. Users can seamlessly drag and drop checklist items to reorder them based on their specific needs.&lt;/li>
&lt;li>&lt;strong>Undo Functionality&lt;/strong>: Accidental deletions happen. I implemented a snackbar with a time-limited &amp;ldquo;Undo&amp;rdquo; option, giving users a safety net when managing their lists.&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Manage Checklists Dropdown" srcset="
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/manage-checklists_huca3bf198d7c6f92726c4383db1df290b_234688_4fc6df47fe83e7d31eaf7583a222565a.webp 400w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/manage-checklists_huca3bf198d7c6f92726c4383db1df290b_234688_0fb73ccd38d204c24bfb81b737cf8434.webp 760w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/manage-checklists_huca3bf198d7c6f92726c4383db1df290b_234688_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.github.io/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/manage-checklists_huca3bf198d7c6f92726c4383db1df290b_234688_4fc6df47fe83e7d31eaf7583a222565a.webp"
width="760"
height="588"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Add New Checklist" srcset="
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/add-checklist_hu8cffde3c989d0f26f87f790f104586e0_76048_e696169799567023f2d5dbdfce8cea90.webp 400w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/add-checklist_hu8cffde3c989d0f26f87f790f104586e0_76048_cb4a2344e1e91fde183dbd48c33a28bc.webp 760w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/add-checklist_hu8cffde3c989d0f26f87f790f104586e0_76048_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.github.io/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/add-checklist_hu8cffde3c989d0f26f87f790f104586e0_76048_e696169799567023f2d5dbdfce8cea90.webp"
width="760"
height="550"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Checklist View with Custom Item" srcset="
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/checklist-view_hu4f0873dd74634f78fc8cd31c06ed6a8e_221800_abfa6861da7fa05bc1e8559b2f36a478.webp 400w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/checklist-view_hu4f0873dd74634f78fc8cd31c06ed6a8e_221800_81e5578d2815aff5a26ee0ee6e1d9782.webp 760w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/checklist-view_hu4f0873dd74634f78fc8cd31c06ed6a8e_221800_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.github.io/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/checklist-view_hu4f0873dd74634f78fc8cd31c06ed6a8e_221800_abfa6861da7fa05bc1e8559b2f36a478.webp"
width="760"
height="586"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="3-custom-asset-attributes">&lt;strong>3. Custom Asset Attributes&lt;/strong>&lt;/h2>
&lt;p>To give users more granular control over tracking their files, I implemented Custom Attributes at the project level.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Binary Attributes&lt;/strong>: Users can define their own custom tags (e.g., &amp;ldquo;Experimental&amp;rdquo;, &amp;ldquo;Archived&amp;rdquo;) to apply to project assets.&lt;/li>
&lt;li>&lt;strong>Duplicate Prevention&lt;/strong>: The system validates inputs to ensure duplicate attributes cannot be created within the same project.&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Custom Attributes" srcset="
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/custom-attributes_hu5e8ecca9556d592d2aea157b1b9f6678_208845_75eda226e43ea90e23160884a1719f0c.webp 400w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/custom-attributes_hu5e8ecca9556d592d2aea157b1b9f6678_208845_e157325f2e05e2ebfb02740330a9aeaf.webp 760w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/custom-attributes_hu5e8ecca9556d592d2aea157b1b9f6678_208845_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.github.io/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/custom-attributes_hu5e8ecca9556d592d2aea157b1b9f6678_208845_75eda226e43ea90e23160884a1719f0c.webp"
width="760"
height="464"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h2 id="4-robust-testing--backward-compatibility">&lt;strong>4. Robust Testing &amp;amp; Backward Compatibility&lt;/strong>&lt;/h2>
&lt;p>A feature is only as good as its reliability.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Jest Unit Testing&lt;/strong>: I wrote rigorous unit tests using Jest for every new feature. This covers everything from the security filters on the ZIP imports to the drag-and-drop state management of the checklists.&lt;/li>
&lt;li>&lt;strong>Backward Compatibility&lt;/strong>: Since StatWrap already has an existing user base, I ensured that all the new dynamic configuration schemes are fully backward-compatible with older, static project files.&lt;/li>
&lt;/ul>
&lt;h1 id="conclusion">&lt;strong>Conclusion&lt;/strong>&lt;/h1>
&lt;p>Building these customization features was a deeply rewarding challenge. It required balancing powerful flexibility with intuitive, uncluttered user interfaces. Features like the ZIP import pipeline demanded careful attention to security, while the drag-and-drop checklist required precise state management. Ultimately, these additions will allow researchers to spend less time fighting their tools and more time focusing on their science.&lt;/p>
&lt;p>Working on StatWrap taught me invaluable lessons about React state management, secure file handling in JavaScript, and the importance of backward compatibility in production software.&lt;/p>
&lt;p>A huge thank you to my mentors, Luke Rasmussen for his guidance, code reviews, and support throughout this journey!&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img alt="Thank You!" srcset="
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/thanks_hu81a7405087771991938f164c6a45c6d2_109315_092ccfba3c2c62cfe7fd6893ef183b5a.webp 400w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/thanks_hu81a7405087771991938f164c6a45c6d2_109315_e4ab6d4a67fb0dd845a4a50787ae83bb.webp 760w,
/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/thanks_hu81a7405087771991938f164c6a45c6d2_109315_1200x1200_fit_q75_h2_lanczos_3.webp 1200w"
src="https://ucsc-ospo.github.io/report/osre26/northwestern/statwrap/20260926-dibyanshu-pal-kushwaha/thanks_hu81a7405087771991938f164c6a45c6d2_109315_092ccfba3c2c62cfe7fd6893ef183b5a.webp"
width="760"
height="235"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p></description></item></channel></rss>