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.
No comments:
Post a Comment