Portal for Institutes

Waseem Akram
22 min readJun 7, 2021

Why institutes systems should digitalized?

The Issues faced by most institutes due to using manual paper based system to manage their work. The most institutes and schools are still working with manual system which works with paper based system. Most of the institutes had a hesitation that if they digitalized their whole system then they must spend lot of money on building it and maintaining those system. Because of that reason they still try to depend on manual paper based systems. They felt this way is the easiest way to manage these works until covid-19 rise up. And the current situation face by whole world force many work places and institutes to be locked. Then the workers and all works managed by them were force to be done in home which means Work from home concept came into place. The same situation is going with schools and institutes they needed to teach and do lectures remotely.

This situation rises many problems to the institutes and schools who does there work by manual paper base systems. There are many problems faced when they are stick with manual paper based systems. Some of the main problem facing by many schools and institution are mentioned below.

Couldn’t find solution when Work From Home enforce them. The most of the institutes and schools are not digitalized their process. Because most of their processes are happen manual paper based systems. Some of the works they done in paper based are marking attendance, giving course works even informing schedules and maintaining financial stuffs. When the covid-19 pandemic hit them and force them to Work from Home situation they just lost how they going to manage these paper based things in remote from home.

The main problems faced by them are when they need to give a coursework there is a problem they need to make sure everyone got it correct or everyone received it proper manner. Even after finishing those course works by student they tend to be collect those things and store in a place. And managing those submissions there should be a separate place and finding a document is nightmare after certain time. Even you submit the coursework they should maintain another document to make sure whether the certain student submit it and even you are not sure whether they submit it within on time because they just convince the workers and submit to them. And there are cases tutor might missed those documents submitted by students.

And another problem is managing schedules and schedule classes. Sometimes when you are doing these kind things manual. There are some problems when you are doing these stuffs manually because you should make sure the same tutor does not scheduled another class or same batch of student do not have another class schedule to do those things manually you should go through papers and scheduled to make sure there is no schedule clash. In current scenario it become even worse with work from home scenario. And when you work remote you might face many problems when scheduling a time table.

And another problem arise when there are some issues on marking attendance normally attendance marked by manually. Some mark it manually by sheets with printed names and others are just manually write names and mark the attendance. The real problem arises when you are working in remote. The tutor will have extra work to mark attendance apart from teaching there is problem with synchronizing those attendance sheets together.

And another reason is the cost they need have in order to maintain these paper based documents. It does not cost that much to the papers. But the cost to maintain and other cost around it are also needed to add to final cost. And to print this sheets we need to maintain printers electricity and workers to maintain these documents and needed to pay them salaries all those cost needed to add to final cost. When you focus on the total cost just build around this if this is manual there should be separate person to manage those so it is also a cost and when working in remote that person doesn’t have any work and you might pay salary.

And another problem faced when you maintain these stuffs by manual paper base system is giving exam results and giving on feedbacks. Students does not have access to see their progress time they want. If there is portal to check students’ progress it would be great option to students. There are some institutes got their own portal to manage these things and they bring entire system to one place but most schools and institute failed bring their system digitalize and make their change. The Issues faced by most institutes due to using manual paper based system to manage their work.

The most institutes and schools are still working with manual system which works with paper based system. Most of the institutes had a hesitation that if they digitalized their whole system then they must spend lot of money on building it and maintaining those system. Because of that reason they still try to depend on manual paper based systems. They felt this way is the easiest way to manage these works until covid-19 rise up. And the current situation face by whole world force many work places and institutes to be locked. Then the workers and all works managed by them were force to be done in home which means Work from home concept came into place. The same situation is going with schools and institutes they needed to teach and do lectures remotely.

This situation rises many problems to the institutes and schools who does there work by manual paper base systems. There are many problems faced when they are stick with manual paper based systems. Some of the main problem facing by many schools and institution are mentioned below.

Couldn’t find solution when Work From Home enforce them. The most of the institutes and schools are not digitalized their process. Because most of their processes are happen manual paper based systems. Some of the works they done in paper based are marking attendance, giving course works even informing schedules and maintaining financial stuffs. When the covid-19 pandemic hit them and force them to Work from Home situation they just lost how they going to manage these paper based things in remote from home.

