<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.comfac.net/index.php?action=history&amp;feed=atom&amp;title=ONLYOFFICE_Nextcloud_Analysis</id>
	<title>ONLYOFFICE Nextcloud Analysis - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.comfac.net/index.php?action=history&amp;feed=atom&amp;title=ONLYOFFICE_Nextcloud_Analysis"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=ONLYOFFICE_Nextcloud_Analysis&amp;action=history"/>
	<updated>2026-06-05T11:00:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://mediawiki.comfac.net/index.php?title=ONLYOFFICE_Nextcloud_Analysis&amp;diff=185&amp;oldid=prev</id>
		<title>Justinaquino: &quot;Add Pandapower and ONLYOFFICE Nextcloud analysis pages&quot;</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.comfac.net/index.php?title=ONLYOFFICE_Nextcloud_Analysis&amp;diff=185&amp;oldid=prev"/>
		<updated>2026-03-09T16:22:23Z</updated>

		<summary type="html">&lt;p&gt;&amp;quot;Add Pandapower and ONLYOFFICE Nextcloud analysis pages&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= ONLYOFFICE Nextcloud Integration — Repository Analysis =&lt;br /&gt;
&lt;br /&gt;
{{Quote|A comprehensive guide for newcomers to understand the codebase, its architecture, and how to contribute.}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 1. What Is This Project? ==&lt;br /&gt;
&lt;br /&gt;
This is a &amp;#039;&amp;#039;&amp;#039;Nextcloud app&amp;#039;&amp;#039;&amp;#039; that integrates [https://www.onlyoffice.com/ ONLYOFFICE Docs] (a self-hosted Document Server) with Nextcloud. It enables:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;In-browser editing&amp;#039;&amp;#039;&amp;#039; of documents, spreadsheets, and presentations (DOCX, XLSX, PPTX, PDF, and 50+ formats)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Real-time co-editing&amp;#039;&amp;#039;&amp;#039; — multiple users editing simultaneously&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Version history&amp;#039;&amp;#039;&amp;#039; — track and restore document revisions&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Template management&amp;#039;&amp;#039;&amp;#039; — create documents from templates&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Federated editing&amp;#039;&amp;#039;&amp;#039; — co-edit across linked Nextcloud instances&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Format conversion&amp;#039;&amp;#039;&amp;#039; — convert between office formats server-side&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Key facts:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;App ID:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;onlyoffice&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Version:&amp;#039;&amp;#039;&amp;#039; 10.0.0 (requires Nextcloud 33)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;License:&amp;#039;&amp;#039;&amp;#039; AGPL-3.0&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Author:&amp;#039;&amp;#039;&amp;#039; Ascensio System SIA&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Language split:&amp;#039;&amp;#039;&amp;#039; ~60% PHP backend, ~40% JavaScript frontend&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. Top-Level Directory Structure ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
onlyoffice-nextcloud/&lt;br /&gt;
├── appinfo/             # Nextcloud app metadata &amp;amp; routing&lt;br /&gt;
│   ├── info.xml         # App ID, version, dependencies, settings registration&lt;br /&gt;
│   └── routes.php       # All HTTP routes (web + OCS API)&lt;br /&gt;
│&lt;br /&gt;
├── lib/                 # PHP backend (~46 files)&lt;br /&gt;
│   ├── AppInfo/         # App bootstrap&lt;br /&gt;
│   ├── Controller/      # 8 controllers (editor, callback, settings, API)&lt;br /&gt;
│   ├── Listeners/       # 8 event listeners (file actions, CSP, sharing)&lt;br /&gt;
│   ├── Cron/            # Background jobs&lt;br /&gt;
│   ├── Command/         # CLI commands&lt;br /&gt;
│   ├── Migration/       # Database migrations&lt;br /&gt;
│   ├── AppConfig.php    # Central config (1,200+ lines)&lt;br /&gt;
│   ├── Crypt.php        # JWT token handling&lt;br /&gt;
│   ├── DocumentService.php  # Document Server connector&lt;br /&gt;
│   ├── FileUtility.php  # File operations&lt;br /&gt;
│   ├── KeyManager.php   # Document key storage&lt;br /&gt;
│   └── ...              # Template, preview, notification managers&lt;br /&gt;
│&lt;br /&gt;
├── src/                 # JavaScript frontend (~31 files)&lt;br /&gt;
│   ├── main.js          # Files app integration (context menus, file actions)&lt;br /&gt;
│   ├── editor.js        # Main editor interface&lt;br /&gt;
│   ├── settings.js      # Admin settings page&lt;br /&gt;
│   ├── share.js         # Sharing panel&lt;br /&gt;
│   ├── viewer.js        # Read-only viewer&lt;br /&gt;
│   ├── template.js      # Template picker&lt;br /&gt;
│   ├── desktop.js       # Desktop client integration&lt;br /&gt;
│   ├── directeditor.js  # Direct editing (token-based)&lt;br /&gt;
│   └── listener.js      # Editor event listener&lt;br /&gt;
│&lt;br /&gt;
├── templates/           # PHP templates (8 files)&lt;br /&gt;
│   ├── editor.php       # Editor page (loads iframe)&lt;br /&gt;
│   ├── settings.php     # Admin settings form&lt;br /&gt;
│   └── ...              # Share, loader, picker templates&lt;br /&gt;
│&lt;br /&gt;
├── css/                 # Stylesheets (7 files)&lt;br /&gt;
├── img/                 # Icons — app logo, format icons (DOCX, XLSX, PPTX, PDF)&lt;br /&gt;
├── l10n/                # Localization — 20+ languages (JSON + JS)&lt;br /&gt;
├── assets/              # Static assets&lt;br /&gt;
├── screenshots/         # Documentation screenshots&lt;br /&gt;
├── licenses/            # License info&lt;br /&gt;
├── vendor/              # Composer dependencies (firebase/php-jwt)&lt;br /&gt;
│&lt;br /&gt;
├── .github/             # CI/CD workflows (lint, build, release)&lt;br /&gt;
├── composer.json        # PHP dependencies&lt;br /&gt;
├── package.json         # JS dependencies &amp;amp; build scripts&lt;br /&gt;
├── webpack.js           # Webpack entry points config&lt;br /&gt;
└── Makefile             # Build automation&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. How It Works — The Big Picture ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
┌─────────────────────────────────────────────────────────┐&lt;br /&gt;
│  User&amp;#039;s Browser                                         │&lt;br /&gt;
│  ┌─────────────────────────────────────────────────┐    │&lt;br /&gt;
│  │  Nextcloud Files UI                             │    │&lt;br /&gt;
│  │  (main.js adds &amp;quot;Edit in ONLYOFFICE&amp;quot; actions)    │    │&lt;br /&gt;
│  └──────────────────┬──────────────────────────────┘    │&lt;br /&gt;
│                     │ click                              │&lt;br /&gt;
│  ┌──────────────────▼──────────────────────────────┐    │&lt;br /&gt;
│  │  Editor Page (editor.php + editor.js)           │    │&lt;br /&gt;
│  │  ┌──────────────────────────────────────┐       │    │&lt;br /&gt;
│  │  │  ONLYOFFICE Document Editor iframe   │       │    │&lt;br /&gt;
│  │  │  (loaded from Document Server)       │       │    │&lt;br /&gt;
│  │  └──────────────────┬───────────────────┘       │    │&lt;br /&gt;
│  └─────────────────────┼───────────────────────────┘    │&lt;br /&gt;
└────────────────────────┼────────────────────────────────┘&lt;br /&gt;
                         │&lt;br /&gt;
          ┌──────────────┼──────────────┐&lt;br /&gt;
          │              │              │&lt;br /&gt;
          ▼              ▼              ▼&lt;br /&gt;
┌─────────────┐  ┌─────────────┐  ┌──────────────┐&lt;br /&gt;
│  Nextcloud   │  │  Document   │  │  Nextcloud    │&lt;br /&gt;
│  Backend     │  │  Server     │  │  Backend      │&lt;br /&gt;
│ (PHP app)    │  │ (ONLYOFFICE)│  │  Callback     │&lt;br /&gt;
│              │  │             │  │              │&lt;br /&gt;
│ GET config   │  │ Serves      │  │ POST /track  │&lt;br /&gt;
│ GET file URL │  │ editor UI   │  │ (save changes│&lt;br /&gt;
│ JWT token    │  │ Converts    │  │  on close)   │&lt;br /&gt;
│ generation   │  │ files       │  │              │&lt;br /&gt;
└─────────────┘  └─────────────┘  └──────────────┘&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Document Editing Flow: ===&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;User clicks &amp;quot;Edit in ONLYOFFICE&amp;quot;&amp;#039;&amp;#039;&amp;#039; — &amp;lt;code&amp;gt;main.js&amp;lt;/code&amp;gt; triggers navigation&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;EditorController&amp;#039;&amp;#039;&amp;#039; generates a JWT-signed config with document URL, permissions, user info&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Editor page loads&amp;#039;&amp;#039;&amp;#039; — iframe points to ONLYOFFICE Document Server with the config&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Document Server fetches the file&amp;#039;&amp;#039;&amp;#039; from Nextcloud via the download callback URL&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;User edits&amp;#039;&amp;#039;&amp;#039; — changes are tracked in Document Server&amp;#039;s memory&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;On close/save&amp;#039;&amp;#039;&amp;#039; — Document Server POSTs the changed file back to &amp;lt;code&amp;gt;CallbackController.track()&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Nextcloud stores&amp;#039;&amp;#039;&amp;#039; the updated file and creates a version entry&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. Backend Architecture (PHP) ==&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Controllers (the API layer) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Controller !! Routes !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;EditorController&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;/onlyoffice/{fileId}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/ajax/*&amp;lt;/code&amp;gt; || Main editor — open files, save, convert, history, mentions, download&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;CallbackController&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;/onlyoffice/track&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/onlyoffice/download&amp;lt;/code&amp;gt; || Document Server callbacks — receive changes, serve files&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;EditorApiController&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;/api/v1/config/{fileId}&amp;lt;/code&amp;gt; || OCS API — generate editor configuration with JWT&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;SettingsController&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;/ajax/settings/*&amp;lt;/code&amp;gt; || Admin settings — server address, security, common settings&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;TemplateController&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;/ajax/template&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/preview&amp;lt;/code&amp;gt; || Template CRUD and preview&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;SharingApiController&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;/api/v1/shares/{fileId}&amp;lt;/code&amp;gt; || OCS API — file share management&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;FederationController&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;/api/v1/key&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/api/v1/keylock&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/api/v1/healthcheck&amp;lt;/code&amp;gt; || Federation key exchange and health&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;JobListController&amp;#039;&amp;#039;&amp;#039; || background job management || Background job scheduling&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Core Services ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Class !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;AppConfig.php&amp;#039;&amp;#039;&amp;#039; || Central config store (~1,200 lines). Document Server URL, JWT settings, supported formats, watermarks, security, feature flags. This is the largest and most important config file.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DocumentService.php&amp;#039;&amp;#039;&amp;#039; || Connector to Document Server API. Generates revision IDs, calls conversion endpoints, manages document info requests.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Crypt.php&amp;#039;&amp;#039;&amp;#039; || JWT token generation/verification using HS256 via &amp;lt;code&amp;gt;firebase/php-jwt&amp;lt;/code&amp;gt;. Every request between Nextcloud and Document Server is JWT-signed.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;KeyManager.php&amp;#039;&amp;#039;&amp;#039; || Manages document keys in DB table &amp;lt;code&amp;gt;onlyoffice_filekey&amp;lt;/code&amp;gt;. Tracks locks, force-save status.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;FileUtility.php&amp;#039;&amp;#039;&amp;#039; || File system operations — get file info, MIME types, share management, permissions.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;FileVersions.php&amp;#039;&amp;#039;&amp;#039; || Version history — stores edit records, tracks who edited when.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;TemplateManager.php&amp;#039;&amp;#039;&amp;#039; || Template storage in &amp;lt;code&amp;gt;appdata_{instanceid}/onlyoffice/template&amp;lt;/code&amp;gt;. CRUD for document templates.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ExtraPermissions.php&amp;#039;&amp;#039;&amp;#039; || Extended permission system — integrates with Nextcloud Talk for comments/chat during co-editing.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;RemoteInstance.php&amp;#039;&amp;#039;&amp;#039; || Federated instance management — DB table &amp;lt;code&amp;gt;onlyoffice_instance&amp;lt;/code&amp;gt;, health checks with 12-hour TTL cache.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Preview.php&amp;#039;&amp;#039;&amp;#039; || Generates file preview images for Nextcloud&amp;#039;s preview system.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.3 Event Listeners ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Listener !! Event !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;FilesListener&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;LoadAdditionalScriptsEvent&amp;lt;/code&amp;gt; || Injects &amp;lt;code&amp;gt;main.js&amp;lt;/code&amp;gt; into the Files app, adds &amp;quot;New Document&amp;quot; menu items&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DirectEditorListener&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;RegisterDirectEditorEvent&amp;lt;/code&amp;gt; || Registers ONLYOFFICE as a direct editor for supported formats&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ViewerListener&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;LoadViewer&amp;lt;/code&amp;gt; || Loads editor in view-only mode&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;FileSharingListener&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;BeforeTemplateRenderedEvent&amp;lt;/code&amp;gt; || Adds sharing panel to editor&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;CreateFromTemplateListener&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;FileCreatedFromTemplateEvent&amp;lt;/code&amp;gt; || Handles new-file-from-template flow&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;ContentSecurityPolicyListener&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;AddContentSecurityPolicyEvent&amp;lt;/code&amp;gt; || Adds Document Server domain to CSP whitelist&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;WidgetListener&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;HttpBeforeTemplateRenderedEvent&amp;lt;/code&amp;gt; || Dashboard widget&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DocumentUnsavedListener&amp;#039;&amp;#039;&amp;#039; || custom event || Fires notifications for unsaved documents&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 4.4 Database Tables ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Table !! Columns !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;onlyoffice_filekey&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;file_id&amp;lt;/code&amp;gt; (PK), &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lock&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;fs&amp;lt;/code&amp;gt; || Document identifiers, edit locks, force-save flags&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;onlyoffice_instance&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;remote&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;expire&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt; || Federated instance health tracking&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;onlyoffice_extraperm&amp;lt;/code&amp;gt; || share-based || Extended co-editing permissions&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 5. Frontend Architecture (JavaScript) ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Webpack Entry Points ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Entry !! File !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;src/main.js&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Core integration&amp;#039;&amp;#039;&amp;#039; — registers file actions (&amp;quot;Edit in ONLYOFFICE&amp;quot;), new-document menu items (DOCX/XLSX/PPTX/PDF), context menus in the Files app&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;editor&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;src/editor.js&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Editor page&amp;#039;&amp;#039;&amp;#039; — fetches config via AJAX, initializes ONLYOFFICE Document API iframe, manages editor lifecycle&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;settings&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;src/settings.js&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Admin panel&amp;#039;&amp;#039;&amp;#039; — Document Server URL, JWT secret, format toggles, watermarks, security&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;src/share.js&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Sharing sidebar&amp;#039;&amp;#039;&amp;#039; — share links, permissions for co-editing&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;viewer&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;src/viewer.js&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Read-only viewer&amp;#039;&amp;#039;&amp;#039; — opens documents in view mode&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;template&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;src/template.js&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Template picker&amp;#039;&amp;#039;&amp;#039; — select/create from templates&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;desktop&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;src/desktop.js&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Desktop client&amp;#039;&amp;#039;&amp;#039; — integration with Nextcloud desktop app&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;directeditor&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;src/directeditor.js&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Direct editing&amp;#039;&amp;#039;&amp;#039; — token-based editing without standard Files UI&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;listener&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;src/listener.js&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;Event bridge&amp;#039;&amp;#039;&amp;#039; — handles editor close, save-as, image insertion, mail merge&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Key Frontend Dependencies ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Package !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@nextcloud/files&amp;lt;/code&amp;gt; || File actions API, new-file menu registration&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@nextcloud/auth&amp;lt;/code&amp;gt; || Authentication tokens&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@nextcloud/initial-state&amp;lt;/code&amp;gt; || Server → client state transfer (settings, config)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@nextcloud/l10n&amp;lt;/code&amp;gt; || Localization/translation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@nextcloud/router&amp;lt;/code&amp;gt; || URL generation for Nextcloud routes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@nextcloud/sharing&amp;lt;/code&amp;gt; || Sharing UI integration&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@nextcloud/event-bus&amp;lt;/code&amp;gt; || Cross-component events&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;vue@^2.7&amp;lt;/code&amp;gt; || UI framework&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 6. Supported File Types ==&lt;br /&gt;
&lt;br /&gt;
=== Editable ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Category !! Formats&lt;br /&gt;
|-&lt;br /&gt;
| Documents || DOCX, ODT, RTF, TXT, DOCXF (forms)&lt;br /&gt;
|-&lt;br /&gt;
| Spreadsheets || XLSX, ODS, CSV&lt;br /&gt;
|-&lt;br /&gt;
| Presentations || PPTX, ODP&lt;br /&gt;
|-&lt;br /&gt;
| PDFs || PDF (with form editing)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== View-Only / Convertible ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Category !! Formats&lt;br /&gt;
|-&lt;br /&gt;
| Documents || EPUB, FB2, HTML, HWP, HWPX, Pages, MD&lt;br /&gt;
|-&lt;br /&gt;
| Spreadsheets || Numbers&lt;br /&gt;
|-&lt;br /&gt;
| Presentations || Keynote&lt;br /&gt;
|-&lt;br /&gt;
| Drawings || VSDX, VSSX, VSTX, ODG&lt;br /&gt;
|-&lt;br /&gt;
| Images || TIFF, SVG&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 7. Security Architecture ==&lt;br /&gt;
&lt;br /&gt;
=== JWT Authentication ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Algorithm:&amp;#039;&amp;#039;&amp;#039; HS256 (HMAC SHA-256) via &amp;lt;code&amp;gt;firebase/php-jwt&amp;lt;/code&amp;gt;&lt;br /&gt;
* Every request between Nextcloud ↔ Document Server carries a JWT token&lt;br /&gt;
* Configurable secret, expiry, and leeway (clock skew tolerance)&lt;br /&gt;
&lt;br /&gt;
=== Content Security Policy ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ContentSecurityPolicyListener&amp;lt;/code&amp;gt; dynamically adds the Document Server domain to Nextcloud&amp;#039;s CSP&lt;br /&gt;
* Required because the editor runs in an iframe from a different origin&lt;br /&gt;
&lt;br /&gt;
=== File Locking ===&lt;br /&gt;
&lt;br /&gt;
* Database-tracked locks prevent conflicting edits&lt;br /&gt;
* Automatic cleanup via &amp;lt;code&amp;gt;EditorsCheck&amp;lt;/code&amp;gt; background job&lt;br /&gt;
&lt;br /&gt;
=== Watermarks ===&lt;br /&gt;
&lt;br /&gt;
* Admin-configurable text, transparency, angle, color&lt;br /&gt;
* Can be applied per user/group/share type&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 8. Configuration Options (Admin Settings) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Setting !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Document Server address || External URL for the ONLYOFFICE Docs server&lt;br /&gt;
|-&lt;br /&gt;
| Internal Server address || URL used for server-to-server communication (if different)&lt;br /&gt;
|-&lt;br /&gt;
| Storage address || URL the Document Server uses to reach Nextcloud&lt;br /&gt;
|-&lt;br /&gt;
| JWT Secret || Shared secret for token signing&lt;br /&gt;
|-&lt;br /&gt;
| JWT Expiry || Token lifetime&lt;br /&gt;
|-&lt;br /&gt;
| Editable formats || Which formats open in edit mode (vs. view)&lt;br /&gt;
|-&lt;br /&gt;
| Supported conversions || Which format conversions are available&lt;br /&gt;
|-&lt;br /&gt;
| Watermark settings || Text, transparency, angle, color&lt;br /&gt;
|-&lt;br /&gt;
| Same-tab editing || Open editor in same tab or new tab&lt;br /&gt;
|-&lt;br /&gt;
| Advanced sidebar || Show document info sidebar&lt;br /&gt;
|-&lt;br /&gt;
| Live view for shares || Allow live viewing of shared documents&lt;br /&gt;
|-&lt;br /&gt;
| Demo server || Use ONLYOFFICE demo server (for testing)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 9. Build System ==&lt;br /&gt;
&lt;br /&gt;
=== Build Commands ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
npm install          # Install JS dependencies&lt;br /&gt;
npm run build        # Production webpack build&lt;br /&gt;
npm run dev          # Development build with watch&lt;br /&gt;
composer install     # Install PHP dependencies (firebase/php-jwt)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CI/CD Workflows (&amp;lt;code&amp;gt;.github/workflows/&amp;lt;/code&amp;gt;) ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Workflow !! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lint-eslint.yml&amp;lt;/code&amp;gt; || JavaScript linting&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lint-phpcs.yml&amp;lt;/code&amp;gt; || PHP CodeSniffer&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;lint-php.yml&amp;lt;/code&amp;gt; || PHP syntax validation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;artifact.yml&amp;lt;/code&amp;gt; || Build release artifacts&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;release.yml&amp;lt;/code&amp;gt; || Automated releases&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;create-tag.yml&amp;lt;/code&amp;gt; || Git tag creation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 10. Common Contribution Areas ==&lt;br /&gt;
&lt;br /&gt;
=== Easy / Good First Issues ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Area !! What To Do !! Files&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Translations&amp;#039;&amp;#039;&amp;#039; || Add/improve translations for your language || &amp;lt;code&amp;gt;l10n/*.json&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;l10n/*.js&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;CSS fixes&amp;#039;&amp;#039;&amp;#039; || Fix styling issues, dark mode support || &amp;lt;code&amp;gt;css/*.css&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Format support&amp;#039;&amp;#039;&amp;#039; || Add new file format icons or MIME mappings || &amp;lt;code&amp;gt;img/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lib/AppConfig.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Documentation&amp;#039;&amp;#039;&amp;#039; || Improve README, add setup guides || &amp;lt;code&amp;gt;README.md&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Medium Complexity ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Area !! What To Do !! Files&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;New file actions&amp;#039;&amp;#039;&amp;#039; || Add context menu items in Files app || &amp;lt;code&amp;gt;src/main.js&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Settings UI&amp;#039;&amp;#039;&amp;#039; || Add new admin settings options || &amp;lt;code&amp;gt;src/settings.js&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;templates/settings.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lib/Controller/SettingsController.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Template improvements&amp;#039;&amp;#039;&amp;#039; || Better template picker, categories || &amp;lt;code&amp;gt;src/template.js&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lib/TemplateManager.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Sharing enhancements&amp;#039;&amp;#039;&amp;#039; || Improve co-editing permission UI || &amp;lt;code&amp;gt;src/share.js&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lib/ExtraPermissions.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Preview generation&amp;#039;&amp;#039;&amp;#039; || Improve thumbnail quality/formats || &amp;lt;code&amp;gt;lib/Preview.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Advanced ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Area !! What To Do !! Files&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Editor configuration&amp;#039;&amp;#039;&amp;#039; || Add new Document Server config options to the editor setup || &amp;lt;code&amp;gt;lib/Controller/EditorController.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lib/Controller/EditorApiController.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Callback handling&amp;#039;&amp;#039;&amp;#039; || Handle new Document Server callback events || &amp;lt;code&amp;gt;lib/Controller/CallbackController.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Federation&amp;#039;&amp;#039;&amp;#039; || Improve cross-instance editing || &amp;lt;code&amp;gt;lib/RemoteInstance.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lib/Controller/FederationController.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Performance&amp;#039;&amp;#039;&amp;#039; || Optimize file locking, key management || &amp;lt;code&amp;gt;lib/KeyManager.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lib/Cron/EditorsCheck.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Security&amp;#039;&amp;#039;&amp;#039; || JWT improvements, CSP hardening || &amp;lt;code&amp;gt;lib/Crypt.php&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lib/Listeners/ContentSecurityPolicyListener.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Version history&amp;#039;&amp;#039;&amp;#039; || Improve diff/restore functionality || &amp;lt;code&amp;gt;lib/FileVersions.php&amp;lt;/code&amp;gt;, editor history endpoints&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Controller features&amp;#039;&amp;#039;&amp;#039; || Add new API endpoints || &amp;lt;code&amp;gt;lib/Controller/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;appinfo/routes.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Architecture Changes ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Area !! What To Do !! Files&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Vue 3 migration&amp;#039;&amp;#039;&amp;#039; || Upgrade from Vue 2.7 to Vue 3 || &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;package.json&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;webpack.js&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;TypeScript&amp;#039;&amp;#039;&amp;#039; || Add type safety to frontend || &amp;lt;code&amp;gt;src/*.js&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;src/*.ts&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Database schema&amp;#039;&amp;#039;&amp;#039; || New tables for features || &amp;lt;code&amp;gt;lib/Migration/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;New Nextcloud APIs&amp;#039;&amp;#039;&amp;#039; || Adopt newer NC framework features || &amp;lt;code&amp;gt;lib/Listeners/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lib/AppInfo/Application.php&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 11. Development Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* Nextcloud 33 instance (dev environment)&lt;br /&gt;
* ONLYOFFICE Document Server (or use demo mode)&lt;br /&gt;
* PHP 8.1+, Node.js 18+, npm&lt;br /&gt;
&lt;br /&gt;
=== Quick Start ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Clone into Nextcloud apps directory&lt;br /&gt;
cd /path/to/nextcloud/apps&lt;br /&gt;
git clone https://github.com/xunema/onlyoffice-nextcloud.git onlyoffice&lt;br /&gt;
&lt;br /&gt;
# Install dependencies&lt;br /&gt;
cd onlyoffice&lt;br /&gt;
composer install&lt;br /&gt;
npm install&lt;br /&gt;
&lt;br /&gt;
# Build frontend&lt;br /&gt;
npm run build&lt;br /&gt;
&lt;br /&gt;
# Enable app&lt;br /&gt;
cd /path/to/nextcloud&lt;br /&gt;
php occ app:enable onlyoffice&lt;br /&gt;
&lt;br /&gt;
# Configure Document Server URL in Admin → ONLYOFFICE&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Development Workflow ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
npm run dev          # Watch mode — rebuilds on file changes&lt;br /&gt;
# Edit PHP files — changes are immediate (no build needed)&lt;br /&gt;
# Edit JS/Vue files — webpack rebuilds automatically&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 12. Key Files to Read First ==&lt;br /&gt;
&lt;br /&gt;
If you&amp;#039;re new to this codebase, read these in order:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;appinfo/info.xml&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — What this app is, what it requires&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;appinfo/routes.php&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — All URL routes (the API surface)&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;lib/AppConfig.php&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — Configuration options (largest file, central to everything)&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;lib/Controller/EditorController.php&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — Main editor logic (~1,500 lines)&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;lib/Controller/CallbackController.php&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — How Document Server communicates back (~1,000 lines)&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;src/main.js&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — How the app integrates into Nextcloud Files&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;src/editor.js&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — How the editor page works&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;templates/editor.php&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — The editor HTML template&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;lib/Crypt.php&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — JWT security&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;&amp;lt;code&amp;gt;webpack.js&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; — Frontend build configuration&lt;br /&gt;
&lt;br /&gt;
[[Category:Open Source]]&lt;br /&gt;
[[Category:Software Analysis]]&lt;br /&gt;
[[Category:ONLYOFFICE]]&lt;/div&gt;</summary>
		<author><name>Justinaquino</name></author>
	</entry>
</feed>