Scalda Studentenportaal

Submitted by
Finalist
The Case
Category
Social / Community
Short introduction
The Scalda student, parent and employee portals are built in a single Drupal 8 backend with custom REST web services and an Angular decoupled front-end.

Using this portal, users can access all relevant information, like their schedule, grades, exams, news etc. and receive notifications for important events related to their study or class.
Launch date
Background
As an educational institute Scalda wanted to be able to inform students, employees and students’ parents, about the school itself, student grades, exam dates, schedules, etcetera. Scalda therefore developed a portal strategy to inform their users in a transparent and personal way.
From the start Scalda also made it clear that they would like to be able to develop an app that connects to the portals so users can receive push notifications when new information is available. We developed a Drupal CMS with custom REST services and a decoupled front-end so it’s relatively easy to connect future apps or front-ends to the Drupal CMS.
Objectives
There were multiple main objectives:
The first and most paramount objective was to combine the data collected from multiple systems and provide a single platform where the users can find all relevant information.
The second most important objective was to provide a user friendly way for hundreds of editors to manage all content , and target all content to the right audience. In the developed communication strategy, it is imporant to be able to target a single class of student, but also target more generic groups of users based on things like their study, location or cluster.
Last, but not least, the user experience was very important. The portal replaces the need for users to interact with several other systems, which is already a big improvement. The designs and UX were developed by an external design agency and implemented using Angular.
Results
We provided a single platform where the users can find all relevant information (news, grades, exams, schedules, events, projects) in a personalized way. The portal replaces the need for users to interact with several other systems. The advantage for the users is a quick overview of all the information they need to accomplish tasks and activities faster and easier than before. They do this in a nice and user friendly portal all in the look and feel of the Scalda online identity. This results in a more efficient way of working and studying and a higher student and employee satisfaction.

With the new Drupal 8 based CMS, the client has access to a clean and easy-to-work-with interface. The client has the ability to create groups and manage all users, roles and permissions as desired. Besides the group management, the client has an extensive set of pre-designed options to create the content in a flexible way.

All data collected from the custom web services is available at the front-end according to the clients’ liking. Because of the successful decoupling of front- and backend, we can easily develop new ways of showing content to the end user; these can be phone apps or other subsites.
Technical challenges
Multiple challenges surfaced quickly. The source of the biggest challenges was the introduction of Drupal 8 in combination with a decoupled front-end. We were tasked with collecting data from custom web services and developing a custom API to provide all the data to the frontend. Properly utilizing the great benefits brought by Drupal 8 and Angular was an exciting challenge.

A lot of Drupal 8 modules were not stable yet. We had to install/write a lot of patches to make everything work as it should. Modules like groups, samlauth, simple_oauth, paragraphs all provides small challenges. Upgrading the modules sometimes meant we had to do some rework, but in the end the important issues were fixed and a lot of the modules actually became stable (or are very close to being stable).

The external data we integrated was provided by different systems. They all had their own API’s. Together with the client we design a microservice architecture to provide a extra layer of abstraction to combine all source data outside of the Drupal system. This moved a lot of complexity and makes the system more scalable and easy to maintain.

Besides that, we adopted Angular 2 right after it became stable, we also faced the difficulties of a fast expanding and developing framework. When we started the first release of Angular 2 had just been made available (besides lots of release candidates before that). Also, the Angular-CLI tool was still in active development and tried to keep up with the development of Angular itself.

After a few months we upgraded Angular and Angular-CLI a couple of times with each time breaking changes that have seem to settled.
Challenges in (combination of) modules
The Group module brought us great functionality as well as some challenges. Because the Group module is still in the beta stage, there were some huge shortcomings we needed to improve or develop. Besides the Group module, we also needed the Groupmenu module; there was a lot of work being done, but to make it work smooth we used the existing patches to rewrite the module for Drupal 8. Also the Ggroup submodules (for having subgroups) was a work in progress. We had to rewrite parts of this module and added some (much wanted) features to adopt it to our needs. We used the relatively new Samlauth module to implement SAML based single sign on for all users. Providing a great experience for reusable media also turned out to be a challenge with the wide range of different modules you need to configure to work together.
Contribution form the project to the Drupal-community
Tested a lot of patches and created a lot of issues. Some of them were (partly) fixed in this project. The list below contains all issues we created patches for within the project.

FortyTwo Admin theme - several design improvements and bugfixes

Group module - several usability fixes
https://www.drupal.org/node/2797793
https://www.drupal.org/node/2683039
https://www.drupal.org/node/2865085
https://www.drupal.org/node/2867858
https://www.drupal.org/node/2867839
https://www.drupal.org/node/2867802

Group subgroup module - adding functionality such as permission propagation -
https://www.drupal.org/node/2736233

Groupmenu module - completing the functionality for providing menu’s per group -
https://www.drupal.org/node/2716443

Samlauth module - added features for easy SAML integration
https://www.drupal.org/node/2816991
https://www.drupal.org/node/2670118
https://www.drupal.org/node/2817005
https://www.drupal.org/node/2816995
https://www.drupal.org/node/2816997

Simple oauth module - fixed issues
https://www.drupal.org/node/2858161
https://www.drupal.org/node/2821436

Media module in core - partly contributed with project time -
https://www.drupal.org/node/2831274

Viewsreference module - added option to limit results -
https://www.drupal.org/node/2860736

Paragraphs module - added fix to alter paragraph forms more easily
https://www.drupal.org/node/2868155
Name client
Scalda
What does the client think about the project?
We are very pleased with how Drupal and the decoupled front-end were implemented. It makes the portal very flexible for future goals.
Screenshot