User Stories
Last modified by Manuel Leduc on 2023/10/16 11:18
This document will list the user stories of the Cristal User Interface.
User Stories
are features required for the MVP
Standard User Stories
Entry point :
- EP1
: As a user, I am able to load the UI of Cristal from a website. This website won't store anything in its backend. It is just a server that serves the javascript resources necessary to run the application (similar to element.io web app)
- EP2
: As a user, I am able to load the UI of Cristal from an application that integrates Cristal : eg. Nextcloud, CryptPad, … . This UI will be automatically configured to be connected to the backend from which it was loaded.
- EP3 : As a user, I am able to download a heavy client containing the Cristal UI on my laptop (similar to element-desktop)
Backend configuration :
- BC1 : As a user, I am able to configure my Cristal Wiki to connect to a specific backend by providing a URL to this backend. From the URL, Cristal is able to infer the type of backend
- BC2 : As a user, I am able to configure my Cristal Wiki to "create" content
View functions
- V1
: As a user I can view page stored in a backend
- V1.1
: The file from the backend it's transformed in JSON-LD in the client if the backend does not support the JSON-LD format
- V1.2
: Each backend supported in the MVP should support a minimal set of meta data (creator, last updater, creation date, last update data, location)
- V2.1
: Markdown syntax rendering is supported on the client side
- V2.2
: Server side rendering on XWIki document is supported for XWiki backend
- V2.3: XWiki Syntax 2.1 rendering is supported on the client side
- V2.4
: Links to other documents are supported
- V2.5
: Links to attachments are supported
- V4
: Macros can be viewed using client side rendering
- V4.1
: Macros fallback to server rendering is supported with XWiki
- V4.2: Macro server rendering could support a local partial rendering
- V5
: Viewing comments is possible if the backend supports it
- V5.1 Viewing annotations is possible
Macro support (local)
- M1
: warning/info/top
- M2
: code
- M3
: TODO Macro list for MVP
- M4: More macros
Editor functions
- E1
: Cristal supports multiple syntaxes in Wysiwyg Editing
- E1.1
: Editing using CKEditor of XWiki Syntax is supported
- E1.2: Editing using CKEditor of Markdown Syntax is supported
- E1.3
: Editing using XWiki bundled Editor is supported (If possible, this would allow supporting all XWiki Editing feature without rewriting an editor)
- E1.4: Editing using a block editor is possible
- E2: Realtime editing is possible
- E3: / is supported to find macros (both client and server side available macros)
- E4
: Image inserting is supported (uploading images to the backend)
- E4.1: Image resizing is possible
- E4.2: Image positioning is possible
- E5
: Major features of the current XWiki editor are available
- E6: All features of the current XWiki editor are available
- E7
: Attachment upload is possible
- E8: Annotations can be added
- E8.1: Annotations are supported in Edit mode
- E9: Editing is possible offline
Search function
- S1
: Cristal provides a search interface
- S1.1
: Local Search based on title is possible
- S1.2: Local Search on text content is possible (on available files)
- S1.3: Local Search using a complex index is possible
- S2
: Search using backend search is possible
- S2.1: XWiki backend search supports facets
Navigation
- N1
: A navigation Tree is available to view the wiki
- N2
: A basic breadcrumb is available to view the location
- N2.1: An advanced breadcrumb is available (similar to XWiki)
- N3; Document information tabs are available
- N4: Drag and Drop is supported in the Tree view
LiveData (supported on XWiki or with local JSON static source).
- LD1 : Live Data Viewing is supported (on part with current XWiki), reusing the XWiki VueJS module
- LD1.1: Live Data Viewing is supported (main features of Notion available)
- LD2: Live Data editing is supported (on par with current XWiki)
- LD2.1: Live Data editing is supported (main features of Notion are available)
Advanced Features
- AD1
: Delete is possible
- AD2
: Basic Move/Rename is possible
- AD2.1: Advanced Move/Rename is possible (with XWiki parameters)
- AD3: UI allows to see the synchronization status if offline changes are not synced
Design
- D1
: Cristal has a design system
- D2
: Cristal is based on a well known CSS/LESS/design system framework with long term survival chances
- D3: It is possible to support color themes
- D4: Editing is in-place editing
Technical Architecture User Stories
- T1
: Cristal is based on modern technologies
- T2
: Cristal is modular and based on extensions
- T2.1
: Cristal supports UI/JS/Style/Macro extensions in a similar way than XWiki
- T3: Cristal supported realtime editing if the service is available for the backend
- T3.1: For backends not natively supporting realtime editing, XWiki could provide a server for realtime sync between users
- T3.2: XWiki would natively support realtime editing of XWiki documents in Cristal
- T3.3: XWiki supports realtime editing of document in Cristal including with a user editing in XWiki's current realtime editor
- T4
: Cristal architecture supports offline mode to view and edit pages which have already been viewed
- T4.1: Configuration would allow to decide which part of XWiki is update regularly as a backend process
- T4.2: Cristal would first load a local copy of a page and then update it in the backend in case the page has been modified on the server
- T5
: Features of Cristal can be activated/deactivated by configuration, on the server, or locally
- T5.1: Users can override preferences
- T5.2: Preferences can depend on the location in the Wiki
XWiki User Stories
- X1
: XWiki is available as a backend for Cristal
- X2
: XWiki Syntax 2.1 is supported, using server side rendering
- X2.1: XWiki Syntax 2.1 is supported, using client side rendering
- X3
: XWiki Macros are all supported by fallbacking to server rendering of Macros if the macro is not supported on the client side
- X4
: XWiki Search using SOLR is supported as a search
- X4.1: XWiki Search supports facet
- X5
: XWiki is able to natively provide JSON-LD files to Cristal on XWiki 16.x or using an extension
- X5.1
: Cristal can load native XWiki files on older versions of XWiki or one that does not have the extension
Admin User Stories
- A1
: It is possible to deploy Cristal in XWiki as an additional UI (Cristal extension)
- A2: XWiki Admin can configure Cristal deployed in XWiki
- A2.1 : As a backend administrator, I am able to allow or deny users to configure the Cristal to work with backends different than the one I am providing
- A3: If Cristal is deployed in XWiki, XWiki can make extensions available to the XWiki admin for deployment in the Wiki UI deployed in XWiki
Developer User Stories
- D1
: As a developer I'm able to extend Cristal by building extensions which can be easily deployed in Cristal
- D2
: It is possible to developer an extension as a Git project using standard technologies
- D3: It is possible to publish your extension by an easy release process to make the extension available in an Extension Repository to all Cristal users
- D4
: A developer can easily test an extension from a local directory
Security
- S1
: Support Authentication for user
- S1.1
: Propose authentication if viewing page requires it
- S1.2
: Propose authentication if editing a page requires it
- S1.3: Do not show features if the user does not have the right on that feature
- S2
: Auth architecture should support Single Sign On
- S2.1
: Auth with XWiki should work with OIDC
- S3
: Cristal protects from XSS attacks
- S4
: Developer features don't create security issue
- S5
: Rights on documents are properly enforced
- S6: Rights can be viewed and edited if the backends supports it
Minimum Viable Product
The MVP features are the ones with
- Be able to create new pages (simple pages with title and content)
- Be able to create links between pages
- Be able to edit using XWiki syntax
- Be able to edit using Markdown syntax
- Be able to save pages on 1 supported backend
- Implies that we need to be authenticated with the backend
- Be able to display a navigation tree that allows to switch from one page to another
- Be able to show who is editing a document in the UI (the author)
- Get an information about the user identity from the backend
- Show it in the UI
- Use this information to save the contents