Technical Architecture

Last modified by Manuel Leduc on 2023/10/16 11:17

The technical architecture of the software is very important as it will drive how it can be developed, extended and the general behavior. The technologies (language, framework) that are used will also drive the usability, the user experience, as well as the accessibility support or the security.

During the brainstormings, there are some discussion about the technical architecture. The goal of this document is to summarize that and precise the architecture.

Cristal Wiki UI / Client



















































Cristal Wiki UI / Client
The JS backend exposes endpoints similar to
the XWiki script services to the frontend
The JS backend exposes endpoints similar to the XWiki script services to the frontend
JS Backend - Native Javascript or compilable JS / WebAssembly
Provides the same concepts as in XWiki in terms of component-based architecture and separation between API and implementation.
JS Backend - Native Javascript or compilable JS / WebAssemblyProvides the same concepts as in XWiki in terms of component-based architecture and separation between API and implementation.
NextCloud
NextCloud
XWiki
XWiki
CryptPad
CryptPad
File system
File system
WebDAV
WebDAV
WebDAV driver ?
WebDAV driver ?
HTTP
HTTP
XWiki driver
XWiki driver
HTTP
HTTP
CryptPad driver
CryptPad driver
System calls
System calls
FS driver
FS driver
Backend module API
Backend module API





JS Frontend - Based on VueJS Components
JS Frontend - Based on VueJS Components
Replication module API
Replication module API
Replication module
Default impl
Replication module Default impl
Authentication
Authentication
Extensions
Extensions
Rendering
Rendering
Extension Repository
Extension Repository
Git Servers
Git Servers
Editor Services incl Realtime
Editor Services incl Realtime
Livedata Services
Livedata Services
Storage
StorageStorage
Component
Manager ?
Component Manager ?
UI Ext.
UI Ext.UI Ext.
Macros
Macros
Storage
Storage
Auth
Auth
Design System
Design System
Page View
Page View
Popup
Popup
Panels
Panels
Login
Login
Sidebar
Sidebar
Editors
Editors
UIExtension Points
UIExtension Points
Menu
Menu
Macros
Macros
External Rendering
External Rendering
Macro Services
Macro Services
External Rendering
API Access
External Rendering API Access
Configuration
Configuration

Key Technical requirements

  • Strong development methodology
    • API based development
    • Modularity
    • Test-driven development
    • Accessibility by design
    • Security by design
  • Great UX
  • Supporting Modularity & Extensions and overriding of features, including UI elements
    • Support UIX, Skining, Theming
    • Dynamic loading of extensions
  • Reduce dependency on non standard Framework
    • Making sure to isolate dependencies
    • Using standards as much as possible
  • Embeddable
    • We can use different backends (even when it means having less features)
    • Unsupported features can be disabled automatically
  • Realtime by design
    • Supporting cryptpad's realtime too
  • No-JS Fallback (at least for viewing)
  • Provide a compatibility path with XWiki

 

Get Connected