GithubHelp home page GithubHelp logo

roopeshsn / freshcomm Goto Github PK

View Code? Open in Web Editor NEW
47.0 1.0 57.0 2.94 MB

A self-hostable ecommerce application with a focus on developer productivity and ease of customization.

License: MIT License

HTML 0.22% CSS 0.90% JavaScript 98.88%
ecommerce ecommerce-application mongodb nodejs react-bootstrap javascript mern-stack react redux shopping-cart

freshcomm's Introduction

I am passionate about hardware and software engineering, particularly embedded systems, networking, the web, and cloud-native. I can effectively self-manage independent projects as well as collaborate as part of a team.

Previously, I worked as a software developer on an open-source internet observability platform known as Internet Health Report as part of Google Summer of Code. Before GSoC, I worked as a software engineering intern at a startup, where I solved optimization problems (in the logistics domain) for a period of 5 months.

freshcomm's People

Contributors

alpavlove avatar anujverma-eng avatar aryangp avatar biswajitsahoo-tech avatar dependabot[bot] avatar developedbysj avatar felexonyango avatar gkupdx avatar jjaijg avatar leksyking avatar lucasfaustman avatar masterhawk99 avatar neeladripal avatar ranjankuldeep avatar roopeshsn avatar s-vamshi avatar sameersecond avatar utkarsh212 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

freshcomm's Issues

Create Image upload component for products admin page

For admin, there is an option to create a new product.

admin_product_page_freshbey

Here is the form when you click that "Create Product" button.

create_product_form_freshbey

For the Image Src field, Freshbey uses ImgBB service. ImgBB is an image hosting service. You can host images and get direct links. If I want to add an image, I'll manually go to ImgBB and upload the image and I will get the direct link. I'll then paste that link into this "Img Src" field. After that when I click the "Update" button the data will be stored in the Database.

As you see this is a very hectic process. I don't want admins or editors to go to that ImgBB service to upload the product image. Create an image upload component so that we can directly upload the image from the local system. That image should directly store in the database.

We have the "Edit Product" option. Take care of the image upload there too.

edit_product_freshbey

edit_product_page_freshbey

If you have any queries feel free to reach out. Also, if you have any other solutions do let me know!

Stylish Hover Effect In Category

Want Add Stylish Hover Effect In Category So When User Move Their Cursor To Category They Will Get Beautiful Hover Effect
kindly assign this to me

Create footer section

Is your feature request related to a problem? Please describe.
Freshbey's footer doesn't have enough information.

Describe the solution you'd like
Create a footer similar to the screenshot attached.

Describe alternatives you've considered
No response

Additional context

footer_freshbey
Note: Image is taken from Flipkart

Take care that the footer should be responsive for smaller displays too. Reference the README file for styling libraries and themes used in this project.

[FEATURE] Redefine product quantity selection

Is your feature request related to a problem? Please describe.
As of now to order a product in Freshbey you can select a quantity in a sequence. For example, If you're going to order a Tomato you can select 1 kg, 2kg, and so on. But in reality, 90% of the customers won't buy more than 2kg. There's an unexpected behaviour here. If an admin updates the count in stock as 100 kg. The quantity input select component renders from 1kg to 100kg. This is shown in the below screenshot.

quantity_select_input_freshbey

Describe the solution you'd like
Also, product selection is to be redefined. Currently, the products in Freshbey are vegetables so they're defined as Kg in the quantity input select dropdown. What if the product is a Refined oil? The denotation here is liters. Similarly, if the product is an egg of 6 pieces or 12 (eggs won't be sold as 1 or 2 in Freshbey as it affects the business) appropriate denotation should be rendered.

Take a look at his screenshot. This is taken from Big Basket.

qty_field_redefined_freshbey

qty_carrot_bigbasket

Here for every product, you can find a dropdown with their respective weight. For example, the product carrot will only be sold for 250 g, 500 g, and 1kg. There is another field called Qty (quantity) where you can select how many you need. For example, if you need 3 packs of 250g then you can select 250 gm in the dropdown and you can enter 3 in the Qty input.

Similarly, for Onion, you can find 5 options in the dropdown.

onion_qty_bigbasket

Similarly, for Eggs, we have 2 options.

eggs_qty_bigbasket

The conclusion is same functionality should be added in Freshbey. User should have an option to select only the defined grams or kilograms or items of a product. Also there should be a Qty field which is an integer to denote the quantity of the same product.

Here's an video to explain the functionality.

Online.Grocery.Shopping.and.Online.Supermarket.in.India.-.bigbasket.mp4

