Skip to main content

MaterialDerailleur

Overview​

MaterialDerailleur shifts donations into drive for BWorks. A donated item may need to be received, inspected, categorized, repaired, stored, labeled, assigned to a program, and eventually distributed. When that work is tracked in paper logs, spreadsheets, informal messages, or memory, records can be lost or duplicated as an item's condition, location, and status change.

MaterialDerailleur brings donation records, donor details, item status history, barcode labels, and program information into one system. It gives staff and volunteers a shared view of each item from intake through distribution, while preserving the information BWorks needs to acknowledge donors and report on their contributions. The goal is to help the organization spend less time searching through disconnected records and more time serving its community.

Information​

  • Source Code: https://github.com/oss-slu/material-derailleur git
  • Client: BWorks Organization
  • Track: Client-driven Product
  • Current Tech Lead: Mathew Shereni github linkedin
  • Developers:
    • Cole Patrick (capstone) github
    • Tori Willis (capstone) github
    • Vinay Billa (alumni, prior tech lead) github linkedin portfolio
    • Gayatri Jawharkar (alumni) github
    • Sarvesh Sonawane (alumni) github
    • Lalith Adithya Reddy Avuthu (alumni, previous tech lead) github
    • Sam Kann (capstone) github
    • Josheph Hansen (capstone) github
    • Sai Teja Dugyala (capstone) github
    • AJ Ashgari (capstone) github
    • Sai Kiran Reddy Beeram (alumni) github linkedin
    • Mahaboob Pasha Mohammad (alumni) github linkedin
    • Anjali Putta (previous tech lead) github linkedin portfolio
    • Siri Chandana Garimella (proof of concept) github
    • Manohar Reddy YRL (proof of concept) github
    • Chirag Gupta (proof of concept) github
    • Abhi Stephen Rokkam (proof of concept) github
    • Krishnakanth Burugu (proof of concept) github
    • Brijitha Tialu (proof of concept) github
    • Deepak PVSN (proof of concept) github
    • Maryam Moshrefizadeh (proof of concept) github
  • Start Date: March 2024
  • Adoption Date: March 2024
  • Technologies Used:
    • React and TypeScript
    • Node.js, Express, and TypeScript
    • Prisma
    • PostgreSQL
    • Azure Blob Storage
  • Type: Web application
  • License: MIT

Donation and Inventory Workflow​

MaterialDerailleur supports the full lifecycle of a donated item:

  1. A donation is entered into the system and connected to its donor.
  2. Each item is assigned a type, program, condition, and status.
  3. A barcode label is generated for inventory tracking.
  4. Staff or volunteers add status updates as the item is inspected, repaired, stored, or distributed.
  5. The item's history remains connected to the donor for communication and reporting.

The donated-items dashboard provides a searchable inventory view. Users can search by item ID, name, or donor; filter by item type, program, or status; and access barcode tools for labeling and tracking.

MaterialDerailleur donated-items dashboard with search, filters, and barcode actions

Core Platform Capabilities​

  • Donation intake and donated-item tracking
  • Donor profile and contact management
  • Item status history
  • Barcode and label generation
  • Inventory search and filtering
  • Program-based organization of donations
  • Administrative workflows for reviewing and updating donated items

User Guide​

After logging in, users are directed to the homepage and can navigate to these sections:

  • Donations: View, search, and filter donated items.
  • Donor Form: Register a new donor.
  • Programs: Create and manage programs that use donated items, and connect donations to those programs.
  • Item Details: Review an item's history, update its status, upload photos, print its barcode, and send updates to its donor.

MaterialDerailleur donated-item details page with status history, barcode, donor, and program information

Software Architecture​

MaterialDerailleur separates the browser-based client, REST API, structured data, and uploaded files so each part can support a distinct part of the donation workflow.

MaterialDerailleur software architecture overview

  • Client application: React and TypeScript support reusable forms, search and filtering controls, detail views, and barcode actions while keeping donation and status fields explicit in the interface.
  • REST API: Node.js, Express, and TypeScript provide a central layer for authentication, role-based access, and donation, donor, inventory, and status workflows. Prisma maps those API operations to the database.
  • Data and file storage: PostgreSQL stores related records such as donations, donors, item types, programs, statuses, and users. Azure Blob Storage keeps uploaded images and documents outside the relational database.

Development Priorities​

  • Implement CRUD interfaces for donors, donated items, and programs.
  • Develop backend APIs to support these operations.
  • Improve the automatic email workflow so donors receive timely updates.
  • Support importing donor and item details from external sources.
  • Develop detailed documentation for application administrators.

Get Involved​

To contribute, visit the MaterialDerailleur repository and open an issue or pull request.