# Crosscutting Concepts
# Domain concepts
- WikibaseDataModel (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
There are several applications which are written in Vue (opens new window) and TypeScript (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.
# 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.
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
How / where to store and retrieve data.
# Process control
# Communication and integration
How to integrate with other systems, how to communicate (i.e. sync, async, pub-sub…)
# Exception and error handling
What errors to handle, how to handle exceptional situations.
# Parallization and threading
How to parallelize tasks, how to create/spawn/manage processes.
# Plausibility checks and validation
i.e. client-side validation, how to verify/check data, input, results.
# Business rules
i.e. how to use a rule-engine, how to implement/configure business rules, how to change those…
# Batch processing
How to process data in batches (i.e. offline processing).
How to create reports, how to gather the required data, how to render the results.
# Development concepts
# Build, test, deploy
# Code generation
# Operational concepts
# Monitoring, Logging
# High Availability
# Load balancing