Architecture
Our design.
Flow Diagram

System Diagram

User Stories
As a student, I would like to sign up using my verified GW email to use this platform, so that I can have access to BookCycle.
As a student, I would like to donate my old textbooks on this platform, so that I can help another student in need.
As a student, I would like to enter my courses, so that I can be matched with textbooks based on the courses I am taking.
As a student, I would like to report my financial aid status, so that I can be matched with textbooks based on my need.
As a student, I would like to request a book after being matched, so that I am able to exchange them.
As a student, I would like to set the dates, times, and places I am available to receive the textbook I am requesting from another student.
As a student, I would like to agree on what dates, times, and locations I can exchange the textbooks with the student I am giving the book to.
As a student, I would like to meet with another student after agreeing on a time, location, and date, so that I can use my textbook.
As a student, I would like to view more information on the courses and textbooks I need, so that I can see if there is a book available to exchange, buy cheaper, or find out more information on.
Matching Algorithm

Our matching algorithm is developed based on the Weighted Bipartite algorithm with the following steps:
- Create a bipartite graph with two sets: Student set and Textbook set.
- Construct edges between students and books they need
- Incorporate constraints to calculate the cost matrix values/edge weights considering the amount textbooks a person has already received and the financial need of each person:
- Each column (Textbook) is assigned to the row (Student) with the lowest cost
- Edge weights are altered after a student is assigned a book