Produce Path

I helped modernize a legacy farmers market management platform by combining product design, API design, and frontend implementation around real operational workflows.

Problem
A legacy ASP.NET and Angular platform needed to move to a modern product without losing operational behavior.
Role
Product design, frontend development, API design, legacy-system discovery, and technical documentation.
Changed
Authentication migration, access control, daily data entry, quick search, market proximity maps, and product guidance.
Proof
Next.js API routes, React Query workflows, Cognito integration, Google Maps and Geocoding, and documentation for developers and project managers.
Role
Product design
Frontend development
API design
Legacy-system discovery
Technical documentation
Stack
TypeScript, React, Next.js, React Query, Tailwind
Node.js, Prisma, AWS RDS, AWS Cognito, AWS Amplify, AWS S3

Context

SKYCATCHFIRE became the new maintainer of Produce Path by rewriting a legacy ASP.NET and Angular web application to Next.js and a mobile application to React Native.

I documented the legacy system and new system in depth so other developers and project managers could understand how the systems worked and how the rewrite was changing them.

Produce Path combines FM Tracks, which helps direct-to-consumer market managers collect and report market data, and FM Engage, which helps consumers find market locations, hours, and offerings. FM Tracks is included in the US Department of Agriculture SNAP-Ed Toolkit.

Authentication During A Rewrite

The legacy application used ASP.NET authentication, while the new application required AWS Cognito. Because parts of the legacy application were still active during the rewrite, the new authentication flow had to coordinate the browser, legacy API, database, and Cognito.

I worked through the integration details and rewrote the auth logic until the new application could support the migration without forcing the entire platform to move at once.

Access Control

I set up the access control system and controls across admins, networks of markets, markets, managers, and users.

This meant translating the real operational hierarchy into product permissions so people could access the right parts of the system without exposing workflows or data they should not manage.

Daily Data Workflow

Market managers needed a clearer way to enter daily data while understanding what information was already available for a given month. The workflow had to combine market hours, limited hours, transactions, reimbursements, and post-market reports.

I designed an interface that surfaced important data points and made the month easier to scan. Edward R. Tufte’s Envisioning Information influenced the use of sparklines for transactions and reimbursements.

To build it, I studied the legacy code, designed new HTTP API interfaces, and implemented the supporting Next.js API routes. On the client, I used React Query to keep month-level data available locally for five minutes so managers could move through the workflow without unnecessary reloads.

Quick Search

Market managers frequently needed to jump between organizations, networks, and markets. I built a client-side quick search feature so those records stayed easy to reach while people were working.

Market Proximity Map

Consumers needed a simple way to discover nearby markets from either a typed location or their current location. I designed and built the market proximity experience with Google Maps, the Geolocation API, and the Google Geocoding API.

The feature converts locations to coordinates, calculates an approximate 25 mile latitude and longitude boundary, and queries the database for markets within that area.

Product Guidance And Voice

To help people understand estimates, missing data, and new interface behavior, I introduced Penelope, the Produce Path Tomato, as a friendly product guide.

Penelope appears where extra explanation helps people keep moving, including inventory estimates, vendor estimates, welcome messaging, and Daily Data questions such as “What do the colors mean?” and “Why isn’t my data showing up?”

I also added small moments of product voice to make repetitive work feel less mechanical. When a market manager updates a vendor’s inventory, the app can respond with short toast messages such as “Way to grow!”, “Market magic unlocked!”, or “Harvest happiness!”

What This Shows