# Crosscutting Concepts
# Domain concepts
- WikibaseDataModel (opens new window)
- WikibaseDataModelJavaScript (opens new window)
- WikibaseDataModelTypes (opens new window)
You can read more about Wikibase's data model in the Glossary.
# User Experience concepts (UX)
# User Interface
User interfaces which were built prior to 2017 use either OOUI (opens new window) or jQuery UI (opens new window).
There are several applications which are written in Vue (opens new window) and TypeScript (opens new window).
JavaScript and CSS dependencies are managed through npm. Optimization and minification of files is done through Webpack (opens new window).
There is a central Vue components library in development as part of the Wikidata/Wikibase Design System (opens new window). In the future, ideally, all frontend components will be using it.
The project Termbox, which delivers the terms section of an item page on mobile, uses Vue and vue-server-renderer (opens new window) to achieve server side rendering (opens new window).
# Internationalization (i18n)
The system is made usable in international settings in the following ways:
- by providing internationalized content via mediawiki's i18n mechanism (opens new window)
- by designing and developing for both left-to-right and right-to-left scripts
# Security concepts
The development conforms to established security best practices (opens new window).
Security code review is performed by WMF's Security Team (opens new window) for every new feature.
# Architecture and design patterns
Recurring patterns within the system.
# Dispatching
Wikibase, particularly Wikibase Repository and Wikibase Client, make use of a Dynamic Dispatch (opens new window) pattern.
This is most notably used for switching internal service implementations based on the type of entity being interacted with.
A few different implementations of the dispatching pattern currently exist, the most notable difference being:
- Default / fallback implementation available in some implementations
- Callbacks that act as factory methods passed into dispatching code, rather than concrete implementations (see Wikibase's Topics/EntityTypes (opens new window))
- Multiple implementations able to be called for a single entity type
# “Under-the-hood” concepts
# Persistency
How / where to store and retrieve data.
TBD
# Communication and integration
How to integrate with other systems, how to communicate (i.e. sync, async, pub-sub…)
TBD
# Development concepts
# Build, test, deploy
Common tool chains, and patterns.
TBD.
# Configurability
Aim of having white label services, for generic Wikibase usage.
TBD.