The Technical Specification (TS) is the definition of the final result and the goal of your project. The development of the TS is a document that will be formalized and used accordingly by the project owner and project participants.
TYPO3 tools allow you to create any type of site. The introduction of multifunctional solutions ensures the performance of the project at high loads. Visualization of a variety of page templates, online image processing (cropping), sliders, multilingual, scaling and adaptation for mobile devices.
Extensions are designed in a way so that extensions can supplement the core seamlessly. This means that a TYPO3 system will appear as "a whole" while actually being composed of the core application and a set of extensions providing various features. Existing extensions tuning, modification, modernization due to TYPO3 updates and architecture requirements. Support of developed extensions, technical support and maintenance, set up from repository and tuning.
Distributions are full TYPO3 CMS websites ready to be unpacked. They provide an easy quick start for using TYPO3 CMS. A distribution is a special kind of extension enriched with some further data that is loaded or executed upon installing that extension.
Migrate sites of any type to TYPO3. Site migration without loss of design and without loss of content. Getting additional standard options. Combining several sites into one configuration. Updating sites on TYPO3 CMS from old versions to the latest. Content visualization.
Service and update TYPO3 CMS. Advice on site management. Updates used extensions. Server support. Security update and required patches. SEO optimization. Assistance in solving problems important for the customer. SSL certificates of any type. Data protection and security. Optimization of functions, introduction of new features, search and correction of errors.
Virtual Server (VS) - a type of Internet hosting service that allows individuals and organizations to make their website accessible via the World Wide Web (www). Dedicated server (DS) - a type of hosting, in which the client is entirely provided with a separate physical machine (server). The domain name should help people find you on the Internet. Do not worry! We will help you to declare yourself on the Internet.
The general scope of the initiative meeting was focused on integrating GraphQL API into TYPO3 core. Preliminary an internal API — used by developers — shall be established to allow retrieving structured data. Due to possible additional dimensions like languages and workspaces this API must resolve proper relations according to the given context.
To expose that API as a public web interface (e.g. to be used by modern client frameworks like Angular, VueJS or React) additional aspects have to be considered — most important to be named is a permission layer to control access of data exposed to the public. Current ideas are based on Symfony‘s “security-acl” package to grant or deny access on various concepts like table, field, folders, files, etc.
Refining table configuration
During the implementation process of inferencing semantics and implicit behavior of $TCA properties, participants identified the demand of structuring current $TCA much better — aspects related to schema (storage), processing (validation) and representation (rendering in user-interface) are target to be separated further.
Support of JSON data-types
TYPO3's mechanisms for storing relationships supports three different types — comma-separated values (CSV) stored at the originator, foreign keys stored at the referenced subject and many-to-many relations stored in a specific intermediate table (MM).
In the worst case scenarios CSV storage only contains identifiers without storing their concept — thus, the according relationship can only be determined by evaluating the current $TCA settings and is not robust to adjustments. JSON data-types became available with MySQL 5.7 and would allow storing specific information as well as being used in database JOINs as well. Doctrine DBAL already supports these data-types — however there is no cross-database implementation of statements like JSON_CONTAINS to be used in QueryBuilder.
Refining permission layer
The possibility to determine permissions on a per-table or per-table-field level currently is only available for backend users and backend user groups. To broaden the application scope and expose a semi-public endpoint to GraphQL, it is required to ensure that only defined information can be retrieved. Thus, the permission concepts need to be decoupled from backend users and any user record in general. Composer package „symfony/security-acl“ provides a flexible concept, based on access-control-lists (ACL), for dynamically managing those requirements concerning permission handling.
Reducing localization and workspace complexity
Resolving multiple content dimensions like languages and workspaces requires detailed knowledge about the implementation — especially when it comes to resolving relationships — it has been mentioned earlier already that these can be persisted as comma-separated values, foreign keys and using an intermediate table. Correct information can only be retrieved by following the principles of retrieving „default values“ and overlaying them for each according context (language and/or workspace). To remove query complexity and possibly allow direct queries — e.g. using JOINs — the semantical meaning of workspace placeholders shall be reevaluated again.
Be part of it.
All in all the participants were able to define next steps for the persistence initiative, shape the concepts to be used and developed a preliminary roadmap. Want to be part of it?