Introduction
Ergodotisi is a web application to be built for all devices supporting modern browsers. The backend system built for this web application will also act as the backend system for the upcoming mobile application.
Project Architecture
The Ergodotisi platform will be built on the following tech stack:
- Backend: Drupal Commerce
- Backend Unit Testing: PHPUnit
- Backend Static Analysis Testing: PHPStan
- Backend Coding Standards Testing and Linting Tool: PHP_CodeSniffer
- REST API Layer: Built on Drupal using JSON:API module
- Design: Figma
- Frontend & Middleware: Next.js with Next.js for Drupal written in TypeScript
- Frontend Component UDS Library: Storybook
- Frontend Unit Testing: Jest
- Frontend E2E Testing: Cypress
- Frontend Accessibility Testing: Axe
- Frontend Story Workflows: Chromatic
- Frontend Linting Tool: ESLint
- VCS: GitLab with multiple repositories
- CI/CD: Jetbrains TeamCity
- Hosting: Tencent Cloud Services (CVM, TKE, EKS, TCR, CDB, CRS, CBS and many more)
- API Collection: Postman
- Documentation: Docusaurus versioned using Gitlab as well
Backend Functionality
All backend functionality will be added in the form of custom modules only, with the following rules:
- Related modules will be grouped into parent modules.
- All modules will include any entity creation and configuration necessary for their function in the form of YAML files as well as default data to populate anything vital.
- All modules will include the test functions which will run during the CI/CD processes set up on TeamCity.
- Uninstalling a module should remove all functionality related to that module and should not leave any connected functionality from other modules broken. - Therefore modularity and independence even when there is a relationship between modules is crucial.
- Each module should have its own git repository grouped under the Ergodotisi project and should be added as a git submodule inside the codebase.