Git Product home page Git Product logo

little-tags-shankarraknahs-frontend's Introduction

FUTURE BASKET

Overview

Future basket is a free open source ecommerce platform for online merchants. OpenCart provides a professional and reliable foundation from which to build a successful online store.

Features/highlights

##Landing Page

  1. Header (App name, search bar, profile/login/signup icon, cart icon, Globe icon for internationalization)
  2. Main area (category selection, item list area/item description area)

Signup/in

  1. User can view the landing page without signup/in and signup/in from the icon in the header
  2. Sign in/ sign up from the icon in the header

Limitations, User must signup/in before

  1. Adding items to the cart
  2. Making any payment
  3. View order history
  4. Add and set default shipping address
  5. Signup/in is allowed using google/facebook or with the mobile number

Search

  1. User should be able to search the products using product name

Category

  1. Split the products into different categories and provide an option to the user to switch between different categories

Cart

  1. User must be signed in to add items to the cart
  2. User can remove any item from the cart
  3. User can clear all the items from cart
  4. User can view the price of each item and cumulative price

Payment

  1. Integrate Razorpay/Stripe payment gateway sandbox

Internationalisation

  1. Support 2 different languages
  2. Handle price for each item based on the locale

Responsiveness

  1. Make the application responsive for different screens

Notification

  1. Information flash for the communication

Loader

  1. Full page loader
  2. Card/image loader

Distinct Pages

  1. SignUp/In
  2. Item list (part of Landing page)
  3. Item description
  4. Cart
  5. Payment and Address
  6. Profile

How to install

  1. Clone the github repo
  2. npm install
  3. npm start

How to test

  1. Clone the github repo
  2. npm install
  3. npm run test

Licence

Tech stack

  1. ReactJS
  2. Redux

Authors

  1. Yogi - [email protected]
  2. Shankar - [email protected]

little-tags-shankarraknahs-frontend's People

Contributors

github-classroom[bot] avatar shankarraknahs avatar yogigachinmath avatar

Watchers

 avatar  avatar  avatar

Forkers

admarket14

little-tags-shankarraknahs-frontend's Issues

Mocks of the application

Use this issue to collect the mocks of various screens.

It's a good idea to collect the mocks within the context of a user stories. For example,

  • How many number of distinct pages do you have?
  • What are the user actions?
  • In how many steps does he / she achieve it? What action items have to clicked?
  • What screens they have to go through?

You can use tools like Figma (recommended) or other wire-framing tools like Balsamiq.

Ensure that you also know at least these things (you can always list more things)

  • Application Layout Structure
  • CSS / React Layout Library
  • Icon Sets
  • Color Scheme
  • Theme

Feel free to consult older projects listed in the Little Tags Notion page.

If you have questions, comment on this issue.

Pesto Project Quality Standards and Project Badge

Your front-end (and later, the backend part as well) part of the project will be given a Pesto badge upon completion and during the final presentation. The final presentation date is (tentatively) 15th March 2021 8:00pm IST. The badge can be Gold, Silver, or Bronze.

The projects with Gold badge have been found to get substantially more interview requests than other badges.

Please refer to this Notion page for more information. Keep referring to this document to ensure that you comply with all the hard and soft requirements.

Comment on this thread below if there is any confusion with regard to this issue.

What's the performance metrics of your app?

Instructions

In this issue, you are going to benchmark your website for performance using a couple of tools. The metrics generated by the tools can be used to focus your efforts towards the most affected areas. The metrics and whether they measure real-world user-based performance are subject to some debate. However, we are going to assume for now that the metrics generated by these tools are reliable.

The idea is to optimize metrics that are low.

Requirements

  • Benchmark your website using the Chrome's Lighthouse developer tool. Screenshot the results and comment below.
    • Score of 95-100 in all categories is considered good.
  • Benchmark your website using PageSpeed Insights Screenshot the results and comment below.
  • What's the web vitals? Report your times as comments below.
  • Benchmark your website using WebPageTest. Screenshot the relevant results and comment below.
    • The device config to select is the default one and Moto G4 - Chrome

Resources

Implement the Landing Page + Login / Signup page

Instructions

As per your mocks, implement the landing page and deploy it. The products / cart / wishlist buttons do not have to work as of now. Just the landing page (+ some other things) are required. Here's a list of concrete requirements.

Requirements

  • Landing Page (as per the mocks)
    • Desktop version
    • Mobile version
  • Login / Signup Modal or individual page.
  • Internationalization Support. There should be a way to change the language and see (at the very least) different texts for the words "login" and "signup".
    (If both you and your partner do not speak a second language, you can use Spanish as a second language. You can verify the translations with me.)

Once you are done with the implementations, paste screenshots of your actual running websites with your mocks side by side (like this) in a comment. The left side is will be your mock, and the right side will be your actual implementation. Ensure that the resolutions of both the parts are same (or similar) to help with faster comparison.

