Coder Social home page Coder Social logo

sunagatov / iced-latte-frontend Goto Github PK

View Code? Open in Web Editor NEW
208.0 4.0 46.0 2.44 MB

a online Marketplace for coffee retail (Frontend)

Home Page: https://iced-latte.uk

License: MIT License

JavaScript 0.85% TypeScript 96.66% CSS 2.28% Shell 0.06% Dockerfile 0.15%
nextjs typescript

iced-latte-frontend's Introduction


Iced-Latte (Frontend)

ci Status license GitHub issues Total Lines of Code

Docker Pulls GitHub contributors GitHub stars

Table of Contents

Introduction

πŸŸ₯ Iced-Latte (Frontend) is a non-profit sandbox project where a team of IT enthusiasts are working on creating a modern marketplace (https://iced-latte.uk/) for selling coffee in order to pump up their soft and hard skills and have fun working on an interesting project. Built using Next.js, it's crafted for educational purposes, offering insights into modern application development with Next.js.

πŸŸ₯ It's crucial to note that we operate without financial support from any party, and we don't compensate anyone financially either. Our efforts are fuelled solely by passion and dedication.

πŸ”₯ Github-Stars πŸ”₯

Please support Iced Latte project by Giving Stars 🌟 on Github repositories - your ratings mean a lot to us!πŸ™‚

Tech Stack

  • Core: Next.js + Typescript.
  • State manager: Zustand.
  • Css framework: TailwindCSS.
  • Testing: Jest, React-Testing-Library.

Quick Start

Follow the setup instructions in START.MD to get the project up and running.

API Documentation

The API is fully documented with Swagger. Access the documentation at http://localhost:8083/api/docs/swagger-ui once the server is running.

Project structure

  - public/  (static files)
  - src/  (sources directory)
    - app/
      - _components/  (components used by current page)
      - someRouteFolder/  (some rote page)
        - _components/  (someRoute page components)
        page.tsx  (someRoute page)
      globals.css  (global styles)
      layout.tsx  (root layout)
      page.tsx  (main page)
    - components  (shared components across application)
      - ui  (shared ui components (buttons, etc.))
    - constants  (temporary hardcoded values)
    - data  (temporary mocked data)
    - hooks  (custom hooks)
    - models  (typescript types)
    - services
    - utils  (utility functions)
    tailwind.config.ts  (tailwind custom classes)

🚒 Deployment

No k8s, no AWS, we ship dockers directly via ssh and it's beautiful!

The entire production configuration is described in the docker-compose.local.yml file.

Then, Github Actions have to take all the dirty work. They build, test and deploy changes to production on every merge to master (only official maintainers can do it).

Explore the whole .github folder for more insights.

We're open for proposals on how to improve our deployments without overcomplicating it with modern devops bullshit.

πŸ›€ Forking and tweaking

Forks are welcome.

Three huge requests for everyone:

  • Please share new features you implement with us, so other folks can also benefit from them, and your own codebase minimally diverges from the original one (so you can sync updates and security fixes) .
  • Do not use our issues and other official channels as a support desk. Use chats.

πŸ™‹β€β™‚οΈ How to report a bug?

  • πŸ†• Open a new issue.
  • πŸ”¦ Please, use a search, to check, if there is already existed issue!
  • Explain your idea or proposal in all the details:
    • Make sure you clearly describe "observed" and "expected" behaviour. It will dramatically save time for our contributors and maintainers.
    • For minor fixes please just open a PR.

πŸ’Ž Now to propose a new feature?

  • Go to our Discussions
  • Check to see if someone else has already come up with the idea before
  • Create a new discussion
  • πŸ–Ό If it's UI/UX related: attach a screenshot or wireframe

😍 Contributions

Contributions are welcome.

The main point of interaction is the Issues page.

Here's our contribution guidelines β€” CONTRIBUTING.md.

The official development language at the moment is English, because 100% of our users speak it. We don't want to introduce unnecessary barriers for them. But we are used to writing commits and comments in Russian and we won't mind communicating with you in it.

😎 I want to write some code

  • Open our Issues page to see the most important tickets at top.
  • Pick one issue you like and leave a comment inside that you're getting it.

For big changes open an issues first or (if it's already opened) leave a comment with brief explanation what and why you're going to change. Many tickets hang open not because they cannot be done, but because they cause many logical contradictions that you may not know. It's better to clarify them in comments before sending a PR.

🚦Pay attention to issue labels!

🟩 Ready to implement

  • good first issue β€” good tickets for first-timers. Usually these are simple and not critical things that allow you to quickly feel the code and start contributing to it.
  • bug β€” if something is not working, it needs to be fixed, obviously.
  • high priority β€” the first priority tickets.
  • enhancement β€” accepted improvements for an existing module. Like adding a sort parameter to the feed. If improvement requires UI, be sure to provide a sketch before you start.

🟨 Discussion is needed

  • new feature β€” completely new features. Usually they're too hard for newbies, leave them for experienced contributors.
  • idea β€” discussion is needed. Those tickets look adequate, but waiting for real proposals how they will be done. Don't implement them right away.

πŸŸ₯ Questionable

  • Β―\_(ツ)_/Β― - special label for questionable issues. (should be closed in 60 days of inactivity)
  • [no label] β€” ticket is new, unclear or still not reviewed. Feel free to comment it but wait for our maintainers' decision before starting to implement it.

πŸ‘ Our top contributors

Take some time to press F and give some respects to our best contributors, who spent their own time to make the club better.

😎 Iced Latte project creator / Product owner / Tech Lead

πŸ˜‡ Project manager

πŸ•΅οΈβ€β™€οΈ QA engineers

βš™οΈ Backend developers

πŸ–₯️ Frontend developers

🎨 UX/UI designers

πŸ“Š Business and system analysts

Let's press F to pay respects to these awesome contributors!

πŸ‘©β€πŸ’Ό License

MIT

In other words, you can use the code for private and commercial purposes with an author attribution (by including the original license file or mentioning the Club 🎩).

πŸ“ž Contact (Community and Support)

Join our IT community Zufar Explained IT on Telegram.

Feel free to contact us via email: [email protected].

❀️

iced-latte-frontend's People

Contributors

sunagatov avatar iakivpekarskyi avatar dmitriyushkvarok avatar wdyffs avatar s083r avatar anksuunamun avatar lightness322 avatar annstriganova avatar freecree avatar mikesaburov avatar monleru avatar kaadosh avatar dependabot[bot] avatar dbandarovich avatar

Stargazers

akhil_phoenix avatar  avatar  avatar  avatar Qusielle avatar Balzhinimaev Lopson avatar  avatar Ilia Ivankin avatar Oxana Chelnokova avatar Michael Fett avatar  avatar Artem Vorozhtsov avatar  avatar Vadim avatar  avatar Nikita Kulikov avatar  avatar Konstantin Lopuhin avatar Ayush Muniya avatar Olesya Barmina avatar  avatar Gleb avatar Sergey Cheparukhin avatar Atharva Shirdhankar avatar  avatar Daria Dobrego avatar Yodha Sudarsi avatar Pradip Chaudhary avatar Shanmukhi avatar Vignesh Murugan avatar  avatar Muhammad Abdulloh avatar Jess Barbosa avatar Tokhirjon avatar  avatar Sam Goodenough avatar KPacarizi avatar Tebloev Vladimir avatar Alexander Moskovskiy avatar  avatar Alexey Bukhtiyarov avatar Alexander Kuzmichev avatar Alexander Guschin avatar Ihor Tarasov avatar Andrew avatar  avatar  avatar mikh_e avatar Mikhail Kulaha avatar Leonid Zemenkov avatar Anna Maikova avatar Ilya Gulya avatar  avatar  avatar Alexey Berezin avatar  avatar Stan avatar Sergei Budnik avatar  avatar Andrey Logonov avatar  avatar Ivan Popov avatar Stepachev Maksim avatar  avatar Anton Krylov avatar Rovshan avatar Dmitrii Metenev avatar Salman avatar Twour avatar  avatar  avatar Iuliia Nedolivko avatar  avatar Yulia Yakimets avatar Roman avatar  avatar Evgeniy Shushkov avatar  avatar Ruslan Kuyanets avatar Nunja avatar  avatar  avatar Vyacheslav avatar Kirill Cherkashin avatar Anton Nikiforov avatar  avatar Muammar ibn Faisal avatar Daniel avatar Sergey Zhukov avatar  avatar  avatar  avatar Valeria avatar  avatar Vlad Kurochkin avatar Artyom Perevalov avatar  avatar Aliaksandr Nikifarau avatar  avatar  avatar

Watchers

 avatar  avatar  avatar Dmitrii Fedorov avatar

iced-latte-frontend's Issues

(SHOPPING CART PAGE) Total per line price does not change after increase/decrease items

Pre-conditions:

  1. At least one product is added to cart
  2. Go to shopping cart page

Steps:

  1. Click "Plus" button
  2. Click "Minus" button

ER:
Total per line price change after increase/decrease items and equal amount * unit price

AR:
Total per line price does not change after increase/decrease items and equal unit price

FR:

Given: I am on a shopping cart with an added product
When: I am decreasing/increasing quantity
Then: Quantity of product changes, summary price change(in line and total in cart)


2024-05-03_08-36-03

2024-05-03_08-36-43

(MAIN PAGE-PRODUCT'S CATALOG) incorrect order of products when sorted by average rating

Before:

  1. When sorting with parameters: 'sort_attribute=averageRating&sort_direction=desc' we get a list of products that first contains products with averageRating equal to null.
  2. When sorting with parameters: 'sort_attribute=averageRating&sort_direction=asc' we get a list of products that last contains products with averageRating equal to null.

After:

  1. Descending order: Products with averageRating equal to null should be the latest.
  2. Ascending order: Products with averageRating equal to null should come first.

(MAIN PAGE-PRODUCT'S CATALOG) New product card

Before:
Product card has these details:

  1. Product photo.
  2. Product name.
  3. Product price.
  4. Product rating.
  5. Product reviews count.
  6. Add to cart button.
    Screenshot 2024-06-09 at 5 14 57 pm

After:
Product card has these details:

  1. Product photo.
  2. Product name.
  3. Product price.
  4. Product rating.
  5. Product reviews count.
  6. Product brand name.
  7. Product seller name.
    Screenshot 2024-06-09 at 5 18 02 pm

(MAIN PAGE-PRODUCT'S CATALOG) Sidebar Seller Filtering

  1. Implement seller filtering in the sidebar on the main page.
  2. Add functionality to filter by brand and seller, showing only 5 items by default (if available), with additional options visible upon clicking "Show more" and retractable by "Show less."

image

(PERSONAL ACCOUNT PAGE) Update User info, Unclear Error Message

Priority: Medium

Pre-condition:
user already register and authenticated.

Steps:

  1. Navigate to https://iced-latte.uk/profile.
  2. Click the "Edit" button.
  3. Refer to the first provided screenshot, enter the data into the respective fields as shown.
  4. Click the "Save Changes" button.
  5. Refer to the second provided screenshot, adjust the data in the fields as indicated to replicate the second attempt to save changes.
  6. Click the "Save Changes" button again.

ER: The application should discard changes that do not meet the specified requirements after each attempt, displaying an appropriate and clear error message that guides the user on how to correct their input.

AR: Application discard changes that do not meet requirements. Error message provided is unclear and does not offer useful information or guidance to the user, as demonstrated in the screenshots.

image
image

(PERSONAL ACCOUNT PAGE) Updating user's info. Last name field should accept hyphen and space

Priority: Medium
Pre-condition:
User already register.

Steps:

  1. Navigate to https://iced-latte.uk/profile
    2.Click button β€œEditβ€œ
  2. Enter in field 'Last name' name = Bryan Eastin or Bryan - Eastin.
  3. Click button β€œSave Changesβ€œ.

ER: update in last name should save.

AR: got input validation error message β€˜Invalid Last name format. Use extended Latin letters’ and update was not saved.

FR:

Free text
2-128 symbols
Two types of errors:"Last name is the mandatory attribute"
"Last name should have a length between 2 and 128 characters"

image
image

(PERSONAL ACCOUNT PAGE) Field First Name accept 1 symbol value on edit profile page

Priority: Medium

Pre-conditions:

User logged in.

Steps:

  1. Click β€œProfile” button

  2. Click β€œEdit” button

  3. Enter 1 symbol value in the First Name field

  4. Click β€œSave Changes” button

ER: Error message

AR: 1 symbol value saved in the profile

FR:

2-128 symbols
Two types of errors:
"First name can only contain Latin letters, spaces, and hyphens"
"First name is the mandatory attribute"

Screenshot

Personal Account. Password Change Code Sent to Client by mistake

Description. When the user changes the password in https://iced-latte.uk/profile code is sent to user's email by mistake.

Priority: Medium

Pre-conditions:
User logged in.

Steps:

  1. Click "Profile" button
  2. Click "Change password" button
  3. Enter old password
  4. Enter new password
  5. Click "Change password" button
  6. Click "Return to main page" button

ER: Password change confirmation email
β€œDear !
Your password has been successfully changed.”

AR: Received a Confirmation code via email.
telegram-cloud-photo-size-2-5255931237837690249-y

Text inconsistency. Should be "confirm registration" instead of "confirm password"

Priority: Low

Pre-conditions:
User is not registered

Steps:

  1. Navigate to the registration page. https://iced-latte.uk/auth/registration
  2. Fill out the registration form
  3. Click the "Register" button.

ER: The user is presented with a message that accurately reflects the current step in the registration process.

AR: The user observe β€œConfirm Password,” which is misleading and does not align with the expected sequence of registration steps. This text suggests a different action than what should logically follow the initial registration submission, potentially causing confusion.

image

(MAIN PAGE-PRODUCT'S CATALOG) Product Card (Average Rating + Reviews Count)

Before:
Now all the values you see in the product card on the website are hardcoded.

After:
In the product card we need to show the rating and the number of reviews that come from the backend REST API as json as follows:

  1. If backend returns product with the average rating of the product as 4,8 and 13 as the number of reviews then on the product card is should look like that 🌟4,8 (13).
    Screenshot 2024-04-28 at 11 33 25 am

  2. If backend returns product with the average rating of the product as null or 0 and the number of reviews as null or 0 then on the product card is should look like that No rating.
    Screenshot 2024-04-28 at 11 35 13 am

Non-clickable item in the cart

Priority: Medium

Pre-conditions:

  1. User logged in.
  2. Product add to cart

Steps:

  1. Click on the product item

ER: Opening product page
FR: Item non-clickable
image

(PRODUCT PAGE) Sorting reviews by rating does not work

Describe the bug
If user write a review and do not refresh the page, the sorting does not work

To Reproduce
Steps to reproduce:

  1. Leave a review for a product that already has reviews.
  2. Click on any sorting option.

Expected behavior
Reviews are sorted according to the selected sorting criterion

Actual Result
The sorting function is not working

2024-05-25.16.17.44.mov

New login and registration page for desktop and mobile

Before:
You can see old login and registration pages.

Screenshot 2024-05-12 at 10 30 37 am
Screenshot 2024-05-12 at 10 30 49 am

After:
You need to create new login and registration pages for desktop and mobile.

Screenshot 2024-05-12 at 10 29 55 am

Steps:

  1. Contact our UX/UI designer Kate. Ask her which pages are ready to implement.
  2. Implement new login and registration pages for desktop and mobile.
  3. Test new login and registration pages for desktop and mobile locally. Be sure that everything works correctly!
  4. Create a PR with these changes.
  5. Notify your frontend collegues to review your PR.

(PRODUCT PAGE) Statistics with ratings disappears

Pre-conditions:

  1. Product has at least 1 review
  2. Go to product page

Steps:

  1. Select a filter by rating that is not present among the reviews

ER:
Empty review list and statistics with ratings doesn't disappear

AR:
Empty review list but statistics with ratings disappears

Two buttons "Add a review" on Product Page.

Describe the bug
Two buttons "Add a review" on the Product Page.

Precondition:
Do not clean the cache and cookies!!!! The user registered and logged in.

Environment:
Google Chrome - Version 124.0.6367.203 (Official Build) (arm64)
HW - Apple M1 Pro

To Reproduce

  1. Select a random product on https://iced-latte.uk/
  2. Click on the product image - you should see the product page
  3. Observe the result

Expected result:
The button "Add a review" should be 1.

Actual result:
Two buttons "Add a review" on the Product Page.

Comment:
You may not be able to reproduce this bug in your environment.
After I clean the browser's cache and cookies I can not reproduce this bug.

2 button add review 2 button add review1 2 button add review3

(MAIN PAGE-PRODUCT'S CATALOG) Need to fix layout when no products and when one row of products

Bug description
Layout is broken in some cases:

  1. When there are only one row of products in list. To reproduce you can set filter by price from 5.9 to 6.1. The part of product card where price and "+" are placed is moving on the bottom of page:
    image
  2. When there are no products in list sidebar is moving in the center of page, but it should be on its place in the left part of website. To reproduce you can set filter by price from 6 to 6.1.
    image

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.