Please visit the Brown Marketplace website here!
Clone the repo. Then, cd in the backend
folder. In the backend
folder, run the command: mvn package
and then ./run --gui
. Next, in the frontend
folder, run npm start
. Go to localhost:3000/explore
to get started!
Brown Marketplace is designed as a convenient local transaction platform for Brown community members (users authorized through Brown emails), helping the student buyers and sellers to establish connections. The users could search for, bookmark, sell, and purchase products from fellow community members, and receive personalized recommendations.
The website is intended for personal use for Brown students and faculty members, who are looking to sell or buy second-hand belongings within the Providence area. The app not only provides a convenient, secure transaction way to trusted buyers and sellers, but also seeks to eliminate environment impacts by promoting second-hand goods reuse.
- React: we use React as the framework for our frontend development. We also use Typescript and NPM.
- Material-UI: React component library for pre-styled components.
- Express Router for the Multi-Page Web App
-
Database: we use Firebase Realtime Database for storing product information, user profiles, and buying and selling listings. We use Firebase Storage for uploading and storing images.
-
Recommendation system: we use Java to create the recommender system based on bloom filter.
-
Server: the recommender program is connected to the front end through the Spark Server. The recommender extracts the relevant product attributes through database proxy, pass them into Bloom Filters for each product, and generate recommendations based on XNOR similarity scores compared with the user liked items. The resulting list of recommended items is then sent to the frontend as a Json object.
-
API: We use the Google User API for creating user accounts. We also set up API endpoints for the frontend to receive data from the backend, such as user data in the database.
-
Database Package (Javascript):
ProductDB
sub-packageModifyDB.js
for modifying products dataReadDB.js
for reading products data
UserDB
sub-packageModifyDB.js
for modifying users dataReadDB.js
for reading users data
DBInstance.js
for instantiating a Firebase Realtime DatabasetestDB.html
an html file for testing and visualizing the database methods
-
Java Packages
Recommender
package for bloom-filter based recommender systemProxy
package for Firebase connectionServer
package for establishing Spark server and creating routesStructure
package for storing project information (implements BF insertable interface for generating recommendation)
-
Spark server routes
/userReq
for receiving user id and querying user liked items/recommend
for generating recommendations and sending the product ids
This is a valuable learning experience for us in terms of designing and developing user-oriented project. We also wish to implement the following features if time permits:
- Support direct chat between users.
- Upgrade the recommendation system using machine learning and natural language processing models.
- Incorporate payment APIs for completing transactions.