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.
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