Skip to content

This repository is a collaborative work towards creating a serverless application called Learning Management System. This application follows multi-cloud deployment and will implement backend-as-a service architecture.

Notifications You must be signed in to change notification settings

AninditaGuha98/Learning-Management-System-serverless-application

Repository files navigation

Learning Management System- A multi-cloud serverless applicaton

This repository is a collaborative work towards creating a serverless application called Learning Management System. This application will follow multi-cloud deployment and will implement backend-as-a service architecture. This application has the following features:

Technologies Used

Frameworks/Languages used:

  • React
  • Node.js

Cloud Services used:

  • Amazon Web Services: RDS, Lex, Lambda, S3
  • Google Cloud Provider: Cloud Storage, Cloud Function, Cloud AI, GCP Pub/Sub

Modules

User Management Module

1. This module involves the registration page.

2. Details such as email and firstname and last name are being stored in the Firebase.

3. Other details such as the security question and answers are stored in AWS RDS, where the email id serves the primary key.

Authentication Module

1. This module involves the login page.

2. 1st factor authentication involves validating the email and password, by validating them using the google cloud function.

3. 2 FA involves validating the security question/answer using the AWS Lambda function.

Online Support Module

1. This module involves the Lex Chatbot.

2. According to first use case, the user queries basic website navigation information. Branching logic has been added by triggering Lambda function.

3. According to second use case, the Lex bot triggers a lambda function, which will be querying and displaying online users belonging to the same organization.

Data Processing

1. Google Cloud Storage buckets are google encrypted.

2. Files will be uploaded on a the bucket | Name: data_processing_lms | Filename: data_processing_email.txt

3. The docker will be called for processing; which will fetch the filename, take file from S3 and create a word cloud. The wordcloud will be uploaded to S3.

Machine Learning

1. Create K-Means text clustering on JupyterLab available on Google AI Platform.

2. There are 2 approaches which can be followed. One is to create a container and call API for training and testing, another is to train the model on notebook and save the model on GCS. Then we can use the model to predict the data. The later technique works if the model needs training only once. The former works best for all the ways

Testing

1. Unit testing for all the controllers, api and cloud functions.

2. Integration testing for single-feature plumbing.

3. Testing of the whole application.

4. Testing of I/O data of cloud functions.

5. Security testing.

6. Regression testing

7. System testing

Team Members:

References

  • Word cloud code: https://www.geeksforgeeks.org/generating-word-cloud-python/
  • Google Cloud Storage API: https://googleapis.dev/python/storage/latest/index.html
  • K-Means Text clustering: https://pythonprogramminglanguage.com/kmeans-text-clustering/
  • Amazon Lex: https://medium.com/velotio-perspectives/amazon-lex-aws-lambda-beyond-hello-world-1403c1825e72
  • Lex-React-Integration :https://www.npmjs.com/package/react-lex

About

This repository is a collaborative work towards creating a serverless application called Learning Management System. This application follows multi-cloud deployment and will implement backend-as-a service architecture.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published