stevenli39 / CPSC-455-QuantReady

0 stars 2 forks source link

https://quantready455.com/

Definitions Page is still under construction: https://docs.google.com/document/d/1kVRQsiFZOgdsJ2s3lP6Y9rHdkdtSc79UYWn2BaY2TGs/edit?usp=sharing

QuantReady

QuantReady is an interview preparation platform designed to help students excel in quantitative finance interviews. It offers a range of features and resources to enhance users' preparation and performance. The platform includes question banks, user profiles to track progress and an interactive comment feature for students to discuss their thoughts and solutions.

Project Task Requirements

Minimal Requirements (3-5)

  1. Practice Problems

    • Person A creates a template of problems that are viewable in the frontend. (Done)
    • Person B sets up a database of questions in the backend. (Done)
    • Person C is responsible for linking the frontend with the backend and writing the APIs.(Done)
  2. View Correct Answers/Solutions

    • Person A identifies the correct answers to the questions in the question bank. (Done)
    • Person B creates a way to match the user input to the correct result and output an appropriate message. (X)
    • Person C creates a way for users to view the correct solution. (Done)
  3. Profile

    • The user should be able to create a profile. (Done)

Standard Requirements (3-7)

  1. Role-based Access

    • The platform should support multiple roles such as researchers and quant traders. (Done)
  2. View Correct Answers/Solutions

    • Users should be able to view the correct answers/solutions. (Done)
  3. Question History

    • The platform should display the user's history of attempted and unattempted questions. (Done, unattempted questions are implictly implied)
  4. Question Grouping

    • Questions should be grouped based on levels of difficulty and topics. (Done)

Stretch Requirements (2-3)

  1. Google Auth

    • The platform should support Google authentication and have opportunities of supporting other authentication methods. (Done)
  2. User Community

    • The platform should support a community of users with a commenting feature for discussion and collaboration. (Done)
  3. Interactive Learning Activities

    • The platform may include interactive learning activities such as quizzes, mental math puzzles, and timed mock interviews. (X)

Units 1-5 Tech Usage

  1. Unit 1: HTML, CSS, JS
    • Our components utilize MaterialUI, a React UI framework, combined with CSS to create a clean and modern look. HTML components are used through the application expliclty and implictly through MaterialUI and JSX to provide a hierarchy of components. JS is used throughout our application, namely frontend and backend application logic as well as handling user interactions.
  2. Unit 2: React and Redux
    • React powers our frontend, allowing us to create a dynamic and responsive user interface. We follow a component-based architecture, where the UI is broken down into smaller, reusable components, making it easier to manage and maintain our UI. Redux is used to manage the state of the user, allowing us to easily access user information throughout the application without additional backend API calls.
  3. Unit 3: Node and Express
    • Node and Express are used for our server to handle API calls, routes, middleware. This is used to create a RESTful API, which allows us to easily access and manipulate application related data from our database. Most notably, it's also used to handle user authentication and authorization by using the passport.js library and establishing user sessions with the cookie-session library.
  4. Unit 4: MongoDB
    • MongoDB is used to store all application related data including user information, question banks, and user comments. We use Mongoose to create schemas and models for our data, allowing us to easily access and manipulate data from our database.
  5. Unit 5: Builds and Deployment
    • We use render.com to host our frontend and backend application using a custom domain name. By utilizing a subdomain for our backend application, we're able to set cookies storing the user's session information. Render.com is integrated with Github, allowing us to easily deploy our application everytime a change is merged into our main branch.

Above and Beyond Functionality

We believe that the Google Authentication and user profile feature is above and beyond the requirements of the project. This feature allows users to sign in with their Google account, which is a more secure and convenient way of signing in. This feature also allows us to easily implement other authentication methods in the future, such as Facebook and Github. We also encountered many challenges when implementing this feature, such as issues with setting user session cookies as initially our frontend and backend were deployed on different domains. The user profile allows users to view their progress and history, which is a useful feature for users to track their progress and performance. This feature also allows us to easily implement other features in the future, such as a leaderboard or employ a gamification approach to learning.

Next Steps

List of Contributions

Note: Parts of the README.md are written with the help of GitHub Co-Pilot.

Prototype Sketches

Homepage

Homepage Hero Image Homepage Body Image Homepage Footer Image

Questions Page

Question List Page Question Solution Page

Getting Started

To get started with QuantReady, follow the installation steps below:

  1. Clone this repository: git clone https://github.com/yourusername/quantready.git
  2. Install the necessary dependencies.
  3. Set up the frontend and backend environments.
  4. Configure the database.
  5. Run the application.
  6. Access the application via the provided URL.

For detailed instructions on installation and usage, refer to the documentation provided in the repository.

Acknowledgements

The question banks used in QuantReady are created by the UBC Trading Group and our team. We would like to express our gratitude to the UBC Trading Group for their valuable contributions.