Loading Documentation Hub...
Scanning documentation library
Loading Documentation Hub...
Scanning documentation library
Documentation
📚 Documentation
Loading Documentation Hub...
Scanning documentation library
Scanning documentation library
Scanning documentation library
Scanning documentation library
Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
Status: 🔄 In Progress (Sprints 2.1–2.3 complete; 2.4–2.5 remaining)
Duration: 2-3 weeks
Prerequisites: Phase 1 Complete
Phase 2 transforms the basic contentEditable editor into a world-class scientific publication editor with rich text editing, LaTeX equation support, auto-save, version history, and export capabilities.
Implemented (2026-02-25): Rich text (Tiptap), LaTeX (KaTeX + equation modal), auto-save (30s debounce), version history (snapshot/restore), publications schema and API. See Scientific Editor for full documentation.
| Task |
|---|
Status: 🔄 In Progress (Sprints 2.1–2.3 complete; 2.4–2.5 remaining)
Duration: 2-3 weeks
Prerequisites: Phase 1 Complete
Phase 2 transforms the basic contentEditable editor into a world-class scientific publication editor with rich text editing, LaTeX equation support, auto-save, version history, and export capabilities.
Implemented (2026-02-25): Rich text (Tiptap), LaTeX (KaTeX + equation modal), auto-save (30s debounce), version history (snapshot/restore), publications schema and API. See Scientific Editor for full documentation.
| Task |
|---|
Status: 🔄 In Progress (Sprints 2.1–2.3 complete; 2.4–2.5 remaining)
Duration: 2-3 weeks
Prerequisites: Phase 1 Complete
Phase 2 transforms the basic contentEditable editor into a world-class scientific publication editor with rich text editing, LaTeX equation support, auto-save, version history, and export capabilities.
Implemented (2026-02-25): Rich text (Tiptap), LaTeX (KaTeX + equation modal), auto-save (30s debounce), version history (snapshot/restore), publications schema and API. See Scientific Editor for full documentation.
| Task |
|---|
| Description |
|---|
| Description |
|---|
| Description |
|---|
| 2.1.1 | Install Tiptap dependencies (17 packages) |
| 2.1.2 | Create ScientificEditor component |
| 2.1.3 | Create EditorToolbar component |
| 2.1.4 | Integrate editor into editor page |
| 2.1.1 | Install Tiptap dependencies (17 packages) |
| 2.1.2 | Create ScientificEditor component |
| 2.1.3 | Create EditorToolbar component |
| 2.1.4 | Integrate editor into editor page |
| 2.1.1 | Install Tiptap dependencies (17 packages) |
| 2.1.2 | Create ScientificEditor component |
| 2.1.3 | Create EditorToolbar component |
| 2.1.4 | Integrate editor into editor page |
Key Components:
components/editor/scientific-editor.tsx - Core Tiptap editorcomponents/editor/editor-toolbar.tsx - Formatting toolbarKey Components:
components/editor/scientific-editor.tsx - Core Tiptap editorcomponents/editor/editor-toolbar.tsx - Formatting toolbarKey Components:
components/editor/scientific-editor.tsx - Core Tiptap editorcomponents/editor/editor-toolbar.tsx - Formatting toolbar| Task | Description |
|---|---|
| 2.2.1 | Install KaTeX dependencies |
| 2.2.2 | Create Tiptap LaTeX extension |
| 2.2.3 | Create EquationEditor modal |
| 2.2.4 | Add equation button to toolbar |
| Task | Description |
|---|---|
| 2.2.1 | Install KaTeX dependencies |
| 2.2.2 | Create Tiptap LaTeX extension |
| 2.2.3 | Create EquationEditor modal |
| 2.2.4 | Add equation button to toolbar |
| Task | Description |
|---|---|
| 2.2.1 | Install KaTeX dependencies |
| 2.2.2 | Create Tiptap LaTeX extension |
| 2.2.3 | Create EquationEditor modal |
| 2.2.4 | Add equation button to toolbar |
Features:
mathBlock node (KaTeX); equation modal with live previewFeatures:
mathBlock node (KaTeX); equation modal with live previewFeatures:
mathBlock node (KaTeX); equation modal with live preview| Task | Description |
|---|---|
| 2.3.1 | Create publication database schema |
| 2.3.2 | Create PublicationService |
| 2.3.3 | Create useAutoSave hook |
| 2.3.4 | Create VersionHistoryPanel |
| 2.3.5 | Create API routes |
| Task | Description |
|---|---|
| 2.3.1 | Create publication database schema |
| 2.3.2 | Create PublicationService |
| 2.3.3 | Create useAutoSave hook |
| 2.3.4 | Create VersionHistoryPanel |
| 2.3.5 | Create API routes |
| Task | Description |
|---|---|
| 2.3.1 | Create publication database schema |
| 2.3.2 | Create PublicationService |
| 2.3.3 | Create useAutoSave hook |
| 2.3.4 | Create VersionHistoryPanel |
| 2.3.5 | Create API routes |
Database Schema (Ring JSONB pattern in data/schema.sql):
publications: id, data (user_id, title, content, status, template_id), created_at, updated_atpublication_versions: id, data (publication_id, version_number, content, change_summary, created_by), created_at, updated_atAPI: GET/POST /api/publications, GET/PUT/DELETE /api/publications/[id], GET/POST /api/publications/[id]/versions (snapshot/restore).
Database Schema (Ring JSONB pattern in data/schema.sql):
publications: id, data (user_id, title, content, status, template_id), created_at, updated_atpublication_versions: id, data (publication_id, version_number, content, change_summary, created_by), created_at, updated_atAPI: GET/POST /api/publications, GET/PUT/DELETE /api/publications/[id], GET/POST /api/publications/[id]/versions (snapshot/restore).
Database Schema (Ring JSONB pattern in data/schema.sql):
publications: id, data (user_id, title, content, status, template_id), created_at, updated_atpublication_versions: id, data (publication_id, version_number, content, change_summary, created_by), created_at, updated_atAPI: GET/POST /api/publications, GET/PUT/DELETE /api/publications/[id], GET/POST /api/publications/[id]/versions (snapshot/restore).
| Task | Description |
|---|---|
| 2.4.1 | Create FigureUpload component |
| 2.4.2 | Create TableEditor component |
| 2.4.3 | Create cross-reference system |
| 2.4.4 | Integrate file upload service |
| Task | Description |
|---|---|
| 2.4.1 | Create FigureUpload component |
| 2.4.2 | Create TableEditor component |
| 2.4.3 | Create cross-reference system |
| 2.4.4 | Integrate file upload service |
| Task | Description |
|---|---|
| 2.4.1 | Create FigureUpload component |
| 2.4.2 | Create TableEditor component |
| 2.4.3 | Create cross-reference system |
| 2.4.4 | Integrate file upload service |
Features:
Features:
Features:
| Task | Description |
|---|---|
| 2.5.1 | Install export dependencies |
| 2.5.2 | Create PDFExportService |
| 2.5.3 | Create DocxExportService |
| 2.5.4 | Create MarkdownExportService |
| 2.5.5 | Create ExportDialog component |
| 2.5.6 | Add export button to toolbar |
| Task | Description |
|---|---|
| 2.5.1 | Install export dependencies |
| 2.5.2 | Create PDFExportService |
| 2.5.3 | Create DocxExportService |
| 2.5.4 | Create MarkdownExportService |
| 2.5.5 | Create ExportDialog component |
| 2.5.6 | Add export button to toolbar |
| Task | Description |
|---|---|
| 2.5.1 | Install export dependencies |
| 2.5.2 | Create PDFExportService |
| 2.5.3 | Create DocxExportService |
| 2.5.4 | Create MarkdownExportService |
| 2.5.5 | Create ExportDialog component |
| 2.5.6 | Add export button to toolbar |
Export Formats:
Export Formats:
Export Formats:
# Tiptap Editor (17 packages)
npm install @tiptap/react @tiptap/starter-kit @tiptap/extension-placeholder \
@tiptap/extension-highlight @tiptap/extension-typography \
@tiptap/extension-text-align @tiptap/extension-underline \
@tiptap/extension-subscript @tiptap/extension-superscript \
@tiptap/extension-table @tiptap/extension-table-row \
@tiptap/extension-table-cell @tiptap/extension-table-header \
@tiptap/extension-image @tiptap/extension-link \
@tiptap/extension-code-block-lowlight lowlight
# LaTeX
npm install katex react-katex
# Tiptap Editor (17 packages)
npm install @tiptap/react @tiptap/starter-kit @tiptap/extension-placeholder \
@tiptap/extension-highlight @tiptap/extension-typography \
@tiptap/extension-text-align @tiptap/extension-underline \
@tiptap/extension-subscript @tiptap/extension-superscript \
@tiptap/extension-table @tiptap/extension-table-row \
@tiptap/extension-table-cell @tiptap/extension-table-header \
@tiptap/extension-image @tiptap/extension-link \
@tiptap/extension-code-block-lowlight lowlight
# LaTeX
npm install katex react-katex
# Tiptap Editor (17 packages)
npm install @tiptap/react @tiptap/starter-kit @tiptap/extension-placeholder \
@tiptap/extension-highlight @tiptap/extension-typography \
@tiptap/extension-text-align @tiptap/extension-underline \
@tiptap/extension-subscript @tiptap/extension-superscript \
@tiptap/extension-table @tiptap/extension-table-row \
@tiptap/extension-table-cell @tiptap/extension-table-header \
@tiptap/extension-image @tiptap/extension-link \
@tiptap/extension-code-block-lowlight lowlight
# LaTeX
npm install katex react-katex
components/editor/
├── scientific-editor.tsx # Main editor with Tiptap
├── editor-toolbar.tsx # Formatting toolbar
├── extensions/
│ └── latex-extension.ts # LaTeX rendering
├── equation-editor.tsx # Equation modal
├── figure-upload.tsx # Image upload
├── table-editor.tsx # Table creation
├── version-history-panel.tsx # Version browser
└── export-dialog.tsx # Export options
features/publications/services/
├── publication-service.ts # CRUD operations
├── pdf-export-service.ts # PDF generation
├── docx-export-service.ts # Word export
└── markdown-export-service.ts # Markdown export
components/editor/
├── scientific-editor.tsx # Main editor with Tiptap
├── editor-toolbar.tsx # Formatting toolbar
├── extensions/
│ └── latex-extension.ts # LaTeX rendering
├── equation-editor.tsx # Equation modal
├── figure-upload.tsx # Image upload
├── table-editor.tsx # Table creation
├── version-history-panel.tsx # Version browser
└── export-dialog.tsx # Export options
features/publications/services/
├── publication-service.ts # CRUD operations
├── pdf-export-service.ts # PDF generation
├── docx-export-service.ts # Word export
└── markdown-export-service.ts # Markdown export
components/editor/
├── scientific-editor.tsx # Main editor with Tiptap
├── editor-toolbar.tsx # Formatting toolbar
├── extensions/
│ └── latex-extension.ts # LaTeX rendering
├── equation-editor.tsx # Equation modal
├── figure-upload.tsx # Image upload
├── table-editor.tsx # Table creation
├── version-history-panel.tsx # Version browser
└── export-dialog.tsx # Export options
features/publications/services/
├── publication-service.ts # CRUD operations
├── pdf-export-service.ts # PDF generation
├── docx-export-service.ts # Word export
└── markdown-export-service.ts # Markdown export
| Metric | Target |
|---|---|
| Editor render time | <100ms |
| Auto-save latency | <500ms |
| Version load time | <1s |
| PDF export time | <5s |
| Word export time | <3s |
| Test coverage | >80% |
| Lighthouse score | >90 |
| Metric | Target |
|---|---|
| Editor render time | <100ms |
| Auto-save latency | <500ms |
| Version load time | <1s |
| PDF export time | <5s |
| Word export time | <3s |
| Test coverage | >80% |
| Lighthouse score | >90 |
| Metric | Target |
|---|---|
| Editor render time | <100ms |
| Auto-save latency | <500ms |
| Version load time | <1s |
| PDF export time | <5s |
| Word export time | <3s |
| Test coverage | >80% |
| Lighthouse score | >90 |
| Risk | Mitigation |
|---|---|
| Tiptap learning curve | Start with starter-kit, add extensions incrementally |
| LaTeX performance | Lazy render equations outside viewport |
| Export formatting loss | Test with complex documents, provide preview |
| Auto-save conflicts | Tab detection and conflict resolution UI |
| Risk | Mitigation |
|---|---|
| Tiptap learning curve | Start with starter-kit, add extensions incrementally |
| LaTeX performance | Lazy render equations outside viewport |
| Export formatting loss | Test with complex documents, provide preview |
| Auto-save conflicts | Tab detection and conflict resolution UI |
| Risk | Mitigation |
|---|---|
| Tiptap learning curve | Start with starter-kit, add extensions incrementally |
| LaTeX performance | Lazy render equations outside viewport |
| Export formatting loss | Test with complex documents, provide preview |
| Auto-save conflicts | Tab detection and conflict resolution UI |
lib/file/FileService.ts - File upload abstractionlib/file/adapters/VercelAdapter.ts - Vercel Blob storagefeatures/news/components/editor/rich-text-editor.tsx - TinyMCE referencecomponents/vendor/store-logo-uploader.tsx - Drag & drop patternzemna-ai-scientific-editor-architecturezemna-ai-tiptap-integrationzemna-ai-latex-supportzemna-ai-version-history-systemzemna-ai-export-pipelinescientific-editor-componentauto-save-hookpdf-export-servicefigure-table-systemlib/file/FileService.ts - File upload abstractionlib/file/adapters/VercelAdapter.ts - Vercel Blob storagefeatures/news/components/editor/rich-text-editor.tsx - TinyMCE referencecomponents/vendor/store-logo-uploader.tsx - Drag & drop patternzemna-ai-scientific-editor-architecturezemna-ai-tiptap-integrationzemna-ai-latex-supportzemna-ai-version-history-systemzemna-ai-export-pipelinescientific-editor-componentauto-save-hookpdf-export-servicefigure-table-systemlib/file/FileService.ts - File upload abstractionlib/file/adapters/VercelAdapter.ts - Vercel Blob storagefeatures/news/components/editor/rich-text-editor.tsx - TinyMCE referencecomponents/vendor/store-logo-uploader.tsx - Drag & drop patternzemna-ai-scientific-editor-architecturezemna-ai-tiptap-integrationzemna-ai-latex-supportzemna-ai-version-history-systemzemna-ai-export-pipelinescientific-editor-componentauto-save-hookpdf-export-servicefigure-table-system