How and why I built ClassUp
About me
I am an Architect & Developer & I love to code!
Lived & worked in many countries I have seen systems evolved from traditional client server to today's modern Cloud based Apps.
Now a days I code in Python/Django, Vue.js to develop Web, Android and iOS apps
The problem I wanted to solve
Parent Teacher Communication
In Indian schools the communication between teachers and parents is still carried out using primitive means like notice boards, circulars, notices, student diaries, emails
These are ineffective, time & effort consuming and unreliable
There is a strong need of technology based solution that is efficient, fast, cost effective & reliable
What is ClassUp?
I developed ClassUp - an App based Parent Teacher communication platform.
Using ClassUp Parents & Teachers can engage with each other like never before and turn into collaborators
Anything can be communicated - Feedback, Homework, test grades, Exam Results
Even Pictures & Videos of School events
ClassUp is fast, reliable, efficient and also good for environment as it drastically cuts paper usage
Tech stack
We needed a tech stack which is proven, rapid, cross platform, scalable, and Off course- Fee! Clearly Django was the obvious winner for the backend, MySQL for db AWS for hosting.
For Android Java Android SDK on Android studio and for iOS - Swift & XCode
Initially the Web portal was was based on Django Templates plus Bootstrap but this was not the best alternative.
Later with the emergence of Reactive Javascript based technologis like React, Angular, Vue we made a decision to migrate to one of these.
We started with Angular but to be honest found the learning curve too steep.
Then tried Vue.js and found it to be perfect as it is very easy to learn, various frameworks are available and enormous support for state management, and UI with Vuetify.
We now have a fully functional Web interface for all category of users - Teachers, Student, Parents and Admin.
We are now also considering React Native for Android and iOS as it will save a lot of time and efforts by having a single code base
The process of building ClassUp
We followed an approach of rapid prototyping and continuous integration. Instead of building a fully functional product and then launching, we started with launching a Minimal Viable Product (MVP), releasing it to selected end users, collect their feedback and build further features & functionality.
Agile approach of Continuous integration was a followed
First the back end was developed in Django and Database on Mysql, then we coded the APIs on Django Rest Framework, tested them through Postman.
Then we build the Apps on Android & iOS and integrated with back end through API.
We also followed an Do Not Repeat Yourself Approach (DRY) and used a lot of proven third party libraries such as Volley for networking in Android, Alamofire for same in iOS, Reportlab for python for generating PDF documents and many more like this. Python Pandas for analytics
Rigorous testing was performed at every stage of development
This not only speed up the whole development but also enabled us to build great user experience.
Challenges I faced
All technologies are best at what they are meant for - but making them work together to build a superior user experience is a biggest challenge.
For example for notification we first tried Firebase - However integrating it with Python back end through Google APIs is a nightmare. We tried for weeks but could not get any success. Google has done a really bad job as there is no support for debugging on Firebase products.
Then we turned to OneSignal - Its free and so wonderfully designed that we were able to complete the whole Push Notification in just 2-days
Configuring servers like Nginx and UWSGI is also quite challenging but thankfully there exist a lot of excellent material on net to help you out.
Key learnings
For web we firtst started with django templates and Bootstrap with jQuery - this is a rather rigid stack and does not support rapid development which Reactive Technologies like Angular, Vue, React etc provide.
later on we switched to Vue.js/Vuetifyu
Any technology be it Django or Vue - they are good for only a specific component of your app. Django is good for backend but not for front end.
Hence the assortment of technologies in the stack should be carefully chosen
Tips and advice
There are so many technologies now available each has its own strengths and limitations.
Always chose the ones which have been around for a while, proven and have a great support ecosystem.
Most of the time we chose open source, free technology - so before finalising any one, please look around what kind of successful products are built upon these technologies, how much community exist on forums like Github, stack overflow.
Stack overflow is an Angel for Developers - but using it properly is also an art. You should know how to properly construct your question, provide all the necessary details so that you get fast and accurate responses.
Contributors to Stack overflow are great people - They are expert in their fields and eager to help. Take full advantage to this great platform
Final thoughts and next steps
Our product ClassUp is almost complete - WE have also built Online Class Management which is proving valuable in current lockdown time due to Covid-19 crisis
We are now looking to use AI and ML to predict Student performance and generate accurate analytics for schools to find ways to improve