Goods4Goods is a data driven trade-based app where you can post items you no longer need and trade them for items you’ve been wanting. It’s the perfect solution for anyone looking to refresh their collection or declutter without spending money. Our platform allows users to list items they no longer need, specify what they’re looking for in return, and connect with reputable traders.
- A GitHub Account
- A terminal-based git client or GUI Git client such as GitHub Desktop or the Git plugin for VSCode.
- VSCode with the Python Plugin
- A distribution of Python running on your laptop. The distro supported by the course is Anaconda or Miniconda.
Currently, there are three major components that will each run in their own Docker Containers:
- Streamlit App in the
./appdirectory - Flask REST api in the
./apidirectory - MySQL Database that will be initialized with SQL script files from the
./database-filesdirectory
- Clone the Project Repo to your local machine: "git clone https://github.com/esha-pandya0203/goods4goods.git"
- Set up the
.envfile in theapifolder based on the.env.templatefile. - For running the project containers:
docker compose up -dto start all the containers in the backgrounddocker compose downto shutdown and delete the containersdocker compose up db -donly start the database container (replace db with api or app for the other two services as needed)docker compose stopto "turn off" the containers but not delete them.
- Once the containers have been created, and our being run, go to "localhost:8501" in the browser of your choosing to access goods4goods.
Link to our demo: https://drive.google.com/file/d/1gsCdsV5zsWeWuaxMSI0h2tybzUaWOk5w/view?usp=drive_link
This project uses RBAC (Role-Based Access Control) to allow users to assume different possible roles within the app without actually using user authentication. For Goods4Goods, these roles include: A User (Emma Johnson), A System Adminstrator (Chloe Smith), An App Data Analyst (Barney), and a Social Media Employee (Daniel Kimmel)
Each of these four users have their own set of pages for which they can access.
User (Emma Johnson): As a User, Emma can view, upload, edit, and delete her items on the website, as well as view other users’ items and profiles. She can also manage or create trade offers, and report and rate trades that she has participated in.
System Administrator (Chloe Smith): As a System Administrator, Chloe has access to view all reports data. This means any reports made either by a user or an administrator of the app regarding a user, an item, or a technical issue. Chloe also has the ability to update the status of user reports, or delete them entirely as she sees fit. In addition, Chloe can create an Admin Report if she notices something herself. Finally, Chloe can delete items that are listed on the app in the case that they are reported and are found fraudulent or innapropriate in some way.
App Data Analyst (Barney): As a Data Analyst, Barney can view different metrics related to user engagement, user reports, item popularity, and offer status distribution to view ongoing trends on the app. After analyzing these metrics, Barney can write a new analysis to make note of these trends and view previous analyses to track the progress of the app.
Social Media Employee (Daniel Kimmel): Social Media Employees, like Daniel, currently can manage all social media posts, create a new social media post, and view his own profile information. When managing all social media posts, he has the option to change post visibility (hide/show) for users, delete posts, or view a single post in more detail and edit a post's content. Editing a post requires viewing said post first.
Francesca Cambareri ([email protected])
Erika Ding ([email protected])
Anusha Narang ([email protected])
Esha Pandya ([email protected] )