Resources

  • For creating custom flex layouts: Link
  • Book Responsive Web Design by Ethan Marcotte. You can find this book somewhere on the internet. You can search for it. Ethan coined the term and create "responsive design" patterns. This book (under 200 pages) is a great read for understanding what responsiveness means. You can buy it as well if you like it. Link
  • React Internationalization. Slightly old but still a comprehensive starter resource: Link
  • React Internationalization using a different library (react-i18next). Link
  • Try to use the Intl Web API for rendering the prices, plurals, etc.

Pro tip: You can create multiple PRs that closes the same issue. There doesn't have to be one-to-one relationship between an issue and a PR. So feel free to open multiple PRs against this issue.

Comment on this issue if you need help with anything.

Implement Cart System + Product Ordering Flow + Orders History + Wishlist

Instructions

As per your mocks, you have to implement the following. As mentioned in the one of the previous issues, feel free to mock any data that you need. You can use Faker.js or you can just copy a few product's info from Amazon / Myntra / Flipkart.

Cart System

The user should be able to do at least the following operations. (apart from anything of your own features)

  • Add items to the cart
  • Change quantities of an item
  • Remove an item from the cart
  • See total price (with or without discounts)
  • Clicking on "Buy" or any other action button should take your to the "Product Ordering Flow"

Product Ordering Flow

The user should be able to do at least the following operations. (apart from anything of your own features)

  • The user should be able to select a previously saved address. (You can hard-code a few addresses for now)
  • The user should be able to new addresses.
  • The user should see a payment method.
  • The user should see a small summary of the cart.
  • Upon clicking the required action button (for e.g Continue Payment), the user should see a ordered successfully.

Orders history page

The user should be able to do at least the following operations. (apart from anything of your own features)

  • The user should be able to see previous orders. (You can hard-code a few addresses for now)
  • The Orders should have a button / link for invoice. Clicking that should generate a PDF invoice of the order.
  • Try to paginate the order history. That is, don't show more than 3 items in one page.

Wishlist

The user should be able to do at least the following operations. (apart from anything of your own features)

  • Add a product to the wishlist
  • See all the products in Wishlist
  • From the wishlist, add the product to the cart

More E2E tests.

  • Write an E2E tests for each of the flow the user can make.

Resources

Comment on this thread if there is any confusion with the requirements.

Initialize and deploy the application

Initialize the application with Create React App or any other tool of your choice.

Once you've initialized, you should deploy your application to Netlify to ensure that it's deployed.

For now, you can just say, "Hello, world!" and deploy.

After deployment, ensure that you've added the deployed link in the "About section" of the repo.

What features will your app have?

Go to Deep Dive and checkout all the previous project.

Start commenting all the features that your application should have. Please be descriptive about what exactly you want your app to have and what purpose it will serve.

Feel free to discuss your ideas with your partner in this issue itself.

The final comment should list out the final features.

At the minimum, you should have features listed in Little Tags project.

This and the next issue (the one that will be asking for the mocks) will have to thought in tandem.

If you have questions, comment on this issue.

Implement Search + Product Page + Categories Page

Instructions

As per your mocks, start implementing the product search feature, categories page, and the single product page itself. More info is provided below.

Where will I get data to render?

If the fakestoreapi is not helpful, feel free to mock the data by creating a JSON file with any relevant data yourself. The only thing you need to be careful is that you should fix the shape of the data and assume that this data was coming from the server itself. This way, once you have the server ready, you can just change the source. I agree that there will be front-end changes when the app is paired with the server, but hopefully they should be minimal if the shape is consistent.

Also, remember that any API can and will fail. So take the error cases into account as well.

Requirements

Product Search Feature

When the user starts typing a product, you should show an autocomplete results box (or page if that's what your mock has) with the results. User should be able to tab through the results. Other natural keyboard buttons should also work.

Categories Page

The product display should have price, product name and rating at the very least. There should also be a "Add to cart" button (this doesn't have to work). The user should be able to filter the product set with a few things of your choosing. Also, the user should be able to sort the set based on some criteria (such as price, rating etc.)

Single Product Page

The page should show the price, description (if any), rating, images, quantity, add to cart, add to wishlist etc.

Feel free to add more things on these pages if they are present in your mocks.

Checklist of requirement

  • Autocomplete Product Search Feature
    • Render correct outputs
    • Has Autocomplete
    • Tab Accessible
    • Mobile Responsive
  • Categories Page
    • Mobile Responsive
    • Left side bar with filters
    • Sort the product set (for e.g. on the basis of price)
    • Tab Accessible
  • Product Page
    • Mobile Responsive
    • All relevant details are visible
    • Tab Accessible
  • Routes should change upon going to different screens
  • At least 2 End to End test (see resources)
  • i18n should continue to work
  • Should not have regression bugs

Resources

Need help?

Comment on this thread if there is any confusion with the requirements. Try to follow your mocks. Don't drastically change things until needed. Minor modifications are allowed.

Fix the Alignment issue of login drawer

The width of the Login drawer is getting varied while accessing it for the first time and after switching to new user tab.

Login drawer view:

Screenshot 2021-03-03 at 12 44 00 PM

New User modal view:

Screenshot 2021-03-03 at 12 44 03 PM

The above screens are at a different width.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.