So, come up a with a solution for the problem statement mentioned.

Describe alternatives you've considered
No response

Additional context
No response

[Feature] Dark Mode ๐ŸŒ™

Some users prefer viewing the website in dark mode for better visibility . So can i contribute to this repository by adding a button which will help to switch between light and dark mode . can you assign it to me .

[FEATURE] Wishlist

Sometimes, a customer may be interested in a product but decide to buy it later. Or a customer may find a product interesting and want to check that later for more details. A wishlist allows them to store a list of these products so that they can easily find them next time they visit your site.

Inventory management

If a user bought a product, the count should be reduced from the stock automatically. Till now there is no option like this. Come up with a solution that solves the problem as stated.

Add Typescript

Typescript is very powerful. We can find some bugs while developing the project. And also it would be helpful to manage a large project.
With typed system it would be great to build the product.

Page goes blank when we try to edit any product in admin/productlist page after editing one of the product before

Describe the bug
when we are in admin/productlist route, when we click on edit button and update a product then we will get again redirected to admin/productlist. Here starts the problem now when we want to edit any other product we will get an error Uncaught TypeError: Cannot read properties of undefined (reading 'name') at ProductEditScreen.js:47:1

To Reproduce
Steps to reproduce the behavior:

  1. Go to admin/productlist
  2. Click on edit button for one product
  3. Edit details of that product
  4. Click update button
  5. It will get redirect again to admin/productlist
  6. Now try to edit any product it will show a blank page
  7. And if we open console we get this message Uncaught TypeError: Cannot read properties of undefined (reading 'name') at ProductEditScreen.js:47:1

Expected behavior
We should see an edit page of that particular product.

Screenshots
tem15

Add visual indication in the checkout process

In the checkout process, there is no visual indication for the user which step they are in. It will be better if a progress bar or any kind of visual indication is added in the checkout process.

Here's the screenshot of the shipping page where no indication is there for the user,
checkout_process_progress_bar_feature_freshbey

Suggest a way to host the backend

The backend was hosted on Heroku. It seems that they have stopped the free tier. Suggest a free service provider so that the backend could be hosted on the web.

Add unit tests

Most of the components do not have unit tests. It is good to have them tested.

Bug in order page

Describe the bug
On the order page if an admin orders a product, the status of payment and delivery is not updated when the "Mark as paid" button is clicked. The status is updated when the page is refreshed.

updation_bug.webm

To Reproduce
Steps to reproduce the behavior:

  1. Login with the admin account (check the readme.md for the credentials)
  2. Add a product to the cart
  3. Click on the "Proceed to checkout" button on the cart page
  4. Enter the address and select the payment option
  5. Click on the "Mark as Paid" button
  6. Refresh the page
  7. See the payment status is updated
  8. Click on the "Mark as Delivered" button
  9. See the delivery status is updated

Expected behavior
The status message should be updated without refreshing the page.

Screenshots
No Response

Desktop (please complete the following information):
No Response

Smartphone (please complete the following information):
No Response

Additional context
No Response

Search box shouldn't appear in the /login route

Currently, clicking on "Login / Sign Up" redirects you to /login with this on the page:

image

But I don't think it makes any intuitive sense for a search box to be in the /login route.
I can see that the search box is being rendered in the Header.js component. Is there a specific reason as to why the search box is being rendered in that component and not, for example, in the HomeScreen.js component?

I am also willing to work on this issue.

Reduce unused CSS

Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity.

React Bootstrap is used for styling and the Zephyr theme is used from Bootswatch

Create an functionality to add category in admin route

Is your feature request related to a problem? Please describe.
On the admin page, we have options to add a product and carousel. In a similar way, create an option to add a category.

Describe the solution you'd like
The category page in the admin route is already there. Add the said functionality to the page.

add_category_page

Note: Recently we have changed the image hosting to Cloudinary for the "admin/createproduct" route.

Describe alternatives you've considered
No response

Additional context
Add any other context or screenshots about the feature request here.
No response

Change logo's font style and color

To differentiate the logo text "Freshbey" in the navbar, I need the font and color to be changed.

Desired font style: League Spartan Semi Bold 600
Desired Color: --bg-green (declared in the index.css file)

fresbey_logo_change

Note: The change should be to that particular text only.

Make search better!

Search is making request on every key stroke, and the api request is made later, so can implement debouncing to make it better. and when the search is cleared can be redirected back to the previous page state.

I can work and on it and fix the issue

Create a Sort functionality

