Skip to content

techops-recsys-lateral-hiring/developer-joi-delivery-ruby

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to JOI Delivery

JOI Delivery is built for real life. For the young professional who gets home late and doesn’t have the energy to cook. For the student with an exam tomorrow and an empty fridge tonight. These aren’t exceptions — they’re everyday moments. That’s why JOI Delivery brings food and groceries to your door, fast, fresh, and right when you need them.

Customers struggle with:

  • Cluttered browsing experiences that don’t understand their preferences.
  • Limited customization when ordering meals or groceries.
  • Unclear order status or delivery timelines.
  • Poor payment experience, or failed checkouts.
  • Lack of timely feedback channels to report a bad experience or appreciate a good one.

JOI Delivery was built not just as another delivery app, but as a thoughtful, technology-first platform that reimagines how essentials reach customers in the most seamless way.

Introducing JOI Delivery

JOI Delivery, launched in 2024, is a hyperlocal delivery app designed to bring food and groceries to your doorstep in under 45 minutes. With the tagline "Speed meets convenience," it connects customers to nearby restaurants and stores through a seamless digital experience. The app solves the hassle of long wait times and limited local options by offering real-time tracking, instant order updates, and a wide network of trusted vendors.

Business Goals

  • Differentiated Value Proposition & Niche Dominance
  • Deliver Unmatched Customer Experience & Loyalty
  • Superior Operational Efficiency & Cost Advantage
  • Robust & Engaged Partner Ecosystem

Why they need Thoughtworks help

As JOI Delivery continues to grow and serve more neighborhoods, we’re scaling our platform to handle increasing demand, enhance user experience, and support smarter delivery logistics. They're looking for passionate developers to help us build robust, efficient, and scalable solutions that power everything from order placement to real-time tracking. Your expertise will directly impact how quickly and reliably customers receive their essentials—and how smoothly local vendors and delivery partners operate within our ecosystem.

Users/Customers

Sample user profiles are available in the repository to support development and testing scenarios.

UserId FirstName LastName
user101 John Doe

Stores

Sample store data seeded for development purposes only.

StoreId OutletName
store101 Fresh Picks
store102 Natural Choice

Grocery Products

Dummy Products for Stores to sell and users to buy from.

ProductId ProductName StoreRefId
product101 Wheat Bread store101
product102 Spinach store101
product103 Crackers store101

API

Below is a list of API endpoints with their respective input and output. Please note that the application needs to be running for the following endpoints to work. For more information about how to run the application, please refer to run the application section above.

Add Product to Cart

EndPoint

POST /cart/product

Request Body

{
  "user_id": "user101",
  "product_id": "product101",
  "outlet_id": "store101"
}

Response Body

{
  "id": "cart101",
  "outlet": {},
  "products": [
    {
      "id": "product101",
      "product_name": "Wheat Bread",
      "mrp": 10.5,
      "selling_price": 0,
      "weight": 500,
      "expiry_date": null,
      "threshold": 10,
      "available_stock": 30,
      "discount": 0,
      "store": {
        "outlet_id": "store101",
        "name": "Fresh Picks",
        "desc": null,
        "inventory": []
      }
    }
  ],
  "user_id": "user101",
  "product": {
    "id": "product101",
    "product_name": "Wheat Bread",
    "mrp": 10.5,
    "selling_price": 0,
    "weight": 500,
    "expiry_date": null,
    "threshold": 10,
    "available_stock": 30,
    "discount": 0,
    "store": {
      "outlet_id": "store101",
      "name": "Fresh Picks",
      "desc": null,
      "inventory": []
    }
  },
  "selling_price": 0
}

View Cart

EndPoint

GET /cart/view/user101

Response Body

{
  "id": "cart101",
  "outlet": {},
  "products": [
    {
      "id": "product101",
      "product_name": "Wheat Bread",
      "mrp": 10.5,
      "selling_price": 0,
      "weight": 500,
      "expiry_date": null,
      "threshold": 10,
      "available_stock": 30,
      "discount": 0,
      "store": {
        "outlet_id": "store101",
        "name": "Fresh Picks",
        "desc": null,
        "inventory": []
      }
    }
  ],
  "user_id": "user101"
}

Inventory Health

EndPoint

GET /inventory/health/:store_id

Response Body

{
  // to be implemented.
}

Setup Instructions

Prerequisites

Before you begin, ensure you have the following installed:

  • Ruby: The application is built for Ruby version $3.4.3$.
  • A Ruby Version Manager (Recommended): Tools like rbenv or RVM (Ruby Version Manager) are highly recommended to manage different Ruby versions without conflicts.
  • Bundler: The standard gem for managing Ruby gem dependencies.

1. Install the Correct Ruby Version

Use your preferred Ruby version manager to install the required version, $3.4.3$.

  • If you are using rbenv:
    $ rbenv install 3.4.3
    $ rbenv local 3.4.3  # Sets this version for the current directory
  • If you are using RVM:
    $ rvm install 3.4.3
    $ rvm use 3.4.3 --create  # Installs and switches to the version

2. Install Dependencies

Once the correct Ruby version is active, use Bundler to download and install all required libraries (gems) for the project.

$ bundle install

Running the Application

1. Start the Application

Execute the following command to start the application server:

$ bundle exec rake app:start

2. Access the Application

The application should now be running locally. You can access it in your web browser at: http://localhost:9292/


Running Tests

It's a good practice to run the test suite to ensure everything is set up correctly.

To execute the tests using RSpec:

$ bundle exec rspec

⚠️ Troubleshooting

If you encounter issues during setup, try the following:

  • "Command not found" for bundle: Make sure your Ruby version is properly set and you've run gem install bundler if it's missing.
  • Incorrect Ruby Version: Double-check that your terminal is using Ruby $3.4.3$ by running ruby -v. If it's not, use your version manager to switch.
  • Native Extension Errors: If bundle install fails with errors about "native extensions," you might be missing system libraries needed to compile certain gems. For instance, on Debian/Ubuntu, you might need sudo apt install build-essential.

If problems persist, please refer to the project's issue tracker or contact a team member for assistance!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages