gitextract_96m72lw6/ ├── .dockerignore ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ └── feature_request.md │ └── workflows/ │ └── build.yml ├── .gitignore ├── .huskyrc.js ├── .nvmrc ├── .prettierignore ├── .prettierrc.js ├── Dockerfile ├── LICENSE.txt ├── README.md ├── backend/ │ ├── migrations/ │ │ ├── 001_init.js │ │ ├── 002_add_first_serial.js │ │ ├── 003_refactor_access.sql │ │ ├── 004_public_boards_access.sql │ │ ├── 005_uuid_extension.sql │ │ ├── 006_unique_email.sql │ │ ├── 007_add_crdt_update.sql │ │ ├── 008_allow_crdt_only_bundle.sql │ │ ├── 009_drop_board_event_primary_key.sql │ │ └── 010_drop_history_column.sql │ ├── package.json │ ├── src/ │ │ ├── api/ │ │ │ ├── api-routes.ts │ │ │ ├── board-create.ts │ │ │ ├── board-csv-get.ts │ │ │ ├── board-get.ts │ │ │ ├── board-hierarchy-get.ts │ │ │ ├── board-history-get.ts │ │ │ ├── board-update.ts │ │ │ ├── github-webhook.ts │ │ │ ├── item-create-or-update.ts │ │ │ ├── item-create.ts │ │ │ └── utils.ts │ │ ├── board-event-handler.ts │ │ ├── board-state.test.ts │ │ ├── board-state.ts │ │ ├── board-store.ts │ │ ├── board-yjs-server.ts │ │ ├── common-event-handler.ts │ │ ├── compact-history.ts │ │ ├── config.ts │ │ ├── connection-handler.ts │ │ ├── db.ts │ │ ├── decodeOrThrow.ts │ │ ├── env.ts │ │ ├── expiring-map.ts │ │ ├── express-server.ts │ │ ├── generic-oidc-auth.ts │ │ ├── github-webhook/ │ │ │ └── example-payload.json │ │ ├── google-auth.ts │ │ ├── host-config.ts │ │ ├── http-session.ts │ │ ├── locker.ts │ │ ├── oauth.ts │ │ ├── professions.ts │ │ ├── require-auth.ts │ │ ├── s3.ts │ │ ├── server.ts │ │ ├── storage.ts │ │ ├── tools/ │ │ │ └── wait-for-db.ts │ │ ├── user-store.ts │ │ ├── uwebsockets-server.ts │ │ ├── websocket-sessions.ts │ │ ├── ws-wrapper.ts │ │ └── y-websocket-server/ │ │ ├── Docs.ts │ │ ├── Persistence.ts │ │ ├── Protocol.ts │ │ ├── WSSharedDoc.ts │ │ └── YWebSocketServer.ts │ └── tsconfig.json ├── benchmark/ │ └── benchmark.ts ├── common/ │ └── src/ │ ├── action-folding.ts │ ├── arrays.ts │ ├── assertNotNull.ts │ ├── authenticated-user.ts │ ├── board-crdt-helper.ts │ ├── board-reducer.benchmark.ts │ ├── board-reducer.ts │ ├── colors.ts │ ├── connection-utils.ts │ ├── domain.ts │ ├── geometry.ts │ ├── migration.test.ts │ ├── migration.ts │ ├── sets.ts │ ├── sleep.ts │ └── vector2.ts ├── cypress.json ├── docker-compose.yaml ├── frontend/ │ ├── .sassrc │ ├── esbuild.js │ ├── index.tmpl.html │ ├── package.json │ ├── src/ │ │ ├── app.scss │ │ ├── board/ │ │ │ ├── BoardView.tsx │ │ │ ├── BoardViewMessage.tsx │ │ │ ├── CollaborativeTextView.tsx │ │ │ ├── ConnectionsView.tsx │ │ │ ├── CursorsView.tsx │ │ │ ├── DragBorder.tsx │ │ │ ├── ImageView.tsx │ │ │ ├── ItemView.tsx │ │ │ ├── RectangularDragSelection.tsx │ │ │ ├── SaveAsTemplate.tsx │ │ │ ├── SelectionBorder.tsx │ │ │ ├── TextView.tsx │ │ │ ├── VideoView.tsx │ │ │ ├── autoFontSize.ts │ │ │ ├── board-coordinates.ts │ │ │ ├── board-drag.ts │ │ │ ├── board-focus.ts │ │ │ ├── board-permissions.ts │ │ │ ├── board-scroll-and-zoom.ts │ │ │ ├── boardContentArea.ts │ │ │ ├── contextmenu/ │ │ │ │ ├── ContextMenuView.tsx │ │ │ │ ├── alignments.tsx │ │ │ │ ├── areaTiling.tsx │ │ │ │ ├── colors.tsx │ │ │ │ ├── colorsAndShapes.tsx │ │ │ │ ├── connection-ends.tsx │ │ │ │ ├── fontSizes.tsx │ │ │ │ ├── hideContents.tsx │ │ │ │ ├── lock.tsx │ │ │ │ ├── shapes.tsx │ │ │ │ ├── textAlignments.tsx │ │ │ │ └── textFormats.tsx │ │ │ ├── contrasting-color.ts │ │ │ ├── double-click.ts │ │ │ ├── header/ │ │ │ │ ├── BoardViewHeader.tsx │ │ │ │ ├── OtherUsersView.tsx │ │ │ │ ├── SharingModalDialog.tsx │ │ │ │ ├── UserInfoModal.tsx │ │ │ │ └── UserInfoView.tsx │ │ │ ├── image-upload.ts │ │ │ ├── item-connect.ts │ │ │ ├── item-create.ts │ │ │ ├── item-cut-copy-paste.ts │ │ │ ├── item-delete.ts │ │ │ ├── item-drag.ts │ │ │ ├── item-dragmove.ts │ │ │ ├── item-duplicate.ts │ │ │ ├── item-hide-contents.ts │ │ │ ├── item-move-with-arrow-keys.ts │ │ │ ├── item-organizer.test.ts │ │ │ ├── item-organizer.ts │ │ │ ├── item-packer.ts │ │ │ ├── item-select-all.ts │ │ │ ├── item-selection.ts │ │ │ ├── item-setcontainer.ts │ │ │ ├── item-undo-redo.ts │ │ │ ├── keyboard-shortcuts.ts │ │ │ ├── local-storage-atom.ts │ │ │ ├── quillClickableLink.ts │ │ │ ├── quillPasteLinkOverText.ts │ │ │ ├── synchronize-focus-with-server.ts │ │ │ ├── tool-selection.ts │ │ │ ├── toolbars/ │ │ │ │ ├── BackToAllBoardsLink.tsx │ │ │ │ ├── BoardToolLayer.tsx │ │ │ │ ├── MainToolBar.tsx │ │ │ │ ├── MiniMapView.tsx │ │ │ │ ├── PaletteView.tsx │ │ │ │ ├── ToolSelector.tsx │ │ │ │ ├── UndoRedo.tsx │ │ │ │ └── ZoomControls.tsx │ │ │ ├── touchScreen.ts │ │ │ ├── zIndices.ts │ │ │ └── zoom-shortcuts.ts │ │ ├── board-navigation.ts │ │ ├── components/ │ │ │ ├── BoardAccessPolicyEditor.tsx │ │ │ ├── BoardCrdtModeSelector.tsx │ │ │ ├── EditableSpan.tsx │ │ │ ├── HTMLEditableSpan.tsx │ │ │ ├── Icons.tsx │ │ │ ├── ModalContainer.tsx │ │ │ ├── UIColors.ts │ │ │ ├── browser.ts │ │ │ ├── components.tsx │ │ │ ├── onClickOutside.tsx │ │ │ └── sanitizeHTML.ts │ │ ├── dashboard/ │ │ │ └── DashboardView.tsx │ │ ├── embedding.tsx │ │ ├── google-auth.ts │ │ ├── index.tsx │ │ ├── store/ │ │ │ ├── asset-store.ts │ │ │ ├── board-local-store.ts │ │ │ ├── board-store.test.ts │ │ │ ├── board-store.ts │ │ │ ├── crdt-store.ts │ │ │ ├── cursors-store.ts │ │ │ ├── recent-boards.ts │ │ │ ├── server-connection.ts │ │ │ └── user-session-store.ts │ │ └── style/ │ │ ├── board.scss │ │ ├── dashboard.scss │ │ ├── global.scss │ │ ├── header.scss │ │ ├── modal.scss │ │ ├── sharing-modal.scss │ │ ├── tool-layer.scss │ │ ├── user-info-modal.scss │ │ ├── utils.scss │ │ └── variables.scss │ └── tsconfig.json ├── integration/ │ └── src/ │ └── compact-history.test.ts ├── keycloak/ │ ├── README.md │ └── keycloak-db.dump ├── lint-staged.config.js ├── package.json ├── perf-tester/ │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── create-boards.ts │ │ └── index.ts │ └── tsconfig.json ├── playwright/ │ └── src/ │ ├── pages/ │ │ ├── BoardApi.ts │ │ ├── BoardPage.ts │ │ └── DashboardPage.ts │ └── tests/ │ ├── accessPolicy.spec.ts │ ├── api.spec.ts │ ├── board.spec.ts │ ├── collaboration.spec.ts │ ├── dashboard.spec.ts │ └── navigation.spec.ts ├── playwright.config.ts ├── scripts/ │ ├── migrate_user_email.sh │ └── run_dockerized.sh ├── state-management.md ├── tsconfig.json └── vitest.config.ts