Skip to content

Crowdfunding website for restaurants. Built using MERN stack and Stripe API.

Notifications You must be signed in to change notification settings

Rammina/resto-fund

 
 

Repository files navigation

RestoFund

Table of Contents

Overview

RestoFund is a crowd-funding web application, specialized for helping restaurants collect donations to help deal with disasters. It was initially a team project for Chingu Voyage 30, but forked and updated as a solo project. Technologies used are React.js, Node.js, Express, MongoDB, Sass, Google OAuth, Stripe API.

LIVE LINK: https://resto-fund.vercel.app/

Features


User Authentication
  • User registration
  • Login
  • Login via Google
Main Features
  • Create a fundraising project
  • View list of all fundraising projects
  • View fundraising project page
  • Edit fundraising project
  • Delete fundraising project
  • Donate to a fundraising project
User Dashboard
  • View owned fundraising projects
  • View supported fundraising projects
  • Payout info

Technologies Used


JavaScript React Redux NodeJS Express.js MongoDB SASS CSS3

  • Stripe
  • Cloudinary

Installation

Clone this project locally and then follow the instructions below:

Backend

To start the backend server, go to the root folder.

Install dependencies by running:

npm install

Then, start the project's server in development mode on port 5000 by running:

npm run server

The backend application requires an .env file which contains the following keys:

  • MONGO_URL
  • JWT_SECRETKEY
  • STRIPE_SECRETKEY
  • STRIPE_ENDPOINT_SECRET
  • CLOUDINARY_API_KEY
  • CLOUDINARY_API_SECRET
  • CLOUDINARY_NAME

The JWT_SECRETKEY is used for JWT auth tokens.

To run the server, one must make an account for both MongoDB Atlas and Cloudinary.

Registration instructions for both sites can be found in:


MongoDB Atlas Setup

Instructions for MongoDB Atlas installation can be found here.

Cloudinary Setup

To setup Cloudinary, one must first create an account. After registration, check the dashboard for the following information and put them on the .env file:

  • CLOUDINARY_API_KEY
  • CLOUDINARY_API_SECRET
  • CLOUDINARY_NAME

Cloudinary Dashboard


Stripe Webhook Development Setup

Instructions for Stripe Webhook installation for development environment can be found here.

Frontend

To start the client-side application, go to the client folder:

cd client

Install dependencies by running:

npm install

Go back to the root folder:

cd ..

Start the client application in development mode on port 3000 by running:

npm run client

The frontend application requires an .env file which contains the following key:

  • REACT_APP_GOOGLE_AUTH_CLIENT_ID

To run the build process:

npm run build

Dependencies

Server

  • @stripe/stripe-js: ^1.15.0
  • async: ^3.2.0
  • axios: ^0.21.1
  • bcryptjs: ^2.4.3
  • body-parser: ^1.19.0
  • cloudinary: ^1.22.0
  • concurrently: ^6.1.0
  • cors: ^2.8.5
  • date-fns: ^2.21.3
  • dotenv: ^9.0.1
  • express: ^4.17.1
  • helmet: ^3.15.1
  • http-errors: ~1.6.2
  • jsonwebtoken: ^8.5.1
  • mongodb: ^3.6.6
  • mongoose: ^5.12.7
  • morgan: ^1.10.0
  • nocache: ^2.1.0
  • stripe": ^8.150.0
Server Dev Dependencies:
  • nodemon: ^2.0.7
  • prettier: 2.3.0

Client:

  • @stripe/stripe-js: ^1.15.0
  • @testing-library/jest-dom: ^5.11.4
  • @testing-library/react: ^11.1.0
  • @testing-library/user-event: ^12.1.10
  • axios: ^0.21.1
  • date-fns: ^2.22.1
  • node-sass: ^4.14.1
  • react: ^17.0.2
  • react-dom: ^17.0.2
  • react-redux: ^7.2.4
  • react-router-dom: ^5.2.0
  • react-scripts: ^4.0.3
  • react-toastify: ^7.0.4
  • redux-form: ^8.3.7
  • redux-thunk: ^2.3.0
  • stripe: ^8.150.0
  • web-vitals: ^1.0.1


License

This project is licensed under the MIT License.

About

Crowdfunding website for restaurants. Built using MERN stack and Stripe API.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 78.4%
  • SCSS 20.3%
  • HTML 1.3%