LimeSurvey architecture
From LimeSurvey Manual
This is the main public document for LimeSurvey's architecture
Overview
todo, constraints
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
- Yarn
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
Business risk
Internal
Quality attributes
Maintainability, easy to deploy, testability
Technology stack
Dependency management, packaging, plugin
todo
Views
4+1 view model?
Domain
A simple domain diagram over LimeSurvey:
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)
Flow and state
automata between states
admin flow diagram? what makes sense to document? create survey process?
API design
todo
Security
todo