Full-Stack Application Development, Reporting Automation & Data Integrity

TFB Distribution Workflow & Reporting Automation

A production internal operations platform for The Furniture Bank, built with Laravel, React, TypeScript, MySQL, SimplyBook integration, offline-capable Distribution workflows, and automated Google Sheets reporting.

Distribution WorkflowRecords, appointments, selections
APIs
Reporting
Offline drafts
Scheduler

Project overview

This project modernized The Furniture Bank's internal Distribution Workflow by replacing substantial spreadsheet and manual workflow steps with a structured full-stack application while preserving historical reporting continuity.

The platform supports client Distribution records, appointment information, furniture selection, voucher calculations, agency and caseworker management, household information, Distribution reasons, signatures, status management, No Show and Cancelled appointment outcomes, administrative management, printing, Distribution emails, and automated operational reporting.

The work connects operational data from legacy Distribution spreadsheets, SimplyBook appointments, Google Sheets reporting, agency and caseworker records, and furniture/catalog information.

The challenge

Distribution information was spread across legacy spreadsheets, appointment data, reporting sheets, agency and caseworker records, and furniture/catalog information. The organization needed a modern workflow that preserved historical reporting, prevented duplicate records, maintained accurate reporting across old and new systems, worked in warehouse areas with inconsistent connectivity, automated recurring reporting, remained usable for non-technical staff, and protected sensitive client and agency information.

My role

I worked hands-on across requirements analysis, workflow analysis, architecture decisions, database design, Laravel backend development, React and TypeScript frontend development, API integration, legacy-data migration, reporting architecture, data normalization, data-quality auditing, testing strategy, production deployment, Linux and SSH administration, cron/scheduler configuration, production troubleshooting, and staff workflow improvement.

The work required balancing application development, operational reliability, external-system reconciliation, reporting continuity, and the day-to-day needs of staff using the workflow in production.

Application architecture

The application uses a Laravel backend with a React and TypeScript frontend through Inertia.js, supported by PHP 8.4, Laravel Breeze, a MySQL relational database, and Eloquent ORM models for operational records, appointment outcomes, furniture items, aliases, permissions, and administrative workflows.

The implementation includes session-based authentication, role/permission-based administrative access through spatie/laravel-permission, protected routes, server-side validation, rate limiting where appropriate, and stable external IDs for reconciliation and deduplication.

SimplyBook integration

The Distribution Workflow integrates SimplyBook appointment data with local Distribution records while keeping local No Show and Cancelled outcomes inside the workflow application rather than writing those statuses back to SimplyBook.

Stable SimplyBook booking IDs are used to reconcile appointments with Distribution records, support appointment-level operational outcomes, and prevent No Show records from requiring fake Distribution or furniture-selection data.

Reporting and data integrity

Reporting automation combines Google Sheets API integration, Laravel reporting services, legacy Distribution data, V2 Distribution data, SimplyBook appointment data, and local appointment outcomes.

The reporting architecture preserves an explicit historical cutover, keeps legacy records available for historical reporting, initializes managed reporting tabs, automates a Totals dashboard, applies America/Chicago timezone-aware reporting, and uses stable identifiers to deduplicate source records.

Source-parity validation reached zero unresolved V2-rule/reporting mismatches at the validated cutover state, while also helping identify and replace stale or broken legacy spreadsheet formulas.

Production automation

Scheduled production automation uses Laravel Artisan commands, Laravel Scheduler, hosting cron, scheduled reporting synchronization, and production monitoring/troubleshooting with Linux, SSH, Hostinger, and Git-based deployment workflows.

The TFB Workflow production application runs in a separate deployment environment from this portfolio site, which is deployed through GitHub and Vercel.

Approach and implementation

  • Built a Laravel backend with a React and TypeScript frontend through Inertia.js, using a MySQL relational database and Eloquent models for distributions, distribution items, agencies, caseworkers, furniture items, appointment outcomes, aliases, and permissions.
  • Implemented session-based authentication, role and permission-based administrative access, protected routes, server-side validation, rate limiting where appropriate, and stable external identifiers for reconciliation and deduplication.
  • Integrated SimplyBook appointment data so booking IDs could link appointments with Distribution records, support local appointment outcomes, and deduplicate matching appointment and Distribution records in reporting.
  • Built reporting services that combine legacy Distribution data, V2 Distribution data, SimplyBook appointment data, and local appointment outcomes through Google Sheets API automation.
  • Added IndexedDB local draft storage, automatic draft saving, offline detection, status indicators, restoration after refresh or reconnection, and explicit reset behavior to reduce data-loss risk in warehouse areas with inconsistent connectivity.
  • Configured Laravel Scheduler, hosting cron, Linux/SSH deployment workflows, and production troubleshooting around the reporting and Distribution application.

Key capabilities delivered

  • Structured Distribution records, furniture selections, voucher calculations, household information, signatures, status management, and administrative workflows
  • SimplyBook API appointment retrieval, booking-ID reconciliation, local Pending, No Show, and Cancelled outcomes, and duplicate-aware reporting
  • Google Sheets API reporting automation with historical cutover handling, managed reporting tabs, Totals dashboard automation, source-first parity auditing, and America/Chicago timezone-aware reporting
  • Offline-capable form protection through IndexedDB drafts, automatic saving, offline status indicators, and restoration after refresh or reconnection
  • Multi-recipient Distribution email behavior with server-side address resolution, deduplication, and private individual copies for unique recipients
  • Recurring production automation through Laravel Scheduler, hosting cron, scheduled reporting synchronization, and update-aware reporting processes

Outcomes

  • Replaced substantial manual Distribution workflow steps with a centralized production application.
  • Reduced duplicate entry between scheduling, Distribution, and reporting workflows.
  • Preserved historical reporting during the legacy-to-V2 transition.
  • Automated recurring operational reporting synchronization.
  • Improved protection against data loss in unreliable warehouse connectivity.
  • Created maintainable relational operational data rather than relying entirely on spreadsheet state.
  • Improved traceability between external appointments and Distribution records.
  • Identified and corrected legacy reporting formula problems through source-based validation.
  • Source-parity validation reached zero unresolved V2-rule/reporting mismatches at the validated cutover state.

Confidentiality note

This case study intentionally excludes client information, employee information, credentials, API keys, spreadsheet identifiers, internal database IDs, booking IDs, private URLs, server paths, and confidential operational records.

Contact

Have a similar technical challenge?