Skip to content

Latest commit

 

History

History
53 lines (30 loc) · 5.17 KB

README.md

File metadata and controls

53 lines (30 loc) · 5.17 KB

e.Learning

This application is an online learning platform. It's made to offer courses courses any area in the form of video lectures.

Main Features

  • Pass a YouTube playlist url and register a course for that playlist automatically:

    This is achieved through an interface with the YouTube API to grab all videos informations, parse them and create the course and lesson entities accordingly inside the system.

  • Play YouTube videos on the mobile app:

    This is done through a webview created inside react native to display an embedded YouTube link.

  • Track progress of watched classes for any course and Save your favorite courses to watch later:

    These two are possible thanks to a local database created by the app inside the device. The app is then able to persist local data relevanto only to that user, which shouldn't be stored in the backend.

  • Filter throught the list of all courses to find courses by keywords:

    This is achieved by using a simple ILIKE query in the backend and finding the courses that contain the searched word in their names. Also, the same can be done in the local database by filtering through the favorite courses in a similar way but locally.

Technologies

The project has two main parts:

Back-end Server

The server will be powered by Python and the FastAPI framework. Some concepts of layer separation inspired by Domain Driven Design were applied to the backend code.

Deployment

The project is deployed to Heroku and can be found on: https://server-elearning.herokuapp.com/docs. This page also has the documentation and client auto-generated by FastAPI with the help of Swagger UI.

Mobile App

The mobile application will use React Native and Expo. It also uses the following stack of React-related technologies and some NodeJS libraries applied to the mobile app:

  • TypeScript
  • TypeORM + Expo-SQLite *
  • React Navigation
  • Styled Components

* In order to use the TypeORM + Expo-SQLite stack in a mobile environment in which the JavaScript engine is not the same as NodeJS and, on top of that, there is a compilation + minification step involved, some extra configuration steps had to be taken. I walk through them in detail in this post I wrote.

Deployment

The app was published to the Expo default publishing host and can be opened using the Expo App on either an iOS or an Android device. It is available on: https://expo.io/@jgabriel1/projects/e-learning