RAVIS Home Page Image

RAVIS.

Adding 80% more features while reducing product complexity by 60% with a brand new system.

TIMELINE
Jun 23 - Aug 31, 2023
MY ROLE
Software Developer
TEAM INVOLVED
D D

Duong (Matthew) Duong

Data Scientist

D N

Dai Quang Nguyen

Data Engineer

Technologies Used

Frontend

HTML
CSS
Next.js
React
JavaScript
Material UI

Backend

Python
Flask
Neo4j
Apache Airflow
Node.js

Tools

Microsoft Azure
Git
Bitbucket
Jira
Confluence
VS Code

Introduction

FPT Software is a leading global technology and IT services provider headquartered in Vietnam. During my summer internship at FPT Software, my team and I was tasked with revamping the e-learning recommendation system of our business unit. It is capable of suggesting the employees with courses from platforms like Udemy, Udacity, and Coursera tailored to their needs and career goals. With the new system, our team is set to solve the below problems in just 2.5 months.

Problems

The old UI design is unwelcoming.

It does not have a consistent design language across components and pages, demonstrated by conflicting color usages and themes. The excessive use of carousels in the design creates a lot of inconvenience for the user when browsing courses.

Core features are nonfunctional.

Many core functionalities of the old system are not working such as parsing and extracting user data from resumes, searching for courses based on keywords, managing user's skills, and most importantly recommending courses based on user's skills.

The system architecture is unnecessarily complicated.

The old system used expensive and respectively complex solutions like AWS EC2, AWS Lambda, and two separate databases (Neo4j and MongoDB) for storing user data even though in-house on-premise solutions are available.

Database is inefficiently used.

Neo4j was used as the main database but only for storing user data. It opts for a neural collaborative-filtering model that requires hand-labeling for 3000+ skills. Consequently, it fails to leverage the nature of Neo4j being a graph database, which is well-known for recommendation system applications.

My Responsibilities

Front-end Development

I played the pivotal role in designing and developing the front-end of RAVIS using Next.js and React.

OAuth with Azure

I was in charge of setting up the authentication logic like sign in/sign up, page protection, etc. for the application using NextAuth and Microsoft Azure.

Search System with Pagination

I developed the website's search system, enabling users to search courses using keywords and sorting/filtering options. Additionally, I implemented server-side pagination for the search page to optimize bandwidth and enhance system performance.

Data Access Layer Design

I designed the data access layer to connect our Flask back-end with Neo4j database. This creates a separation of logic from our API layer which enables reusability, scalability, and great maintainability for the system.

Results

System Architecture Image

A simpler and more effective system with the removal of excessive MongoDB database and technologies.

Recommendation page image

Carousels are replaced with pagination for enhanced user browsing experience.

Learning progress with charts image

Graph and visualizations are added to facilitate user's studying.

Search page image

A functional search system with sort and filter using Neo4j's full-text indexing and Apache Lucene.

Profile page for managing skills and uploading resume image

A dedicating user page for skill management and uploading resume/cv.

Going Beyond

Having pride and enthusiasm for what we did, our team commit to go beyond what was required and exceed the expectation of our managers and supervisor. Here are the special features that we added to the system.

Admin dashboard page image

An admin page with dashboard for managing users and courses.

Integration with AI chatbot image

A generative AI chatbot for quick and interactive recommendations using LangChain and OpenAI's API.