TeraBytes is a project that aims to connect an students to tutors through a bididng and contract formation system. It helps to place prospective students in touch with private tutors.
Students can initiate bids in the bid marketplace alongside with preferences such as day, time, subject, qualification, rate, etc.
Tutors can browse the bid marketplace to either buyout the bids or offer an alternative bid to the students.
Upon agreement by student or tutor, a contract is then formed between the both parties with a specified contract duration.
The system applies the following architectures/design in building the application:
- Model-View Controller for overall architecture
- Adapter pattern to serialize JSONs to corresponding objects
- Template pattern to generalize common views across different user interfaces
- Observer pattern to notify the views to update when invoked by users
- Strategy pattern to switch different methods of renewing a contract between student and tutor
- Builder pattern to build objects used throughout the application
The application includes the following functionalities, which are extensible:
- Login system by tutor/student
- Student and tutor home dashboard showing the contracts signed
- Tutor monitoring dashboard showing the bids to be monitored / bookmarked by tutors
- Bidding system for tutors to bid on the students' requirements:
- Open bidding: where tutors are allowed to provide offers for the students' bids or buy out immediately
- Close bidding: where tutors can respond and provide offers to student' bid request through messages
- Contract formation and signing between students and tutors
- Contract renewal for renewing expired contracts
Clone the project then choose one of the following options to execute.
- install maven
mvn compile
mvn exec:java -Dexec.mainClass=engine.Driver
- Open this in IntelilJ IDEA
- Go to Preferences -> GUI Designer -> Generate GUI into Java source codes
- Run Driver class
Use the following accounts to login:
Username: dummystudent
Password: dummystudent
Username: dummytutor
Password: dummytutor
For design documents: refer to app_docs
For application demo: refer to app_demo
This project is licensed under Apache License 2.0. All main conditions require preservation of copyright and license notices. View LICENSE for more information.