Actions

LimeSurvey architecture: Difference between revisions

From LimeSurvey Manual

Line 108: Line 108:


[https://github.com/olleharstedt/diagrams.net/blob/main/LS%20Arch.drawio Source].
[https://github.com/olleharstedt/diagrams.net/blob/main/LS%20Arch.drawio Source].
Overview of future refactoring efforts.


[[File:ls_arch_refactor.png]]
[[File:ls_arch_refactor.png]]

Revision as of 15:06, 25 August 2021

This is the main public document for LimeSurvey's architecture

Overview

todo, constraints

This is the architectural documentation for the LimeSurvey application. It does not document the ecosystem surrounding it.

Vision

todo

Technology stack

Programming languages:

  • PHP 7.2+
  • JavaScript ES6 (admin) and IE11 compatible (survey taking)
  • CSS, HTML
  • XML, JSON

Frameworks:

  • Yii 1.1
  • jQuery
  • Vue 1
  • PHPUnit

Tools:

  • Git
  • GitHub Actions
  • Psalm
  • CodeSniffer
  • MessDetector
  • Scrutinizer
  • Selenium, geckodriver

Dependency management:

  • Manually (should be refactored)
  • Yarn
  • Composer

Libraries:

  • CKEditor
  • kcfinder
  • PDF?
  • Sodium
  • Twig
  • PHPMailer
  • pclzip

Risks

As defined in the code quality guide.

Risk identification, analysis, mitigation, monitor.

Product risk

These risks are considering the individual LimeSurvey user or admin.

  • Data loss (known or unknown)
  • Unauthorized data access
  • Blocking bugs (that leads to data loss)

Project risk

todo

  • Communication
  • Regressions and lack of testing

Business risk

Internal

Quality attributes

Maintainability, easy to deploy, testability

Views

4+1 view model?

Domain

A simple domain diagram over LimeSurvey:

Source.

Layers

LimeSurvey uses a basic, monolithic MVC layered architecture.

  • View layer, serving HTML, JSON or XML to the calling part (can be browser or local API machine)
  • Controller layer, gluing parts together from the other layers
  • Business logic layer, calculating business rules, should be fully unit-testable
  • Database storage layer (also includes domain entity validation)

Refactoring should be focused on strengthening the separation between the layers.

Source.

Overview of future refactoring efforts.

Flow and state

automata between states

admin flow diagram? what makes sense to document? create survey process?

API design

todo

Security

todo