The main problems faced by them are when they need to give a coursework there is a problem they need to make sure everyone got it correct or everyone received it proper manner. Even after finishing those course works by student they tend to be collect those things and store in a place. And managing those submissions there should be a separate place and finding a document is nightmare after certain time. Even you submit the coursework they should maintain another document to make sure whether the certain student submit it and even you are not sure whether they submit it within on time because they just convince the workers and submit to them. And there are cases tutor might missed those documents submitted by students.

And another problem is managing schedules and schedule classes. Sometimes when you are doing these kind things manual. There are some problems when you are doing these stuffs manually because you should make sure the same tutor does not scheduled another class or same batch of student do not have another class schedule to do those things manually you should go through papers and scheduled to make sure there is no schedule clash. In current scenario it become even worse with work from home scenario. And when you work remote you might face many problems when scheduling a time table.

And another problem arise when there are some issues on marking attendance normally attendance marked by manually. Some mark it manually by sheets with printed names and others are just manually write names and mark the attendance. The real problem arises when you are working in remote. The tutor will have extra work to mark attendance apart from teaching there is problem with synchronizing those attendance sheets together.

And another reason is the cost they need have in order to maintain these paper based documents. It does not cost that much to the papers. But the cost to maintain and other cost around it are also needed to add to final cost. And to print this sheets we need to maintain printers electricity and workers to maintain these documents and needed to pay them salaries all those cost needed to add to final cost. When you focus on the total cost just build around this if this is manual there should be separate person to manage those so it is also a cost and when working in remote that person doesn’t have any work and you might pay salary.

And another problem faced when you maintain these stuffs by manual paper base system is giving exam results and giving on feedbacks. Students does not have access to see their progress time they want. If there is portal to check students’ progress it would be great option to students. There are some institutes got their own portal to manage these things and they bring entire system to one place but most schools and institute failed bring their system digitalize and make their change.

Solution Proposed for this problem

Every problem as solution and for this issue as solution this the project “AssignPortal” fits fine. The “AssignPortal” will fit as solution for this problem because any institute or school can register under the system and can create account. Then institute have option to register tutors and register students. Add student under certain courses and even institute can register courses under tutors. Then the tutors and student will have own portal access to do their work. This Portal will mitigate the most problems. When you maintain manually then anyone can have access to any document even some document secured there is possibility to that any worker have chance to access to document. But when it comes to our “AssignPortal” solution there is restrictions to access a certain page they need to authorize to access those then documents will automatically secured.

One of the problems mentioned earlier is how we going to manage attendance there in no need of manual stuff the only thing tutor need to do is just select the course which currently tutor is doing then you are ready to mark attendance tutor will have all the student names. And another option is if the tutor need to check old attendance tutor just need to select the attendance history and select attendance recorded date then he has the result. From this it tutor will save the time and effort spent to manage documents and go through old document list.

Another problem mentioned early was managing course works. With this portal it is not that hard as manual because tutor only have to select course and mention end date and upload the course work then students under the course have access to download it any time before the submission date. And when it comes to submitting the answers to the assignment student only need to do one click and upload it. And they should submit within the given deadline before the deadline student can submit many times as they can. And as institute and tutor you all have the access to assignment and submission files anytime and download those files. There is no need to manage those assignment submission documents separately and maintain separate area to assignment submission. And this system will manage things all the thing done by manually and manage as paper works such student details and tutor details.

And managing schedules also become easy with this portal system. It is easy to add a schedule when there is clash in schedule to a tutor it will indicate. Then students and tutors need to do is just login to their system and check their schedule for current month. When it comes to examination to get admission students can download it from their portal and tutor can update final results and student can check the results. Tutor can add some feedback to the students. Then students can check the feedbacks and results to determine their progress and can make essential things to do and focus on certain subject.

Another problem mentioned earlier is the cost that institute and schools have to spend to maintain the manual paper based system. Currently “AssignPortal” is planned to launch as free portal system. Then in future have a plan to launch some new features. And have some restrictions to free users. If the user feels this portal is worthy they can go for subscription even they went to subscription based model institutes and schools need to spend the lesser money that they spend to manual paper based model.

This given solution will address most of the problem faced by institutes and schools by having manual paper base model. This will also help them to manage stuffs in current work from home help most of them to get going.

The Problems in Current Solution

