Code Monkey home page Code Monkey logo

freshbey's Introduction

Freshbey

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

Here's the homepage of Freshbey ✨ to showcase the working of the application.

homepage-freshbey

Project Purpose!

I am a huge enthusiast of open source. Contributing to open source is a fantastic way to learn and grow. Making open source contributions will require you to have been exposed to a few important concepts, practices, and transferable skills:

  • Version control
  • Working with tickets & issues
  • Working with other developers
  • Creating pull requests
  • Experiencing a code review process
  • Setting up a local development environment
  • Contributing code to a pre-existing codebase

General Idea

Freshbey is an open-source and self-hostable ecommerce application with a focus on developer productivity and ease of customization.

Current State

As of now, Freshbey is built using MERN stack. Additionally, React Bootstrap along with Bootswatch Zephyr theme is used for styling and React Redux is used for state management.

Getting Started

Setting up the repository

Fork the repository at - roopeshsn/freshbey to your GitHub account.

Then clone the forked repository, by typing the following line in your local terminal/powershell. Remember to replace <your-username> with your actual GitHub username.

git clone https://github.com/<your-username>/freshbey.git

Navigate to the cloned repository on your local system

cd freshbey

Add remotes to the parent repository. This will help you fetch the code from the parent repo to avoid any merge conflicts later.

git remote add upstream https://github.com/roopeshsn/freshbey.git

To verify, use the command git remote -v to check if you have two remotes - origin and upstream set up.

Finally, fetch the upstream's latest code from the main branch.

git fetch upstream master

Env Variables

Create a .env file in then root and add the following

NODE_ENV = development
PORT = 5000
MONGODB_URI =
JWT_SECRET =
EMAIL_USERNAME =
EMAIL_PASSWORD =
EMAIL_HOST =
EMAIL_PORT =
CLOUDINARY_CLOUD_NAME =
CLOUDINARY_API_KEY = 
CLOUDINARY_API_SECRET = 

Add data in .env file

The backend folder in this repository serves as the codebase for the API server which connects to a MongoDB instance to store and retrieve user, products, orders data.

MONGODB_URI

MongoDB version = 5.0.12. You can either spin up a local/Docker instance or can use MongoDB Atlas (Recommended).

Here's the similar URI which can be used to connect with the cluster mongodb+srv://admin:<password>@cluster0.p2u97.mongodb.net/freshbey?retryWrites=true&w=majority

Replace with the password for the admin user.

JWT_SECRET

Add any string like YOUR_NAME_ANY_SIGN (eg. chrismathew7) is used to create a private key which will authenticate.

EMAIL_USERNAME, EMAIL_PASSWORD, EMAIL_HOST, EMAIL_PORT

To get this credentials you need a Mailtrap account. Mailtrap is an Email testing tool. We can simulate this for the forget and reset password functions.

Select Nodemailer from integrations. You will get credentials similar to this,

var transport = nodemailer.createTransport({
  host: "smtp.mailtrap.io",
  port: 2525,
  auth: {
    user: "99195eec06f5",
    pass: "d26fe4c7d762"
  }
});

CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, CLOUDINARY_API_SECRET

Product images are hosted in Cloudinary. Create an account in Cloudinary and add appopriate credentials in .env file.

Install Dependencies (frontend & backend)

npm install
cd frontend
npm install

Run

# Run frontend (:3000) & backend (:5000)
npm run dev

# Run backend only
npm run server

Server should be running on PORT specified in env file (or 5000 by default)

To test, type localhost:PORT/ in your browser and following output should appear.

{
  message: 'Welcome to Freshbey Backend',
  version: process.env.VERSION,
  license: 'MIT',
}

Mail Service

Mailtrap (A Email Sandbox Service) is used as an email inbox to reset passwords.

Image Service

The Images for product, slide, category are manually hosted in Cloudinary

Build & Deploy

The project is deployed on Heroku

git push heroku master

The above command is used to deploy the project on Heroku

Seed Database

You can use the following commands to seed the database with some sample users and products as well as destroy all data:

# Import data
npm run data:import

# Destroy data
npm run data:destroy

Contributing

Please check out CONTRIBUTING.md for more information regarding how to contribute.

Our Contributors ✨

License

MIT, see LICENSE

freshbey's People

Contributors

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

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.