Skip to content

ehsaantech/foodie-case-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Case Study: Food Ordering App

Introduction:

You are tasked with designing a food ordering app, which caters to both foodies and chefs. The app's primary features include allowing foodies to view available dishes, place orders, and enabling chefs to manage their dishes and create new ones.

Features:

Foodie Can See List of Dishes Available:
    Foodies should be able to browse and view a list of available dishes.
    Each dish should display relevant information, including name, description, price, and an image if available.

Foodie Can See Chef Dishes:
    Foodies should be able to view dishes specifically created by individual chefs.
    This feature adds a personalized touch to the app's offerings.

Foodies Can Place an Order:
    Foodies should be able to place orders for dishes they select.
    Each order should capture details such as the selected dish, quantity, delivery address, and payment information.

Chef Can See His Own Dishes:
    Chefs should have access to a dashboard where they can view the dishes they've created.
    They can monitor dish popularity and manage their listings.

Chef Can Create New Dishes:
    Chefs should be able to create and add new dishes to the app's menu.
    This includes specifying details such as the dish name, description, price, and optional image.

System Design:

Database ERD (Entity Relationship Diagram):
    Design a database schema to store information about dishes, orders, chefs, and foodies.
    Define relationships between these entities to ensure data consistency.

High-Level Architecture Diagram:
    Create an architectural diagram illustrating the components and how they interact.
    Identify the key modules, including the frontend, backend, and database, and how they communicate.

Development Aspects:

Unit Testing:
    Implement unit tests for critical components of the application, such as order placement, dish creation, and user authentication.
    Use a testing framework to ensure code quality and functionality.

Use Postgres Database:
    Choose PostgreSQL as the database system for its robustness and support for complex data structures.

Framework Selection:
    Select a framework for the backend development. Options include Express, Koa, or NestJS.

Good-to-Have:

Docker + Docker Compose Setup:
    Create Docker containers for the application and database for easier deployment and scalability.

Caching for Improved API Responses:
    Implement caching mechanisms to enhance the app's performance by reducing redundant database queries.

Payload Validation using Joi or Zod:
    Validate incoming requests to ensure data integrity and prevent errors.
    Use libraries like Joi or Zod to define request payload schemas.

Error Handling:
    Implement robust error handling to gracefully manage and report errors to users.
    Define error codes and descriptions for better debugging.

Deployment Using Supabase:
    Explore the possibility of deploying the app using Supabase, a robust backend-as-a-service platform.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published