Roadmap
- Roadmap
- Features Working
- High Priority
- General
- Optimization
- Deployment
- Search
- Calendar
- Signal
- Files
- People
- Security
- New feature modules
Features Working
Core:
- Security
- content is encrypted at rest and no available to the server when logged out.
- Secure authentication required (passkey or security key)
- No third party services or content
- Best practices for rails security
- Full text search
- Search Events, Files, People, including encrypted fields and content.
- Changes
- View recent changes on landing pages
- View all changes for a workspace or self
- Sharing
- By default, workspace members’ have access, no one else does.
- Specific resource may be shared via time-limited unique URLs
- Centrally track all the shared URLs for a workspace.
- Shared URLs may grant view, comment, edit, or admin access
- People
- allow users to have multiple profiles and choose which one is associated with each workspace.
- workspaces have members, contacts, admins.
- Admins may invite people to join a workspace via a join URL
- Under the hood
- Attachments are encrypted and stored in S3-compatible object storage service.
- Background job processing for long tasks (encrypted in db)
Modules:
- Files
- Files stored in a familiar folder tree
- Basic file operations: upload, download, rename, move, trash/untrash, purge.
- Batch or single file operations
- Collaborative editing of documents, spreadsheets, presentations, pdf via OnlyOffice Docs.
- File versioning
- Preview generation for images and office documents
- Nice uploads: upload progress bar, drag and drop, multi files and nested folders
- auto-refresh when a file or folder changes in another window or by another user.
- partial drag and drop to move files
- Events
- One time events and recurring calendar events.
- View events by month, week, or day.
High Priority
- Separate login username from profile usernames
- Check that workflow for admins, editors, viewers make sense.
- Export folders to a zip file.
- Actually useful events (attendance, better UI, delete/edit event in a series, etc)
- Better profile controls (choose default profile, change profile for a workspace).
General
- Ability to add user comments to records.
- Ability to pin records to the dashboard.
- Ability to star records and search only starred records.
- Gracefully render obnoxious user input (e.g. very long display names)
- Patch onlyoffice editors to remove 20 person limit
- Better theme
Optimization
- Implement a service worker to cache images in memory, since we set a very strict no-store cache header.
- Enable view caching where appropriate
- Add indexes to database where real world usage says they are needed
- Reduce javascript and css file sizes by removing the parts of bootstrap we don’t use
- ActionCable optimization:
- Replace ActionCable with AnyCable. https://github.com/anycable/anycable-rails
- Stand alone Cable server https://guides.rubyonrails.org/action_cable_overview.html#running-standalone-cable-servers
- AnyCable offers a “whisper” feature for publishing transient broadcasts between clients, without touching your Rails backend. This is ideal for cursor position and Y.js. Add
whisper: trueto your Rails channels when using this Y-rb and AnyCable. https://docs.anycable.io/rails/extensions?id=whispering
Deployment
- infrastructure-as-code container-based deployment recipe
- Multiple postgres database instances
- Multiple web app instances
- Multiple TLS termination instances
- Multiple onlyoffice editor instances
(requires shard-key https://api.onlyoffice.com/docs/docs-api/get-started/configuration/shard-key/) - stand alone cable server https://guides.rubyonrails.org/action_cable_overview.html#running-standalone-cable-servers
Search
- index content of office documents
- index content of PDF documents
- use OCR to index content of raster PDF documents
Calendar
- Calendar categories or projects
- Event attendees
- Event discussion
- Meeting scheduler
- import / export ical
Signal
- Invite to join via signal
- Get notifications via signal
Files
- edit markdown with blocknote https://www.openproject.org/blog/real-time-collaboration-in-documents/
- cut/copy/paste to move/copy files.
- download folder to zip file
- what happens when you upload a new version of a file with a different content type? i think it should not be allowed, but add a convert button?
- efficient versions: merge versions when checksums have not changed and when close in time.
- Enable converting between file formats using either libreoffice or onlyoffice
- move/copy files between workspaces?
- Do lazy purging via a background job.
- Do lazy preview generate via a background job.
- Do lazy archive download generation via a background job.
- Generate previews using a remote service (both for security and performance)
- Support resumable uploads.
https://github.com/stakach/Resumable-Uploads
https://javascript.info/resume-upload - Support better drag and drop file moving. Some possible drop targets are missing.
- Support historical snapshotting of the entire directory tree structure (depends on deduplication).
- Support deduplication (actually pretty easy).
- Support storing diff blobs instead of full change for past versions https://github.com/halostatue/diff-lcs
- Show diffs for text or markdown files: https://github.com/samg/diffy
- Support editing raster images (non-collaboratively):
- https://github.com/nhn/tui.image-editor
- https://github.com/scaleflex/filerobot-image-editor
People
- Custom fields for people
- Build custom lists of people
- Show activity for a person
Security
- Security audit
- Automatically terminate session when the last tab is closed using a web worker.
New feature modules
Forms
- Create simple forms
- Form can be used for new member intake
- Send form via email & signal
Chat
- Simple real time chat, multiple channels for each workspace, including 1:1 chat.
CMS
- Very simple public static web pages for a workspace.
Tasks
- Task management
- drag/drop Kanban board
Notes
- A notes section, separate from files, that is sort of a hierarchical wiki with
a collaborative markdown editor. Something like a lightweight Notion.
Polls/Discussion
- A lightweight loomio-like discussion board with integrated group decision making tools.