Is your feature request related to a problem? Please describe.
Create a sort option so that users can sort the products from low to high or high to low by price.

Describe the solution you'd like
Here is the sort option in amazon.in

sort_feature_1

sort_feature_2

Implement the same functionality in Freshbey. As of now we only need "low to high" and "high to low" by price options in the sort dropdown.

Describe alternatives you've considered
No response

Additional context
No response

Render appropriate message if a order eligible for free delivery or not

Render a message similar to this on the Freshbey cart page if the order was above Rs. 400.

order_eligible_for_free_delivery

else render a message stating that how much extra to add so that the order qualifies for free delivery.

not_eligible_for_free_delivery

Also, take care of the shipping charges on the place order page. If the user is eligible for free delivery, then the shipping charges should be 0 else the shipping will be Rs. 40.

freshbey_placeorder_page

Note the images are taken from Amazon India.

Redesign or Rewrite profile page

Is your feature request related to a problem? Please describe.
The profile page should be redesigned so that it will improve the UX.

Describe the solution you'd like
Here's the current profile page of Freshbey,

profile_freshbey

This page should be redesigned similarly to this.

screenshot-www amazon in-2022 10 13-07_35_21

As you see on Amazon's profile page things are arranged properly orders, addresses, etc.

Describe alternatives you've considered
No response

Additional context
No response

Improve understandability of the profile screen

Is your feature request related to a problem? Please describe.
Feature is not related to a problem, it is just something I'd like to see improved.
Currently, the profile screen info looks like this:
image

But having a form be displayed under the user profile can be confusing to the user.

Describe the solution you'd like
I would like to change it to something like this:
image

After clicking on 'Update User Info', it shows the form:
image

And after you've made changes to your profile and click "Update", it hides the form again:
image

Describe alternatives you've considered
This is just the first step to improving the UI of the profile screen. I'd like to make more improvements in the future.

Additional context
Add any other context or screenshots about the feature request here.

@roopeshsn I would like to be assigned to this as well.

Separate backend and frontend directories

Is your feature request related to a problem? Please describe.
Currently, the backend and frontend directories are coupled together. As you see, the package.json file belonging to the backend is in the root. I think separating them would be a good option for deploying them in the cloud and scaling in the future.

Also, It would be good if the changes were updated in the docs (README.md).

Need a single place to update the branding and theme color

Freshbey is a self-hostable e-commerce application. Minimum coding experience is enough to host this application by anyone who wishes to create an e-commerce app. Everyone has their own branding and theme color for their e-commerce application. Up to now, there is no single file to update the branding and theme color.

Come up with a solution to update the branding and theme across the application using a single file.

Change color on focus in input fields

Freshbey's primary color is #34a853. It is declared as a variable "--bs-green" in the index.css file. So we want this color to be referenced as primary all over the application. Be it has hover, focus, etc. we need these shades of color to be referenced. But in the input field, when focused, a shade of blue is shown. This behavior is shown below through a screenshot.

freshbey_focus_color

Change this focus color to be --bs-green for every input field.

Add validation in backend using Joi

Is your feature request related to a problem? Please describe.
User can send any thing to the backend and that unwanted data can be stored in the database.

Describe the solution you'd like
In order to prevent the unwanted data to get stored in the database we should be validating the data comming to the backend.
So we should be using Joi as a validation library to validate each request

Describe alternatives you've considered
We could also use custom validation but I thing it would be better to use Joi as it is popular and would be easy.

Form is not properly validated

Hi @roopeshsn Team, I have just found out about this bug, that the Form is not validated properly.
The example I'm living in Canada and we have a Postal code a mix of AlphaNumeric characters.
So, If I enter the Postal Code say "R2M 0T8" and then I proceed to Place Order, it shows an error

Order validation failed: shippingAddress.pinCode: Cast to Number failed for value "R2M 0T7" (type string) at path "shippingAddress.pinCode"

you are actually using the Type of Postal Code in OrderModel as Number
and in Shipping Component you are using the same field as Text only. So this is not a proper validation.

If you will be using this for a country like India, where all Postal Codes are likely to be in NUMBER, then also we need to add the validation for NUMBER in Shipping FORM.

OR

If also for countries like Canada, then we need to add the Validations for TEXT as both in FORM as well as in Order Model

Solving this issue will enhance the User Experience

If you found this as a bug, pls let me assign this issue as Hactoberfest

Order Validation Falied

Shipping

Style Shopping Cart Page

Here's the shopping cart page of Freshbey

cart-freshbey

