/zepto-frontend-task

A React and Typescript application to create user pills component as a part of Zepto's Frontend Assignment

Primary LanguageTypeScriptMIT LicenseMIT

🚀 Pick Users Component - Zepto Frontend Developer Assignment

Crafted with by Kushagra Gupta

Built using:

View Demo on the Deployed Site 🚀

Click https://zepto-frontend-task.netlify.app/ to view the deployed site

Screenshot 2024-01-16 at 6 27 04 PM

👨‍💻 Features

✅ Users can search for any user by their name or email ID.
✅ Users can remove the selected users by clicking the X icon.
✅ Users can use the backspace button to delete the last selected user.
✅ Users can use up or down arrow key and press Enter to select user from dropdown.

⚙️ NPM Modules Used

  • "react-dom": "^18.2.0", - To interact with React's virtual DOM
  • "react-icons": "^5.0.1", - To have an icon library
  • "react-router-dom": "^6.3.0", - To implement routing features provided by React.js
  • "recoil": "^0.7.7", - To implement state management. Facebook Open Source, fast and performant for small projects.

⏱ Page Load Time

The Webapp loads in about 0.4 s to 0.6s. This is calculated by using Google Lighthouse tool in Chromium based browsers. NOTE: The Lighthouse Audits scores are decreased because of preinstalled browser extensions that are non-removable in my system.

Screenshot 2024-01-16 at 6 29 03 PM

🪜 Steps I took to optimize the page load time

  • Used PurgeCSS to tree-shake unused styles and optimize my final build size.
  • Used Lighthouse DevTools Extension to find the performance issues and fix them using their actionable suggestion.
  • Used Netlify that has world-class CDN technology that reduces waiting time even further.

Available Scripts

In the project directory, you can run:

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

yarn build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

See the section about deployment for more information.