Skip to content

Latest commit

 

History

History
131 lines (100 loc) · 6.22 KB

README.md

File metadata and controls

131 lines (100 loc) · 6.22 KB

Front End

JavaScript React CSS3 Bootstrap MUI

Back End

NodeJS Express.js Next JS JWT

Postgres Sequelize

Test & Development Tools

Jest ESLint Postman

Other API's and Libraries Used

  • Google Calendar API
  • Google Maps API
  • bcrypt
  • Socket.io
  • New Relic
  • K6

See Project Board for current project status.

About The Project

Project Summary

Chad's List is a platform to allow users to give unwanted items to the community utilizing a mobile-first design. ezgif com-gif-maker (8) ezgif com-gif-maker (7)

  • Developed by Anthony Psyk
  • Users will be able to login or register for the application, they will be able to add a profile photo, email address, and say if they represent a charity origanization or not. Upon clicking the signup button, they will be redirected to the Item View
  • Developed by Vinh Le, Devon Li
  • User can search items with any of the following inputs: item name, location, and distance.
  • Developed by Devon Li, David Han
  • Users can filter out items by categories, and the filtered items will be shown on the home page and the map.
  • Users can click on a filter button to reveal a sidebar, allowing users to filter by category.
  • Developed by Vinh Le
  • Users can toggle a map that shows items in relation to their location, based on the search settings provided in the filter and the items listed in Item View.
  • Developed by Ximing Chen
  • Users can post an item with the following inputs: item image, item name, and item descition.
  • Developed by Ximing Chen, David Han, Devon Li
  • Users can access the item informaiton by clicking on the item card in the home page. A modal will pop up displaying the item images, name, location, and description. The claim button allows users to claim the item in order to pick it up. The message button initiates the chat with the item dornor.
  • Developed by Ximing Chen, Yina Xing
  • Users can generate a receipt for their donations claimed by charities. The receipt will have informtion on each item's condition and value so that the user can use it for tax reduction purpose.
  • Developed by Yina Xing, Ximing Chen
  • Users can access their claims history, search a claim by name and check the status of the claim. Clicking the name of the item will take user to the item detail modal, where the user can unclaim an item if they do not want it anymore, or message the donor of the item.
  • Developed by Yina Xing, Ximing Chen
  • Users can access their donations history, search a donation by name and check the status of the donation. Clicking the name of the item will take user to the item detail modal, where the user can delist an item if it has not been claimed, or message the claimer of the item.
  • Developed by David Han, Ximing Chen, Devon Li
  • Users are able to message other users once claiming an item. User messages will persist by saving messages in Postgres. Chat conversations will be unique to users based on a unique conversation ID that is generated when user first messages the donor. Socket.io is used to create a real time chat functionality
  • Developed by Mitch Rosenlund, Yina Xing, David Han, Jeffrey Stewart
  • Utilized faker.js library to create mock data for items and users
  • Implemented model, view and route folder structure
  • Sequelize was used to create and model data
  • Implemented user authentication with Json Web Tokens and Bcrypt to hash user passwords
  • Authentication middleware was implemented to verify the JWT client side and sending back correct user information on refresh
  • Created a chat server that would listen to a socket connection clientside when users start a conversation

Installation

  Run all commands in root directory

  // install modules
  npm install

  // Start Application
  npm run start

  // Start Development Server
  npm run dev

  // Start Server
  npm run backend

  // Start Chat
  npm run chat

  // Seed pre-customized fake data
  // Navigate to the postgres server
  drop database if exists chadslist;
  create database chadslist;
  // Go back to the root directory
  node backend/db/setup/faker.js

Testing

  // Change into testing directory
  cd client/src/spec

  // Run Jest Test Code
  npm run test

  // Start Instance with New Relic
  npm run newRelic

  // Start Stress Testing with K6
  npm run k6