Key Features
Rich Text Editing
Full-featured document editor with text formatting, tables, images, code blocks, and more.
Real-Time Collaboration
Collaborate on documents with other users while maintaining end-to-end encryption.
ProseMirror Engine
Built on ProseMirror and Tiptap for extensible, robust document editing.
Document Encryption
Every document is encrypted client-side before being stored on servers.
Editor Features
Skiff Pages is built on theskiff-prosemirror library, which provides a comprehensive set of editing capabilities.
Text Formatting
Basic Formatting
Basic Formatting
Standard text styling options:
- Bold (⌘B / Ctrl+B)
- Italic (⌘I / Ctrl+I)
- Underline (⌘U / Ctrl+U)
StrikethroughCode(inline code formatting)- Text color and highlighting
- Font size adjustment
- Font family selection
Paragraph Formatting
Paragraph Formatting
Structure your documents:
- Headings (H1, H2, H3, H4, H5, H6)
- Paragraphs with spacing control
- Blockquotes for citations
- Code blocks with syntax highlighting
- Horizontal rules (dividers)
- Text alignment (left, center, right, justify)
Lists
Lists
Multiple list types:
- Bullet lists (unordered)
- Numbered lists (ordered)
- Task lists with checkboxes
- Nested lists with indentation
- Toggle lists for collapsible sections
Advanced Content
Tables
Create and edit sophisticated tables:- Insert tables with custom rows and columns
- Merge and split cells
- Table headers with distinct styling
- Row and column operations (insert, delete, move)
- Cell background colors
- Resize columns and rows
- Table borders and styling
Images
Insert and manage images in documents:- Upload images from local files
- Drag and drop image insertion
- Resize images within documents
- Image alignment options
- Alt text for accessibility
- Encrypted image storage
Links
Hyperlink management:- Insert links to external URLs
- Link to other Skiff documents
- Edit link URLs and display text
- Remove links
- Link tooltip preview
- Automatic link sanitization for security
Math and Special Content
- Mathematical equations (LaTeX support)
- File embeds from Skiff Drive
- Bookmarks for internal references
- Mentions for user collaboration
- Placeholders for dynamic content
ProseMirror Architecture
Skiff Pages is built on the powerful ProseMirror editing framework.Core Libraries
Skiff ProseMirror Extensions
Theskiff-prosemirror library extends ProseMirror with custom nodes and marks:
Node Types:
DocNodeSpec: Root document nodeParagraphNodeSpec: Standard paragraphsHeadingNodeSpec: H1-H6 headingsBlockquoteNodeSpec: Quote blocksCodeBlockNodeSpec: Code with syntax highlightingBulletListNodeSpec/OrderedListNodeSpec: ListsListItemNodeSpec: List itemsTaskItemNodeSpec: Checkbox itemsTodoListNodeSpec: Task listsTableNodesSpecs: Table, row, cell, headerImageNodeSpec: Inline and block imagesHorizontalRuleNodeSpec: DividersMathNodeSpecs: Mathematical equationsFileEmbedNodeSpec: Drive file embedsMentionNodeSpec: User mentions
StrongMarkSpec: Bold textEMMarkSpec: Italic textTextUnderlineMarkSpec: UnderlineStrikeMarkSpec: StrikethroughCodeMarkSpec: Inline codeLinkMarkSpec: HyperlinksTextColorMarkSpec: Text colorTextHighlightMarkSpec: Background highlightingFontSizeMarkSpec: Font sizeFontTypeMarkSpec: Font familyTextSelectionMarkSpec: Selection highlightsTextSuperMarkSpec: SuperscriptSpacerMarkSpec: Spacing control
Editor Plugins
Skiff Pages uses numerous ProseMirror plugins:EditorPageLayoutPlugin: Page layout and formattingContentPlaceholderPlugin: Show placeholder textCursorPlaceholderPlugin: Cursor state managementLinkTooltipPlugin: Link preview tooltipsSelectPlugin: Advanced selection handlingLocalstorageCleanerPlugin: Clean up local storageTablePlugins: Table editing capabilities
Input Rules
Automatic formatting with markdown-like shortcuts:Document Encryption
Encryption Flow
All document content is encrypted before storage:- Edit Document: User edits in ProseMirror editor
- Serialize to JSON: Document state serialized to JSON
- Encrypt Content: JSON encrypted with document key
- Encrypt Metadata: Title and other metadata encrypted separately
- Store Encrypted: Encrypted data uploaded to server
- Decrypt on Load: Document decrypted when opened
Encryption Libraries
Version History
Encrypted version history for documents:- Every save creates a new encrypted version
- Previous versions fully encrypted
- Restore to any previous version
- Compare versions side-by-side
- Version history retention based on plan
Collaboration Features
Skiff Pages supports real-time collaborative editing:Real-Time Sync
- Operational Transformation: Changes are synchronized using OT
- Conflict Resolution: Automatic conflict resolution for concurrent edits
- Presence Indicators: See other users’ cursors and selections
- Comment System: Add comments on document sections
- Change Tracking: View who made which changes
Sharing and Permissions
Document Sharing
Document Sharing
Share documents securely:
- View Only: Recipients can read but not edit
- Can Edit: Full editing permissions
- Can Comment: Add comments without editing
- Expiring Links: Set expiration for shared access
- Password Protection: Optional password for links
Team Collaboration
Team Collaboration
Work together on documents:
- Multiple simultaneous editors
- Real-time cursor positions
- Edit notifications
- Activity log
- Team workspace organization
Tiptap Integration
Skiff Pages uses Tiptap extensions for enhanced editing:Import and Export
Supported Formats
Import
- HTML files
- Markdown (.md)
- Plain text (.txt)
- Google Docs (via HTML export)
Export
- PDF (formatted)
- HTML (styled)
- Markdown
- Plain text
Google Docs Import
Markdown Export
Keyboard Shortcuts
Extensive keyboard shortcuts for productivity:Text Formatting Shortcuts
Text Formatting Shortcuts
Paragraph Shortcuts
Paragraph Shortcuts
Editor Shortcuts
Editor Shortcuts
Mobile Editing
Optimized for mobile devices:- Touch-optimized toolbar
- Mobile-friendly keyboard shortcuts
- Gesture support for selection
- Offline editing with sync
- Native mobile apps
Technical Implementation
Source Code Structure
Custom Commands
Skiff implements many custom ProseMirror commands:HeadingCommand: Convert to headingTextColorCommand: Change text colorTextHighlightCommand: Highlight textFontSizeCommand: Adjust font sizeFontTypeCommand: Change font familyTextAlignCommand: Set text alignmentIndentCommand: Indent/outdentTableInsertCommand: Insert tableTableMergeCellsCommand: Merge table cellsImageInsertCommand: Insert imageLinkSetURLCommand: Create/edit linkMathInsertCommand: Insert math equation
Privacy and Security
Zero-Knowledge Editing
- All content encrypted before leaving device
- Server cannot read document contents
- Private keys remain on client devices
- Encrypted collaboration using shared keys
Secure Sharing
- Share links with encryption keys in URL fragment
- Optional password protection for shares
- Expiring access links
- Revocable permissions