Even though the solution is well crafted. Even though it is well planned there are some problems when it comes to implementing in real world. The certain issues addressed below has given some solution next step. Some of the problems are mention below.

  • In assignment part tutor need to set deadline. When tutor set deadline to assignment. From our system we can disable the submit button and in system will disable the submit option to the students from frontend (client view). But in frontend if we check the current date it will get it from the system which means current users computer or mobile date and time. Then the problem arise when the deadline is over a student has ability to change the date from his computer and have ability to get accessible to the submission option and can do the submission even after the deadline this will be huge problem to tutors and institute because students can submit assignment anytime they like.
  • Another issue is we are giving ability to upload assignment to the system by tutors and student can upload answers to the system. The problem arise when we determine the maximum file size that we are going to allow the users to upload as assignment or a submission to the system. Needed to determine the maximum file size system going to allow.
  • Another problem going to face when we develop the system is if one student registered under different courses which means in different batches. When we creating a schedule as system we focus on whether the tutor which current course going to schedule has another course schedule in the same time slot if any we can block it from the system but if a student has different courses schedule in the same slot for different courses then there is problem with it. In practical scenario it is hard to check whether all the student do not have any schedule crashes.
  • When we creating this kind of systems we need to remember one thing there are certain part of the system is needed on certain time. As example we can say services like assignment submission. If our system is not available near the deadline and if student unable to submit those before the deadline then that student will consider as not submitted assignment to that student. From the system we need to make sure important parts in the system is available in any time.
  • As system like this we need to update students and tutors about the changes happening in the system. As example if a tutor upload an assignment student should knew it immediately because if system did not inform them and student know it late it will bad to student which means it will give bad expression to the users of the system. Since this reason system keep updating student and tutors on the changes.

Solutions to Mitigate Problem

  • For the problem in client have control in date in system which lead client can change it and submit from front end because client has more control in frontend. As a solution after receive the payload to server we can get server current time in UTC (Universal Time) and we can get client time zone from the front end. Then in the server we can get current time from that time zone which request made and validate it with submission date if submission date is end then we can reject the submission. Which means we don’t depend on frontend submitted date and user does not have control anymore.
  • When submitting assignment or submission there should be specified maximus file size. If we plan to give portal facility which has not limited file size then users can upload any size of files to share between them as consequence to giving not restricted file upload size and unlimited storage size to every institute there should be separate storage management system and it will get bigger with time goes on and increment of number of users in the system. So we should limit the size of uploading file to determine that it only contains pdfs and documents not videos or any other big size files. We can just limit size as 30MB maximum size can upload. We can restrict it in frontend and even backend. And later if an institute needed more size then we can give subscription option to them as per the requirement.
  • When we creating schedules we can check the same tutor has another class schedule at that time but in other side we should check if there is class schedule to same student and in practical it is hard to check and change schedule for single student and go through every student. So we can do another validation that when scheduling the class we can check is there any class schedule for same batch if it is true we can warn to client. If the student is joined to another course from another batch it will be hard to control it from the system.
  • Availability in certain part of the system is solved by choosing microservices architecture as a development architecture. It helps to independently scalable even if one service is down to certain issue we can just up previous version. Even the versions were different that does not mean main functionality might miss but latest features will miss until we have up the current version.
  • Notifying the users about changes in the system. This system is initially going to be implement as web based solution. Even though it is website you can notify through the browser about updates on application but student should logged in for that to push the notification through the browser. As a solution for that we can have some email sending mechanism for notify students about the updates of schedules, assignment etc. This method is more effective than pushing notification through browser because email sending mechanism has more chance to notify more students than normal browser notification system.

System Architectural design

System Architectural design for AssingPortal

The above image gives the clear idea about the system and where every services connected. The propose design is microservices architecture. The stack going to use for this are,

  • microservices
  • Spring boot
  • MySQL
  • React
  • Firebase storage

This is the technical stack used to build this stack and there is a description given below what is the reason behind to choose these stack.

Microservice Architecture

When choosing architecture most of the time the debate goes with monolithic vs micro services. The reason behind on choosing microservices is it helps developers to break entire system into small domains and build those individually and deploy them separately. The main reason behind microservices architecture is that some large applications are very easy to develop and maintain when it is break down into small pieces rather than an entire application. And microservices each service run separately and maintain its own database. The main reason behind the separate database is if you have centralize database to all microservices which is in entire application it will create bottle neck in database the entire idea in microservice is being independent and loosely coupled if we have centralized database then all services are depend on database because of that when it is recommended to use separate database for each microservice. The main philosophy behind microservice is “Do one thing and do it well”. Services might run for achieve one main process but each service should be independently deployable and easy to replaceable. And microservice is architecture it is not depends on any specific language or database we can implement it with any programming language. And key reasons to choose microservices to this system.

  • Isolated Services.

