Codementor Events

How and why I built ClassUp

Published Jun 06, 2020
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

Discover and read more posts from Atul Gupta
get started
post commentsBe the first to share your opinion
Show more replies