Monday, September 25, 2023

Launching the online course web application

 After making a few attempts at building web apps and abandoning them after a few months, I finally found a project that I feel I can effectively use. As the creator of online courses, their hosting and management is fairly critical to the Python Power Electronics project. The courses are currently hosted on Udemy which has done quite a good job in terms of providing instructors a nice interface for hosting courses. However, to begin with, a fairly significant share of the course revenue goes to Udemy. Moreover, with Udemy choosing a new pricing strategy that changes dynamically, my courses are unaffordable to most students unless they are on sale. For this reason, a very useful web app will be one that allows me to host courses on my own website while providing most of the facilities that Udemy does.

As always, this project will be completely open source as that is largely my philosophy behind software. I have been using open-source software for close to twenty years and for the past decade almost exclusively open-source software. The hope is that the code can be used by another instructor to host his or her courses online.

The backend for the app will be Django and Django Rest Framework (DRF). In terms of the database, I have not decided yet, but will probably be MySQL or Postgres. For the frontend, I would like to experiment. I have sworn by Angular for the past several years, but have been forced to use React for a few projects. I have always preferred Angular over React, but there are a few aspects to React that are interesting and might be worth digging deeper with a side-project. I learned Flutter for mobile app development a while back, but did nothing with it. This might be the time to start using Flutter, and if a React app is ready, some of the state management can be transferred to the Flutter app.

The last bits are testing, DevOps and security. All of these are domains where I have dabbled in over the past few years with many projects. I would like to use them extensively with this project. So, the hope is to test every bit of code. For the backend, I will be using Pytest, for React it will be Jest, for Angular it will be Jasmine. In terms of DevOps, all deployment will be done using Docker containers. But besides, I would also like to automate the deployment by using Jenkins. In terms of security, I will be using a number of tools. For Static Application Security Testing (SAST), I will be using add-ons with Visual Studio Code such as HCL AppScan which highlights security issues as files are saved. For Penetration Testing, I will be using OWASP ZAP Penetration tester and also some other tools as I learn more on web application security.

Since I do see myself using this web app, I hope I will be motivated to build it consistently over the next few months. I hope it will also be a good learning experience just like the circuit simulator was.

No comments:

Post a Comment