The position of the elements is not perfectly aligned. Style it as you like. But follow the color theme!

React Bootstrap is used for styling. Also, the Zephyr theme is used from Bootswatch.

Can add more features inside the category page.

Provide selected category header, Inside the category can add a sort and filter. Search inside category can only be related to category(search by category).
Latest stocks on demand can be one sort and can include all the available items in the category to the other tab.
I can work on these features

Implement the location (address) feature

Is your feature request related to a problem? Please describe.
As of now in Freshbey users want to enter the address every time placing an order. To avoid a functionality should be made so that they'll ask to enter the address once and for future orders, the entered address will be used.

Describe the solution you'd like
Here's the address feature in amazon.in

address_amazon_1

address_amazon_2

The above screenshots are taken if a user is not signed in. Here are the screenshots if a user is signed in,

address_amazon_3

address_amazon_4_blurred

Note: The addresses were blurred due to privacy reasons.

I would like you to come up with a solution to implement the same feature in the Freshbey. Also, you need to take care of the address step on the shipping page.

shipping_freshbey

The above screenshot is the shipping page. The application should skip this address step if the user has already given his address.

Here are the consolidated steps,

  • Implement the address button in the navbar (similar to amazon's button)
    address_freshbey
  • A modal should appear to ask to enter the address or pin code (take care of signed-in or not signed-in state)
  • If the user wishes to enter a new address the application should take him to a "addresses" page
  • On the "addresses" page, there should be an option to add a new address
  • Take care of the shipping page too as mentioned already
  • We need the same functionality implemented in amazon. So, go to amazon. in and take a look at how the functionality is implemented.

Describe alternatives you've considered
I would like you to come up with a solution to implement the address feature in the Freshbey. Incase if you have any queries feel free to reach out.

Additional context
Appropriate screenshots are attached.

Change project setup env in README

I have given my own credentials in env variables under "Getting Started - Project setup on your local machine" in the README file. Change those in order to set up those accounts by the developer itself.

Enhance shopping cart

Hi, I would like to enhance the shopping cart functionality because it looks empty

best regards

No. of total items are not added properly in cart.

Describe the bug
There is a bug in displaying number of total items in the cart.
Number of item is treated as a string, which results in string concatenation.

To Reproduce
Steps to reproduce the behavior:

  1. Let's say add (Apple 1kg)
  2. then add (Onion 1 kg)
  3. Now if you add (Mushroom 2kg).
  4. No. of items in the cart will show 22 instead of 4.

Expected behaviour
There should be increase in total item according to number of items added.

Screenshots
Screenshot 2022-10-12 at 3 02 39 PM

Need more context about the delivery process

As of now in Freshbey one can order items using COD and UPI. In both methods, the manual intervention is needed to update the status. In delivery status, there is only one of the two messages "Delivered" or "Not delivered" which are shown to the user.

Here's the order page.
order_page_freshbey

The plan is to give more context about the delivery like where the product is right now when it will get to reach the customer something like that.

Imagine Freshbey has one or more stores in every city. It need not be a store. It can also be a warehouse. So once we get the location from the user, we'll map the nearest store or warehouse to deliver the products to the customer. Accordingly, the details will be shown to the customer as I stated above.

Come up with a solution to address this problem.

404 page

Is your feature request related to a problem? Please describe.
Whenever we enter a route which doesn't exists then the page is shows only navbar and search bar and remains blank below it.

Describe the solution you'd like
I think we need to tell user that the page they are referring doesn't exists.
So i would like to build 404 page which tells user that the page doesn't exists.

Describe alternatives you've considered
And i have an idea to show random recipes to the user on this 404 page.

Additional context
This is how it looks as of now when page doesn't exists -
tem9

Hash password before storing

Is your feature request related to a problem? Please describe.
The passwords being stored are not hashed, this is a security concern while developing e-commerce websites.

Describe the solution you'd like
Before storing passwords we can hash it, alternatively before making the API request to backend we can hash the password then we can store it.

Describe alternatives you've considered
none.

Additional context
This will lead to breaking changes for existing users, we can either register every user again or we'll have to hash passwords already present in database.

Lastly, I would like to work on this issue.

Set pre-defined options in Category while creating new product

Is your feature request related to a problem? Please describe.
It's frustrating to type whole category name while creating a product and if user misspells category then the product will not belong to expected category and it will not get shown to user unless they search with product name.

Describe the solution you'd like
Instead of manually typing the category name we can show available categories to the user and they can select one among them.

Additional context

Before:-
tem20

After:-
tem21

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.