This repository supports a volunteer effort to help Project Hope Food Bank of Lynden evaluate and improve its inventory management process.
The current system is based on Excel spreadsheets. The goal is not to replace that process blindly, but to understand how the food bank currently works, identify the highest-value pain points, and propose a practical system that can be maintained with minimal cost.
- Reduce manual inventory tracking effort.
- Improve accuracy and visibility of available food bank inventory.
- Keep the solution affordable for a small community organization.
- Prefer open-source software and low-cost storage where practical.
- Design for non-developer users and long-term maintainability.
- Preserve useful parts of the existing workflow instead of forcing unnecessary change.
- Excel-based inventory tracking.
- Additional architecture decisions are pending discovery.
The application uses a conventional src and tests layout:
src/ProjectHopeLynden.Domain- core business concepts and rules.src/ProjectHopeLynden.Application- application use cases and workflow orchestration.src/ProjectHopeLynden.Infrastructure- persistence and external implementation details.src/ProjectHopeLynden.Web- ASP.NET Core Razor Pages web application.tests/ProjectHopeLynden.Domain.Tests- domain tests.tests/ProjectHopeLynden.Application.Tests- application tests.tests/ProjectHopeLynden.Infrastructure.Tests- infrastructure tests.tests/ProjectHopeLynden.Web.Tests- web and Razor Page tests.
dotnet restore ProjectHopeLynden.sln
dotnet build ProjectHopeLynden.sln
dotnet test ProjectHopeLynden.sln
dotnet run --project src/ProjectHopeLynden.Web/ProjectHopeLynden.Web.csprojThis repository uses the shared GitHub workflow in ScottyMac52/shared-github-workflows.
- Pull requests run CI tests and coverage.
- Pushes to
mainrun tests, coverage, and release-mode build artifacts. - Version tags in
vX.X.X.Xformat create a GitHub Release. - Tagged releases generate both a ZIP artifact and an Inno Setup
setup.exeinstaller.
Create a tagged release with:
git tag v0.0.1.0
git push origin v0.0.1.0The installer installs the ASP.NET Core server component and includes a checked-by-default option to preserve an existing Project Hope Lynden database if one is present. The current preservation script protects the conventional database locations under {commonappdata}\ProjectHopeLynden\ProjectHopeLynden.db and {app}\ProjectHopeLynden.db so we have a safe path before the EF Core storage location is finalized.
This project is currently in the discovery and planning phase.
The first step is to review the existing workflow with Project Hope, document how inventory is received, tracked, distributed, and reported, then use those findings to decide whether the right next step is an improved spreadsheet process, a lightweight database, a small web application, or another low-cost option.
- Executive Summary Cover Sheet
- Executive Summary PDF
- Questions to Ask
- Current Spreadsheet Scan
- Option A Requirements
- Option A Architecture Decision
- Initial User Stories
- Milestone 1 Candidate Stories
The scanned spreadsheet pages show that Project Hope already has a practical inventory model in place. The current workbook is not just a list of food items; it tracks categories, item names, quantities, locations, best-by dates, commodity flags, menu item flags, weekly changes, and last-updated dates.
The scan currently shows these inventory categories:
- Dry Beans
- Noodles
- Dry Mix
- Condiments
- Snacks
- Cereals
- Produce
- Eggs
- Frozen Meat
- Frozen Miscellaneous
- Canned Vegetables
- Canned Fruit
- Soup is a MESS
- Canned Beans
- Tomatoes
- Canned Meat
- Diapers
- Wipes
- Formula
The repeated worksheet structure suggests the current spreadsheet is acting as the first version of the data model. Common fields include:
- Item
- Quantity
- Location
- Best-by date
- Commodity indicator
- Menu item indicator
- One-week change
- Last updated date
LOC.means inventory location.BBis a date field. The exact business meaning still needs to be confirmed during discovery.COM.means the item is a Commodity item with special reporting requirements. The Director must supply Commodity reporting to the Bellingham Food Bank.Menu Itemis not yet understood and needs to be clarified during discovery.- Penciled-in quantities represent the current inventory numbers.
- Some of the same food items appear as both Commodity and non-Commodity inventory. The future database must account for this distinction instead of assuming an item name is globally one or the other.
- Commodity status should likely be tracked at the inventory lot, stock entry, or item-instance level rather than only at the item-name level.
- The system needs to support reporting by Commodity status without losing the ability to show total available inventory for the same item.
- Item identity, category, location, Commodity status, date tracking, and current count should be modeled separately enough to support accurate reporting and operational use.
- Unknown fields such as
Menu Itemshould remain part of discovery before the schema is finalized.
- Existing inventory categories should be preserved as a starting point instead of replaced blindly.
- Category names and item lists should become configurable so Project Hope can adjust them without software changes.
- Handwritten notes and corrections suggest that inventory updates may happen away from the spreadsheet and then get reconciled later.
- Color coding appears to carry operational meaning and should be documented before any replacement system is designed.
- The current spreadsheet provides a strong requirements artifact for designing an improved workflow.
- How food donations and purchases are received.
- How inventory quantities are updated.
- How expiration dates, categories, and storage locations are tracked.
- How inventory leaves the food bank.
- What reports are needed for staff, volunteers, donors, grants, or compliance.
- How many people need to use the system at the same time.
- What computers, tablets, network access, and printers are available.
- What data must be protected or backed up.
- Start simple.