In current user experience user expect to have your system available in anytime there should not be any unavailable situations. For this reason microservices architecture suits well. In case if one service is fails. As developers we have option to use another stable version of the service and make it available to user or even without the failed service the system as ability to run and response to user request because all the services are loosely coupled.

  • High scalable

Because of microservices are based on small components it is easy to scale up and down due to the requirement. In some scenarios their might be high demand to certain part of the application when these kind of scenarios microservice are perfectly match, developers can scale up as per the demand and it will help to give user to smooth experience on using your system. The microservice is very useful when it comes to large size projects which has large amount of users and need to handle the many number of requests.

  • Flexibility in microservice

Developer gets freedom when it comes to choosing perfect tool to a task. They can develop each service using different language or framework without affecting the communication between microservices. This helps developers to choose different technology stack for different microservice.

  • Faster development

Since microservice work independently there is no need to change your entire codebase in order to modify some features. There is ability to change one service, test and deploy it individually this help to deliver the change faster than monolithic. In monolithic system if you want to change some code you should make sure it does not affect another part of your system because monolithic application are tightly coupled because of this reason microservices are more faster on development.

  • Reduce redundant business functionalities.

By using microservice as architecture it helps to remove standard reusing part of the system which used across entire system multiple times as example authentication is one of the good example for this scenario. By developing these kind of parts in systems separately which helps to reduce the redundant. Even you can use some services for different systems across the organization.

  • Increase Resilience.

Since microservices are independent there are certain cases that we need to communicate multiple of services to achieve on output. In such case if the certain service fails and unavailable to complete the output in these cases there is way to complete the full request cycle without failing the request. This method call fail tolerance and we can use circuit breaker pattern to if one of the service is fail to response in time what should be the response. This makes microservice to increase resilience of between services.

  • High quality.

In microservices we break large system into small services and develop those small services separately because of that the development team can focus on developing testing one service at a time. Overall developing and testing gives more effective and precise results.

As a conclusion in choosing microservice architecture as the architecture these are the main concerns had when making decision between monolithic and microservices. When we creating a system like this which does not have specific requirement and one client which means there is access to any one and can access it and after implementation the features given can change and we can add some certain new features as per development of the system. When we consider this reason if we stay with monolithic architecture we need to have hard time when adding new features because it might depend on other domains because everything is in the same system but in microservices one team handle one domain so they are responsible with that domain. There is no need to have idea about entire system and entire code base because of microservices all services are independent so we can manage the changes and even versioned the services and route the request according to the request can route according to that. If there is any major bug and there is huge chance to down the entire system and all the other domains also will not be available to use if we use monolithic. In micro services if one service in not available it does not effect to entire system we can have circuit breaker patterns to avoid when one service try to communicate with the unavailable service. We can just keep other facilities up and running while other service is down. and we can scalable as per the demand we have in time basis not making bottleneck in certain part of application by scaling up high demand part of the application. These are the main reasons took place when make decision microservice architecture.

Choosing spring boot

Spring boot is open source framework and one of the leading framework in java. The reason behind spring boot popularity is spring boot enables building production ready applications and there are some other features like embedded server which helps to run on containers and ability configure the application externally. In compare to other java frameworks spring boot provide some developer friendly features like flexible XML configuration, strong batch processing, database transaction, many range of tools for development, spring boot eases the dependency and comes with embedded servlet container and spring ecosystem have some options like spring data, spring security, spring ORM, spring JDBC, spring cloud and spring web etc. Final thoughts are spring developed to reduce development time and increase on performance and spring easy in development, testing and deployment. Those are the main concerns for choosing spring boot as server side framework.

Choose React as frontend

