Brief

Farmstead is a farm-to-fridge grocery delivery startup with a vision to reduce food wastage through AI solutions, for optimized inventory and last-mile logistics.

The team at Farmstead approached us to restructure their front-end and back-end codebase for improved performance, a more immersive and intuitive user experience, and for optimizing their complete backend operations.

Challenges

Farmstead was a rapidly growing startup, so our primary challenge was to iterate the product development at a much faster pace.

Our team was prepared to Identify bottlenecks and refactor problem areas, while driving feature additions at the same time.

We devised an agile plan to accommodate minor and time-sensitive refactorings, while creating a project structure that allowed all developers to adapt and optimize the app during feature development through opportunistic refactoring (the boy scout rule).

Our primary focus was to establish flexible standards to deliver key features, while ensuring that the changes accommodated different styles and standards in the same codebase.

Solutions

Since our plan for Farmstead was comprehensive, we adopted a strategic approach that would help us refactor the code in parts, while continuing to build, test and deliver new and improved features.

We began by streamlining the unit and end-to-end tests. This was done by setting up factories and helper methods that could be used for new features.

Reimagining the React front-end

Our team started with re-organizing the front-end codebase into a robust React application, and set standards for the codebase. We reimagined and streamlined the end-to-end shopping experience for the user.

After initial research, we also integrated Redux into the React app and designed it to be functional, independent and separable from the monolith that it was under.

During the front-end rehaul, we organized all CSS styles into comprehensive stylesheets and enabled consistent CX across the application.

Rebuilding a robust back-end

Our consultants initiated back-end refactoring by separating JSON-serving endpoints and HTML-serving endpoints.

We optimized and reduced the overall response time by moving and monitoring all JSON serving endpoints, and studying the responses they were serving.

Building a modular system and refactoring the codebase into separate modules across the application helped us reduce duplication.

Integrating improved app features

We developed and deployed some critical features for the application:

  • Migrating the app from one location to serve multiple locations
  • Streamlining driver allocation and routing systems to reduce driving time
  • Increasing driver occupancy through intelligent driver allocation and routing
  • Automating warehouse management to accelerate the shelf-to-pack time

_tech
used

REACT / RUBY / RAILS / JAVASCRIPT