hchen98 / 455-ScholarshipRecommendation

A cross-platform mobile app that allows students to easily create their profile and get modular content-based filtering in scholarships, colleges, and majors | CSCI 455 - Spring 21.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

scholar seek logo

CSCI 455 - Scholar Seek


College: New York Institute of Technology
Course: CSCI 455 - M01/ Spring 2021
Project Page: here
Mentor: Dr. Li
Team Lead: Micheal Trzaskoma
Team Member: Hui (Henry) Chen, Jungi Park, Micheal Trzaskoma, Zakaria Khan, and Gregory Salvesen


Demo

  • Final Report here
  • Bi-weekly Report here
  • Presentation here
  • Mobile App Demo here

Introduction

This Scholar Seek project is a continuation of a project from CSCI426 (Information Retrieval). The continuation of this project will include the implementation of more robust features and an enhanced database, which will distinguish this project from its previous state. The new planned features will also expand the scope of the app. The project, in its state from CSCI426, serves as a scholarship recommendation service, using a user’s profile information to match them as best as possible with scholarships from scholarships.com. With the features planned for development in CSCI426, the app will also serve to help prospective college students find the higher education institution that best suits them and it will even help them explore potential majors. Our Scholar Seek will help students who are financially struggling find the best scholarship, explore potential majors, and find the college best suited for them by using their profile information to recommend likely candidates.

Project File Structure

  • backend - all necessary files for the backend and cloud (AWS)
  • frontend - all necessary files for the React Native
  • db - all databases needed for the project
    • scholarDirectory - categorical scholarship term
    • scholarships - detailed scholarships
    • subcatList - a list of scholarship sub-category
    • auth - user profile data
    • colleges - college data from niche.com
    • client_profile - user's profile db
    • majors - categorized major listing db

Get Started

  • backend:

    Create a virtual env (if you have not):

    cd backend
    source env/bin/activate
    pip install -r requirements.txt
    

    Production Env with Docker:

    # build a container
    docker-compose build
    
    # view the container info (get container ID)
    docker-compose images
    
    # run the docker in port 8080
    docker run -p 8080:8080 -it <container ID>
    
    • Access the URL: localhost:8080

    Development Env:

    cd backend
    export FLASK_APP=run.py
    export FLASK_ENV=development
    python run.py
    
    • Access the URL: localhost:8080

    Test Env with Ngrok

    cd <ngrok directory>
    ./ngrok http 8080
    

  • frontend:

    cd frontend
    npm install
    expo start
    

API


Resources - Scholarships

Endpoint Method(s) Description
/api/v1.2/resources/scholarships/view/categories/general GET View a list of scholarship general category terms. E.g. Acamdeic Major, Age, Gendder, and etc.
/api/v1.2/resources/scholarships/view/categories/<cater> GET View a list of scholarship sub-category terms. E.g. Acamdeic Major has Accounting, Computer Science, and etc.
/api/v1.2/resources/scholarships/view/categories/sub/<cater> GET View a list of scholarship that belongs to a specific sub-categories.
/api/v1.2/resources/scholarships/view/titles/<scholarship_title>/<email>/<token>/<id> GET View a scholarship detail by providing scholarship name. At the same time, the backend automatically add this item as recent viewed.

Resources - Colleges

Endpoint Method(s) Description
/api/v1.2/resources/college/view/states/<state> GET View all colleges under a specific state.
/api/v1.2/resources/college/view/titles/<college_name>/<email>/<token>/<id> GET View a college detail by providing college name. At the same time, the backend automatically add this item as recent viewed.

Resources - Majors

Endpoint Method(s) Description
/api/v1.2/resources/major/view/subjects/<sub> GET View all majors under a specific subjects.
/api/v1.2/resources/majors/view/titles/<major_name>/<email>/<token>/<id> GET View a major detail by providing major name. At the same time, the backend automatically add this item as recent viewed.

Recommendations

Endpoint Method(s) Description
/api/v1.2/users/id/<email>/<token>/<id>/recommends/scholarship GET View a list of recommended scholarships by providing client's email.
/api/v1.2/users/id/<email>/<token>/<id>/recommends/college GET View a list of recommended college by providing client's email.
/api/v1.2/users/id/<email>/<token>/<id>/recommends/major GET View a list of recommended major by providing client's email.

Management - Authentication

Endpoint Method(s) Description
/api/v1.2/managements/users/signup GET Allows the user end to sign up an account.
/api/v1.2/managements/users/thankyou GET, POST Validate the user's token when sign up an account.
/api/v1.2/managements/users/<email> GET Authenticate the user's device and account by using email address, account password, and UUID, then return a JWT code as a token.
/api/v1.2/managements/users/forgotpassword GET Allows the users to reset their password. Accessible by the project internally only.

Management - Survey Profile

Endpoint Method(s) Description
/api/v1.2/users/id/<email>/<token>/<id>/surveys/scholarship GET, POST, PATCH Retrieve, Append, and modify client's scholarship survey detail into db.
/api/v1.2/users/id/<email>/<token>/<id>/surveys/college GET, POST, PATCH Retrieve, Append, and modify client's college survey detail into db.
/api/v1.2/users/id/<email>/<token>/<id>/surveys/major GET, POST, PATCH Retrieve, Append, and modify client's major survey detail into db.

Management - Bookmarks

Endpoint Method(s) Description
/api/v1.2/users/id/<email>/bookmarks/<type>/<token>/<id> /bookmarks GET, POST, DELETE View, append, and delete bookmark item under user's profile.

Management - History

Endpoint Method(s) Description
/api/v1.2/users/id/<email>/<token>/<id>/recent/<type>/<doc_num> GET View history item under user's profile.

About

A cross-platform mobile app that allows students to easily create their profile and get modular content-based filtering in scholarships, colleges, and majors | CSCI 455 - Spring 21.


Languages

Language:JavaScript 65.7%Language:Python 17.9%Language:CSS 15.2%Language:HTML 1.1%Language:Shell 0.1%Language:Dockerfile 0.0%