A shortcut to the good stuff
Arrow keys to explore Enter to go
Back to selected work

CASE 03 / Product & systems

Why matching units disappeared.

I fixed a status filter, then had to fix the empty-state check that still hid matching units.

THE PROJECT
Project visualizer
THE CONTEXT
GreenFortune
THE CHAPTER
June 2026

01 / The problem.

The project-tracking app shows unit progress by floor and room. Some units belong to common areas rather than individual rooms, so the grid renders them separately. In room view, those common-area units ignored the selected status filter. Someone looking for units at one stage could still see common-area units at other stages.

02 / My role.

I architected the Project Visualiser backend from scratch, including RBAC and data scoping, and published a shared React + TypeScript visualization package through GitHub Packages for reuse across repositories. The overall visualizer and consuming app were team-built. This story focuses on my filtering and empty-state fixes in the shared library, followed by updates to the consuming app.

My contribution
The June 17–18, 2026 filtering and empty-state fixes, package releases, and consuming-app updates described in this case study.
Shared scope
The visualizer and its consuming app were team-built. My backend and package work does not imply sole authorship of every component.
What changed
The filter and the empty-state check both accounted for common-area units.

03 / My first fix only covered the badges.

On June 17, I applied the active status filter to the common-area badges in room view. Position view already used a path that applied the filter. I kept the separate common-area layout and changed which units it rendered. That went into version 0.7.4.

04 / I had missed the check before rendering.

The grid could still say "No units match this filter" when matching units existed only in common areas. Before it rendered any badges, a separate check decided whether there was anything to show. In room view, that check inspected regular rows only. My corrected rendering code was never reached.

On June 18, I changed that check to include both regular and common-area rows in either view. The case my first fix missed was specific: no matching units in regular rows, but a match in a common-area row. The row rendering and the empty-state decision had been looking at different sets of units.

05 / I updated the app, not just the library.

I bumped the library from 0.7.4 to 0.7.5 for the follow-up fix. The consuming app's history records my updates to both versions on June 18. That gives me a concrete endpoint for this change: the corrected version was referenced by the app, not just left in the component repository.

06 / The result.

  • Common-area badges in room view respect the selected status instead of showing unrelated units.
  • A match found only in a common-area row no longer triggers the false empty state.
  • The consuming app's dependency was updated to include the correction.

05 / CONTACT

ROLES & FREELANCE PROJECTS

Have a role
or project?

I'm open to senior SDE roles and freelance work.
Send the problem, your team's needs, and any timeline.

HITEC City, Hyderabad, India
SEND ME A NOTE

What's on your mind?

Sends via Formspree.
A conversation, not a mailing list.

HAVE A PROJECT IN MIND?

What I can help with.

Focused freelance work, with scope and deliverables agreed before the build.

Backend & APIs

Node.js, TypeScript, and Fastify services, PostgreSQL and Drizzle data models, and fixes to existing backend behavior.

Example deliverablesTyped API contracts, backend implementation, and focused tests.

Third-party integrations

Email, calling, messaging, payments, and product-aware AI integrations, including authenticated webhooks and receipt deduplication.

Example deliverablesProvider integration, webhook handling, and a recovery/runbook handoff.

Workflow systems

Order stages, partial-progress tracking, and role-specific interfaces for operations teams.

Example deliverablesWorkflow modeling, scoped permissions, and an operational interface.

Tell me what you're building