Functional requirements
1. Create document
- Users should be able to create documents online.
2. Share document
- Users should be able to share private (inviting collaborators) or public documents.
3. Authorization control
- Users should be able to edit each collaborator permissions (read-only/write) to their private shared documents.
4. Real-time Collaboration: Multiple users editing simultaneously
-
Users should be able to collaborate online and see the changes from everyone else live (near-real-time).
-
Users should be able to collaborate to the same document simultaneously without overriding other person's changes.
-
Users should be able to undo their own changes.
-
Users should be able to undo global changes (when online).
-
Highlight users positions and collaborations in near-real-time.
5. Synchronize and resolve conflicts automatically
- Synchronization should occour automatically without the needing to review or merge conflitcts manually.
6. Offline support: Avoid data loss
- Users should be able to save their editing locally when they have no internet connectivity and then synchronize the changes when they get online again.
7. Supported media type
- Should support collaborative editing only for text documents.
- Should support export method to different formats such as .pdf, .txt, .docx and .md.
8. Support bigger documents
- Should support not only small documents of a few pages, but also bigger documents with many pages.
9. Version control
- Provide a version control so users can restore from a specific version.