Engineering Management & Systems Engineering - ODU
State of the art API that utilizes Machine Learning models to generate personalized degree paths for each student based on their respective exeperiences and learning styles.
Throughout this document we refer to one of the supplementary services as "client". To avoid confusion, treat the client service as a seperate application that interacts with this API. The "client" application both consumes and calls this API to present students with a user friendly way of seeing their calculated degree.
To run this project, you will need to add the following environment variables to your .env file. To run the application in isolation, you only have to define the four variables below.
DATABASE_URL
mongodb+srv://:@.mongodb.net/
The URI that Prisma is going to use to access your databse. Currently only MongoDB is supported but it can be either a managed cluster by Mongo Atlas, or a self hosted service.
DIRECT_URL
prisma://aws-us-east-1.prisma-data.com/?api_key=
The URI that Prisma provides you after creating a connection pool using their Data Browser.
REDIS_BASE_URL
The name of the Docker container that is running the Redis instance. If all configurations are left as is, this value in most cases will be mms_redis.
API_URL
The name of the Docker container that is running the client instance. If all configurations are left as is, this value in most cases will be client.
The varibles below are used by the client part of the API to and are not neccessary to run the application in isolation. If they are filled out, Docker will import the .env file from the root of your directory to build and launch the API client.
GOOGLE_REFRESH_TOKEN
GOOGLE_SECRET
jwtSecret
jwtExpire
PORT
DB_USER
DB_PASSWORD
Building the image using Docker compose and the contexts defined in the Dockerfile.
docker-compose build .
Launching the application and it's related services
docker-compose up -d
GET /recommend/${userID}
Parameter | Type | Description |
---|---|---|
userID |
string |
Required. The user's document ID |
Recommending learning modules using differnt methods is our main goal with this project. Outlined below are all the methods that we are currently working on, or planning to implement before our initial launch.
-
Recommend modules based on public reviews
-
Recommend modules based on keyword similary between the learner and module objectives
-
Recommend modules based on learner profile similary
-
Recommend modules based on the student's learning preferences
-
Recommend modules based on the learner's prior professional experiences
-
Combining recommendations and drawing the most viable path for the student's degree
Client: GraphQL, TypeScript
API: Python, FastAPI, Prisma
Server: MongoDB, Redis