Skip to main content

2021

Assignee: Ilias Kyranas

Mentor: Ioannis Skitsas

Abstract#

The year 2021 is the first year Sastix CMS made it to GSoC projects. The Sastix-CMS is a CMS solution based on the robust Spring Boot framework. Up until now the CMS provided a REST API offering functionality for managing resources, using a distributed cache system to consume them. The goal of this project is consisted of creating a frontend client to consume resources from the CMS server and providing the monitoring capabilities to handle high volumes of traffic. The frontend implementation should provide a common interface for Administrators and Content Creators/Consumers of the Sastix CMS and extend the current capabilities of the server to support multitenant API calls. The provided solution will support multirole access and authorization, simple, secure flows and multi-device deployment using Flutter. The solution will provide monitoring solutions for the application and scalability using Docker and Kubernetes. The work includes tools to benchmark the deployments, deployment artifacts to easily deploy the stack and thorough documentation of the functionality using Docusaurus.

Implementation Stories#

The central objectives of the deliverable can be grouped in the implementation "Stories" (S) provided below:

  • Frontend implementation (S1).
  • User management, authentication and authorization (S2).
  • Extension of backend features (S3).
  • Monitoring and alerts (S4).
  • Performance improvements, testing and deployment artifacts (S5).
info

In the community bonding period of GSoC it was agreed by the mentor and the assignee to use Flutter instead of the React-Next.js framework as described in the proposal.

During the period of GSoC selection of organizations and students Flutter released a version production-ready for the web. Using a single codebase the Flutter client could target all the major platforms. All Next.js features (internationalization, image optimization, SEO features) are supported by the Flutter ecosystem and native applications will be deployed, avoiding the Javascript bridge overhead.

The GitHub repository#

The repository of the project is dedicated for the GSoC period.

  • The implementation stories are organized in issues and assigned to the project GSoC-2021 for quick reference.

  • All pull requests for GSoC 2021 can be found here.

  • For the implementation Git Flow was used and all Pull Requests target the develop branch.

  • All Pull Requests are squashed to one commit so that the history of the repository is cleaner.

At the end of the project all code is merged in the develop branch of the dedicated repository which is synced with the original repository of the project. No pull requests were left out and a major release is coming soon based on the changes of the project.

Quick start#

During the GSoC period work was done to easily set up a development environment and to quickly deploy the CMS stack with docker-compose. A quickstart for both could be:

  • Development: Setup development environment as described.
  • Production: Setup a quick production build with Docker as described using the PC's IP.

In addition, the current site was built from scratch to support structured and extensive documentation. This site's source code is committed to the Git repository and is going to be deployed for the original repository of the project, too.

Pull Requests#

Add Keycloak deployment artifacts and authentication #32#

This pull request provides the Keycloak deployment artifacts and the needed changes for the CMS server to support authentication and authorization of the requests.

info
  • User management (S2).
  • Extension of backend features (S3).

Add monitoring and authentication deployment artifacts #33#

This pull request provides changes to enable monitoring, the deployment of the components including the reverse proxy with TLS support and the initialization of the Flutter application.

info
  • Frontend implementation (S1).
  • Monitoring and alerts (S4).

Initialize Flutter client with Keycloak #34#

This pull request contains changes to the frontent cliend, including support OpenID connections.

info

Frontend implementation (S1).

Add search functionality to CMS server with authorization option #35#

This pull request contains changes to the CMS server to support filtering of the resources based on request parameters.

info

Extension of backend features (S3).

Add benchmarking capabilities to CMS repo #36#

These changes provide a method to benchmark a deployment of the CMS server.

info

Performance improvement and deployment (S5).

Add theming, internationalization, bloc state management #37#

This pull request contains changes in the Flutter client to support:

  • Theming by the administrator.
  • The ability to change themes by the user.
  • Internationalization using the i10n (supported by Flutter).
  • State management using BLoC.
info

Frontend implementation (S1).

Refactor the installation scripts and add documentation #39#

This pull request contains changes in the installation scripts to support the added frontend functionality and to the documentation site to add new information.

info

Performance improvement and deployment (S5).

Future plans#

The future plans for the project include:

  • Deployment of needed Docker images to a public repository.
  • A standardized way to deploy to Kubernetes infrastructures.
  • Additions to the frontend client.
  • Extensions of backend features in order to support more broad scenarios.