/getir_market

Getir Market is an implementation of my interview assignment that later became my vite-react-tailwindcss-msw-vitest-eslint template.

Primary LanguageTypeScriptMIT LicenseMIT

Getir Market

Live Preview on CodeSandbox

Getir Market

Introduction

Getir Market is an implementation of my interview assignment given by Getir. This is a project that converts a Figma design into a modern React application. You can find detailed information in assignment.pdf.

Implementation

  • To be able to analyze in detail, I broke down the task into smaller pieces.

    • Creating main responsive layout struture using media queries, flex and grid properties.
    • Transforming Figma elements into React components pixel perfectly using rem and em units.
    • Creating components from scratch in order to obtain an easy-to-maintain and easy-to-test codebase.
    • Creating dev json server api.
    • Creating powerful global state management.
    • Creating a consistent styling infrastructure by using Tailwind, and BEM naming conventions
    • Testing application by simuliating the end user behaviours

  • I handled the context operations individually to have a separation of concerns.

  • I applied the Clean Code Naming Conventions and the Single Responsibility Principle to write clean tests.

  • We have Redux, React-Redux, and Redux-Toolkit libraries to create a global state management infrastructure.

Tooling

Usage

  • The project built with node v19.2.0, yarn 1.22.19, and npx 8.19.3.
  • To be able to develop locally, run yarn run dev and browse localhost:5173

Script

Command Description
yarn install Install all dependent application packages
yarn run dev Start a local development web server at localhost:5173 using vite
yarn run test Run the full test suite using Vitest
yarn run build Bundle application for Production using vite

Further Development

  • The following topics can be considered for further development:
    • Research differences between msw worker and msw server.
    • Research and fix the "Some chunks are larger than 500 KiB after minification" build warning.
    • Add ability to save basket items and filters to database.
    • Refactor search widgets using a single reusable component.
    • Refactor context and service elements that have a similar structure using reusable modules.
    • Research and implement cypress testing infrastructure.

Reference