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/
User Authentication
- User registration
- Login
- Login via Google
- 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
- View owned fundraising projects
- View supported fundraising projects
- Payout info
- Stripe
- Cloudinary
Clone this project locally and then follow the instructions below:
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:
Instructions for MongoDB Atlas installation can be found here.
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
Instructions for Stripe Webhook installation for development environment can be found here.
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
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
- 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
This project is licensed under the MIT License.