There are many frontend framework out there to build frontend application. Such Angular, Vue js etc. Also not all of them are suits very well it wary with requirements. But why we using choose react as frontend framework will be discussed lately. Before that if we take look about react where it is started and its journey in brief. Initially Facebook created react.js in 2011 for their own use. Then some of the main platforms started using react then 2013 Facebook made React.js open-sourced project. Then developer start to embrace react.js. Currently react.js used by fortune 500 companies. And there is an active community for support. But react is widely used as a library and it is not a frontend framework. React is component based library and can build reusable component. Here are some reasons to choose react as frontend in this project.

  • Flexibility in React.

The most important thing in react is it is very easy to learn and understand in compare with some other frontend frameworks like Angular. If we compare the amount of time it takes to learn between Angular and react, surely react has fast learning curve. And another thing is react is a library it is not a framework. React build for one motive to build components for web applications. A component can be anything a button or table etc. And another thing that developers and many love to go with react is developers can use react Native to build mobile application. And Electron is another react.js technology which we can use to develop desktop application to mac and windows.

If we have existing application event it is not build using react if we can change small part of that application and that change works, it means we can change whole application into react.js. Event Facebook used this approach initially.

  • Support React has.

React.js is severely used on Facebook and in Instagram. Because of this reason Facebook very much into react.js development and maintaining it. Since react.js open source project the most contributions are done by Facebook fulltime employees in most cases. When react.js has major updates with that major release Facebook release Codemod which automate changes. Codemod is command line tool which change to existing code. When new version release Codemod will replace older components with new specifications. And another good thing is you do not need to develop everything from scratch there are plenty of component libraries out their already well established. And some of them are mentioned below.

  • Fluent UI by Microsoft. It is a component library which gives you the ability to develop your User interface.
  • Material UI components by google, which offers react components that uses Google’s Material UI standards.
  • We can use React Router for routings in our application.

There are many more and all these libraries and tools are important. When you are building a react application then you will find many libraries from react which helps you to achieve it.

  • Performance in React

Even though JavaScript is fast but when it comes to updating the DOM it is slow. React focus to minimize the DOM changes and they figure out most efficient way to it. In react it observe the every component’s state with method call “Virtual DOM”. The moment component’s state changes then react start to compare the change with the existing DOM state. Then react will find most efficient way to update the DOM. Also this mechanism should be very efficient because everyone use application through mobile also and battery and CPU power is very important.

As a conclusion these are the main consideration when it comes choosing react as frontend in this project.

Firebase cloud storage to upload files

Reliability is the one of the main reason for choosing cloud storage to store assignments and submission. One feature is if file stop uploading file due to slow network connection, then process will automatically start when connection stable. When concern about security firebase has doing great and it integrated with firebase authentication which simple authentication mechanism for developers. High scalability is another reason for when our application need more space to scale the storage firebase storage built for Exabyte scale.

Using MySQL as database

MySQL is free and open source database. MySQL is well known to data security and widely used by many applications and there are many reasons like high scalability, high performance, high availability and low cost is another reason to choose MySQL by many. Here are some key features focused on choosing MySQL as database to this project

  • Scalability in MySQL

MySQL provides great scalability facility which you can use to small application to big terabyte data warehouse. And it supports Linux, UNIX and windows platforms also being supported. Since MySQL is open source this allows to customize and add our own requirement to the database server.

  • Performance

With storage engine architecture database specialists have the ability to configure the MySQL database as per the requirement for the application that we going to build. By configure it properly you can just have great performance it does not matter whether your application want high speed transactional process or high volume application which require many queries a day. MySQL achieve these by high speed loading utilities, memory caching technologies, text indexes and many more mechanisms.

  • Availability

Reliability and availability is the most important thing MySQL. And there are many high availability options like master/slave replication configuration to specialize cluster server offerings and some third party availability options are also can be use as solution for MySQL server.

  • Data security.

Data security is most important thing in current world most of the companies consider data as asset of them. MySQL provides many security mechanisms to ensure the data protection. MySQL provide SSH and SSL support are also provide safe and secure connection. There is powerful data encryption and decryption methods to ensure that sensitive data from viewing unauthorized persons. And backup and restore facility is provided by MySQL and there are many third party applications to do this.

These are the main features considered when choosing database to this project and MySQL had most of these features and it is not that expensive when compare to other databases.

And following are some code snippets from the project. This is the code snippet from Authorization server configuration

Following code snippet of Circuit breaker pattern using Hystrix

Following code snippet is configuration of Eureka service discovery.

Following code snippet is implementation of API Gateway.

--

--