# bookorbit | bookorbit | Knowledge Base | Instagit

BookOrbit: Your Reading Space

GitHub Stars: 3.4k

Repository: https://github.com/bookorbit/bookorbit

---

## Articles

### [How BookOrbit Prioritizes Metadata Providers per Library](/bookorbit/bookorbit/how-bookorbit-prioritizes-metadata-providers-per-library)

Discover how BookOrbit prioritizes metadata providers using a three-tier system merging global defaults with library-specific overrides for efficient metadata fetching.

- Tags: internals
- Published: 2026-08-30

### [KOReader Plugin Source Code Location in BookOrbit: Complete Server-Side Module Guide](/bookorbit/bookorbit/where-is-koreader-plugin-source-code-located)

Find the KOReader plugin source code in the bookorbit/bookorbit repository at server/src/modules/koreader. This NestJS module guides you through its server-side implementation.

- Tags: api-reference
- Published: 2026-08-30

### [BookOrbit Sync Module Structure: Complete Guide to the Kobo Implementation](/bookorbit/bookorbit/where-find-sync-module-structure-bookorbit)

Explore the BookOrbit sync module structure for Kobo. Discover controllers, services, DTOs, and guards within the Kobo implementation. Understand the full Kobo sync protocol.

- Tags: internals
- Published: 2026-08-30

### [BookOrbit WebSocket Adapter Setup: Location and Configuration in NestJS](/bookorbit/bookorbit/where-is-websocket-adapter-setup-bookorbit)

Discover the WebSocket adapter setup in BookOrbit's NestJS application. Learn where to locate and configure Socket.IO for real-time communication within the server/src/main.ts file.

- Tags: how-to-guide
- Published: 2026-08-30

### [How SmartScopeService Handles Ownership Checks in BookOrbit](/bookorbit/bookorbit/how-smartscopeservice-handles-ownership-checks)

Discover how SmartScopeService handles ownership checks in BookOrbit using assertReadAccess and assertWriteAccess guard methods for secure data operations. Learn more!

- Tags: deep-dive
- Published: 2026-08-30

### [How Rule-Based Filters for Smart Scopes Work in BookOrbit](/bookorbit/bookorbit/what-rule-based-filters-smart-scopes-bookorbit)

Discover how BookOrbit Smart Scopes leverage rule-based filters with JSONB and GroupRule objects to dynamically filter book collections using logical AND/OR joins. Learn more!

- Tags: deep-dive
- Published: 2026-08-30

### [How Manual Collections Work in BookOrbit: A Complete Technical Guide](/bookorbit/bookorbit/how-manual-collections-managed-bookorbit)

Explore how BookOrbit manages manual collections with a technical guide detailing ownership-based permissions, CRUD, reordering, and bulk management in this NestJS module.

- Tags: how-to-guide
- Published: 2026-08-30

### [How BookOrbit Implements Smart Scopes for Dynamic Collections](/bookorbit/bookorbit/how-bookorbit-implements-smart-scopes-dynamic-collections)

Discover how BookOrbit uses Smart Scopes and JSON GroupRule objects in PostgreSQL to create dynamic, self-updating collections, avoiding static book ID lists.

- Tags: deep-dive
- Published: 2026-08-30

### [BOOKS_PATH Environment Variable in BookOrbit: Complete Configuration Guide](/bookorbit/bookorbit/what-is-books-path-environment-variable-bookorbit)

Understand the BOOKS_PATH environment variable in BookOrbit. Learn how it defines your e-book library's root directory for seamless file management and synchronization. Get the complete guide.

- Tags: how-to-guide
- Published: 2026-08-30

### [How to Configure Library Settings in BookOrbit: REST API and Validation Guide](/bookorbit/bookorbit/how-to-configure-library-settings-bookorbit)

Configure BookOrbit library settings using the REST API. Send a PATCH request to update library details, validated by UpdateLibraryDto and persisted with Drizzle ORM.

- Tags: how-to-guide
- Published: 2026-08-30

### [How BookOrbit Implements Library Isolation with Per-Library Folders](/bookorbit/bookorbit/how-bookorbit-handles-library-isolation-per-library-folders)

Discover how BookOrbit achieves robust library isolation using per-library folders and multi-layer ownership checks. Learn about its secure design for your data.

- Tags: architecture
- Published: 2026-08-30

### [How Are Permissions Enforced in the BookOrbit Backend?](/bookorbit/bookorbit/how-permissions-enforced-bookorbit-backend)

Discover how BookOrbit enforces API permissions using a custom decorator, a global PermissionGuard, and user-scoped ownership checks for secure access to REST endpoints.

- Tags: internals
- Published: 2026-08-30

### [What Authentication Methods Does BookOrbit Support? OIDC, SSO, and Local Auth Explained](/bookorbit/bookorbit/what-authentication-methods-bookorbit-support-oidc-sso)

Discover BookOrbit authentication methods including OIDC, SSO, and local accounts. Securely manage user access with flexible options for your application.

- Tags: api-reference
- Published: 2026-08-30

### [How the BookOrbit Multi-User Permission System Works: A Deep Dive into Role-Based Access Control](/bookorbit/bookorbit/how-multi-user-permission-system-bookorbit-works)

Discover how BookOrbit's multi-user permission system uses role-based access control and NestJS guards to manage user access securely and efficiently.

- Tags: deep-dive
- Published: 2026-08-30

### [How BookOrbit Sources Cover Art for Books: Local, Embedded, and External Retrieval Methods](/bookorbit/bookorbit/how-bookorbit-sources-cover-art)

Discover how BookOrbit sources book cover art using local files, embedded EPUB data, and external providers like Open Library and Google Books. Learn about efficient image retrieval.

- Tags: how-to-guide
- Published: 2026-08-30

### [How to Configure Metadata Providers in BookOrbit: A Complete Guide](/bookorbit/bookorbit/how-to-configure-metadata-providers-bookorbit)

Master BookOrbit metadata provider configuration using the REST API or Settings UI. Securely manage credentials and access with MANAGE_METADATA_PROVIDERS permission. Learn more now.

- Tags: how-to-guide
- Published: 2026-08-30

### [How the KOReader Plugin Syncs Reading Progress: BookOrbit's Kosync Implementation](/bookorbit/bookorbit/how-koreader-plugin-syncs-reading-progress)

Learn how the KOReader plugin syncs reading progress using BookOrbit's kosync protocol. Discover how it merges progress via REST endpoints and handles resets.

- Tags: internals
- Published: 2026-08-30

### [How to Install the BookOrbit KOReader Plugin: Complete Setup Guide](/bookorbit/bookorbit/how-to-install-bookorbit-koreader-plugin)

Install the BookOrbit KOReader plugin easily. Connect to the server hosted manifest URL for automatic sync of reading progress bookmarks and annotations across your e-readers.

- Tags: how-to-guide
- Published: 2026-08-30

### [What Is the BookOrbit Plugin for KOReader? A Complete Technical Guide](/bookorbit/bookorbit/what-is-bookorbit-koreader-plugin)

Learn about the BookOrbit plugin for KOReader, a technical guide to its NestJS REST API for syncing reading progress, bookmarks, and annotations with the BookOrbit cloud service.

- Tags: deep-dive
- Published: 2026-08-30

### [How Kobo and KOReader Devices Register with BookOrbit: Complete API Guide](/bookorbit/bookorbit/how-kobo-koreader-register-bookorbit)

Learn how to register Kobo and KOReader devices with BookOrbit. This guide details the API process using the POST /api/v1/kobo/devices endpoint and authentication tokens.

- Tags: api-reference
- Published: 2026-08-30

### [How BookOrbit Merges Annotations from Different Reading Sources](/bookorbit/bookorbit/how-bookorbit-merges-annotations-different-sources)

Discover how BookOrbit uses its annotation hub to merge annotations from Kobo, KOReader, and web sources, ensuring a unified reading experience.

- Tags: how-to-guide
- Published: 2026-08-30

### [BookOrbit Three-Way Sync Architecture Explained: KOReader, Server, and Kobo Cloud](/bookorbit/bookorbit/bookorbit-three-way-sync-architecture)

Understand BookOrbit's three-way sync architecture connecting KOReader, server, and Kobo Cloud. Learn how it synchronizes libraries, progress, and annotations seamlessly across devices.

- Tags: architecture
- Published: 2026-08-30

### [How BookOrbit Synchronizes Reading Progress Between Kobo KOReader and the Web Reader](/bookorbit/bookorbit/how-bookorbit-syncs-reading-progress-kobo-koreader-web-reader)

Learn how BookOrbit synchronizes reading progress across Kobo, KOReader, and web readers. Achieve seamless bidirectional resume with efficient state syncing and conflict resolution.

- Tags: internals
- Published: 2026-08-29

### [BookOrbit Architectural Decisions: Inside the Scalable Monorepo Design](/bookorbit/bookorbit/what-are-the-bookorbit-architectural-decisions)

Discover the BookOrbit architectural decisions behind its scalable monorepo. Learn about strict pnpm, module boundaries, typed config, and NestJS patterns.

- Tags: architecture
- Published: 2026-08-28

### [How to Debug BookOrbit Applications: A Complete Developer Guide](/bookorbit/bookorbit/how-to-debug-bookorbit-applications)

Debug BookOrbit applications effectively. Learn to use structured logging, Vitest E2E tests, and NestJS backend error traces to quickly find and fix issues in scanner, upload, or sync services.

- Tags: how-to-guide
- Published: 2026-08-28

### [BookOrbit Development Best Practices: Monorepo Standards for Vue 3 and NestJS](/bookorbit/bookorbit/what-are-the-bookorbit-development-best-practices)

Discover BookOrbit development best practices. Learn how to implement a pnpm monorepo with Vue 3, NestJS, DTO validation, structured logging, and CI/CD for efficient project management.

- Tags: best-practices
- Published: 2026-08-28

### [How to Add New Features to BookOrbit: A Complete Development Guide](/bookorbit/bookorbit/how-to-add-new-features-to-bookorbit)

Learn how to add new features to BookOrbit. This guide covers creating NestJS modules, Vue 3 composables, API calls with fetch, and following commit conventions for smooth development.

- Tags: how-to-guide
- Published: 2026-08-28

### [BookOrbit Project Structure: A Complete Guide to the Monorepo Architecture](/bookorbit/bookorbit/what-is-the-bookorbit-project-structure)

Explore the BookOrbit project structure, a PNPM monorepo featuring NestJS backend, Vue 3 frontend, and shared types for type-safe full-stack development with PostgreSQL and Drizzle ORM.

- Tags: architecture
- Published: 2026-08-28

### [How to Secure the BookOrbit API: Authentication & Authorization Guide](/bookorbit/bookorbit/how-to-secure-bookorbit-api)

Learn how to secure the BookOrbit API with JWT authentication authorization rate limiting and input validation to protect against unauthorized access and attacks.

- Tags: how-to-guide
- Published: 2026-08-28

### [BookOrbit Frontend Libraries: Complete Vue 3 Stack and Architecture](/bookorbit/bookorbit/what-are-the-bookorbit-frontend-libraries)

Explore the BookOrbit Vue 3 frontend stack. Discover libraries for state management, routing, styling, PDF viewing, rich-text editing, and real-time updates.

- Tags: architecture
- Published: 2026-08-28

### [How to Set Up BookOrbit Logging and Monitoring: Complete Configuration Guide](/bookorbit/bookorbit/how-to-set-up-bookorbit-logging-and-monitoring)

Configure BookOrbit logging and monitoring easily. This guide covers structured logging, log levels, and the health endpoint for seamless integration. Master BookOrbit monitoring now.

- Tags: how-to-guide
- Published: 2026-08-28

### [BookOrbit CI/CD Pipelines: A Complete Guide to GitHub Actions Automation](/bookorbit/bookorbit/what-are-the-bookorbit-ci-cd-pipelines)

Discover BookOrbit CI/CD pipelines: seven GitHub Actions workflows automating testing, containerization, releases, and localization. Learn about fast unit tests and nightly E2E validation.

- Tags: how-to-guide
- Published: 2026-08-28

### [How to Handle BookOrbit Data Migrations: Complete Guide to the 7-Step Framework](/bookorbit/bookorbit/how-to-handle-bookorbit-data-migrations)

Master BookOrbit data migrations with our 7-step framework. Safely import reading states, metadata, and user mappings using dry-run planning and transactional execution.

- Tags: migration-guide
- Published: 2026-08-28

### [BookOrbit Backend Microservices: A Complete Guide to the NestJS Modular Architecture](/bookorbit/bookorbit/what-are-the-bookorbit-backend-microservices)

Explore BookOrbit backend microservices built with NestJS. Understand the modular architecture including Reading-Session, User-Statistics, Release-Notes, and Koreader modules for efficient API management and domain logic.

- Tags: deep-dive
- Published: 2026-08-28

### [How to Integrate BookOrbit with Other Services: A Complete API Guide](/bookorbit/bookorbit/how-to-integrate-bookorbit-with-other-services)

Integrate BookOrbit with external services using its REST API or by extending the NestJS backend. Learn how to connect BookOrbit to your workflow with this comprehensive API guide.

- Tags: api-reference
- Published: 2026-08-28

### [BookOrbit Database Technologies: PostgreSQL and Drizzle ORM Implementation](/bookorbit/bookorbit/what-are-the-bookorbit-database-technologies)

Discover BookOrbit database technologies: PostgreSQL with Drizzle ORM and node-postgres. Learn about essential extensions for UUID generation, fuzzy search, text normalization, and vector operations.

- Tags: deep-dive
- Published: 2026-08-28

### [How to Manage BookOrbit User Roles and Permissions: A Complete Developer Guide](/bookorbit/bookorbit/how-to-manage-bookorbit-user-roles-and-permissions)

Learn to manage BookOrbit user roles and permissions with this developer guide. Explore the centralized, permission-based authorization system using NestJS guards, TypeScript decorators, and shared enums.

- Tags: how-to-guide
- Published: 2026-08-28

### [What Authentication Methods Does BookOrbit Support?](/bookorbit/bookorbit/what-authentication-methods-does-bookorbit-support)

Explore BookOrbit's authentication methods: local, OIDC, magic-link, and setup tokens. Secure your data with JWT-based sessions and rotating refresh tokens.

- Tags: api-reference
- Published: 2026-08-28

### [How to Deploy BookOrbit to Production: Complete Docker Guide](/bookorbit/bookorbit/how-to-deploy-bookorbit-to-production)

Deploy BookOrbit to production with our comprehensive Docker guide. Learn to build images, configure env variables, and orchestrate your PostgreSQL stack using Docker Compose.

- Tags: how-to-guide
- Published: 2026-08-28

### [BookOrbit Frontend Framework: Vue 3 Architecture with TypeScript and Vite](/bookorbit/bookorbit/what-is-the-bookorbit-frontend-framework)

Explore the BookOrbit frontend framework built with Vue 3, TypeScript, and Vite. Discover its architecture for efficient web application development with Pinia and Tailwind CSS.

- Tags: architecture
- Published: 2026-08-28

### [How to Run BookOrbit Tests: A Complete Guide to Unit and E2E Testing](/bookorbit/bookorbit/how-to-run-bookorbit-tests)

Learn how to run BookOrbit tests. This guide covers unit and E2E testing steps including dependency installation, database setup, and test execution with pnpm commands.

- Tags: how-to-guide
- Published: 2026-08-28

### [BookOrbit API Endpoints: Complete REST API Reference for the Self-Hosted Library](/bookorbit/bookorbit/what-are-the-api-endpoints-for-bookorbit)

Explore BookOrbit API endpoints for your self-hosted library. Access comprehensive REST API references for authentication, library management, book operations, and integrations.

- Tags: api-reference
- Published: 2026-08-28

### [BookOrbit Database Schema Design: PostgreSQL Structure with Drizzle ORM](/bookorbit/bookorbit/how-is-the-bookorbit-database-schema-designed)

Explore the BookOrbit database schema design. Learn how PostgreSQL structure with Drizzle ORM ensures data integrity and query performance through modular tables and strict constraints.

- Tags: architecture
- Published: 2026-08-28

### [What Programming Languages Does BookOrbit Use? A Complete Technical Breakdown](/bookorbit/bookorbit/what-programming-languages-does-bookorbit-use)

Discover the programming languages BookOrbit uses: TypeScript, NestJS, Vue 3, SQL, YAML, Bash, and Docker. Get a complete technical breakdown of their stack.

- Tags: deep-dive
- Published: 2026-08-28

### [How to Contribute to BookOrbit: A Complete Guide to the Contribution Workflow](/bookorbit/bookorbit/how-to-contribute-to-bookorbit-project)

Learn how to contribute to the BookOrbit project. Follow our guide to fork the repo, set up the monorepo, and adhere to the issue-first workflow for seamless contributions.

- Tags: how-to-guide
- Published: 2026-08-28

### [BookOrbit Backend Components: NestJS Modular Architecture Explained](/bookorbit/bookorbit/what-are-the-main-components-of-bookorbit-backend)

Explore the BookOrbit backend's NestJS modular architecture. Discover its domain-specific modules, Drizzle ORM, and JWT security for a robust application.

- Tags: architecture
- Published: 2026-08-28

### [How BookOrbit Defines and Organizes Database Tables Using Drizzle ORM](/bookorbit/bookorbit/how-are-database-tables-defined-and-organized-in-bookorbit-using-drizzle-orm)

Learn how BookOrbit defines and organizes database tables using Drizzle ORM in TypeScript. Discover type-safe columns, constraints, and relations for robust application development.

- Tags: how-to-guide
- Published: 2026-08-28

### [Logging Conventions and Format in BookOrbit: A Complete Developer Guide](/bookorbit/bookorbit/what-are-the-logging-conventions-and-format-used-in-bookorbit)

Master BookOrbit logging conventions and format. Learn the three-phase structure, mandatory sanitization, and consistent key ordering for effective development and debugging.

- Tags: how-to-guide
- Published: 2026-08-27

### [How BookOrbit Implements Global Exception Filtering and Error Response Format](/bookorbit/bookorbit/how-does-bookorbit-handle-global-exception-filtering-and-error-response-format)

Discover how BookOrbit centralizes error handling with its GlobalExceptionFilter, returning standardized JSON responses for efficient debugging and API management.

- Tags: internals
- Published: 2026-08-27

### [How BookOrbit Uses NestJS ConfigModule for Type-Safe Configuration Management](/bookorbit/bookorbit/how-is-configuration-managed-in-bookorbit-using-nestjs-config-module)

Discover how BookOrbit leverages NestJS ConfigModule for type-safe configuration. Learn to centralize and validate environment variables with Zod for robust application settings.

- Tags: how-to-guide
- Published: 2026-08-27

### [How BookOrbit AuditInterceptor Works: A Deep Dive into User Action Logging](/bookorbit/bookorbit/how-does-the-audit-interceptor-work-in-bookorbit-for-logging-user-actions)

Explore how BookOrbit AuditInterceptor logs user actions. Learn about the @Auditable decorator and centralized audit events in this deep dive into the NestJS interceptor.

- Tags: deep-dive
- Published: 2026-08-27

### [How BookOrbit Configures Rate Limiting for Sensitive API Endpoints](/bookorbit/bookorbit/how-is-rate-limiting-configured-for-sensitive-endpoints-in-bookorbit)

Learn how BookOrbit configures rate limiting for sensitive API endpoints. Discover how the SensitiveEndpointThrottlerGuard protects critical routes with stricter limits.

- Tags: how-to-guide
- Published: 2026-08-27

### [How BookOrbit Applies Global Guards: JwtAuthGuard and PermissionGuard Implementation](/bookorbit/bookorbit/how-are-global-guards-like-jwt-auth-guard-and-permission-guard-applied-in-bookorbit)

Discover how BookOrbit implements global JwtAuthGuard and PermissionGuard in its root AppModule for secure authentication and authorization on all HTTP requests.

- Tags: how-to-guide
- Published: 2026-08-27

### [Book Metadata Extraction Formats in BookOrbit: Supported File Types and Implementation Guide](/bookorbit/bookorbit/what-formats-does-bookorbit-support-for-book-metadata-extraction)

Discover BookOrbit's extensive book metadata extraction formats, including EPUB, PDF, MOBI, CBZ, CBR, FB2, M4B, and FLAC. Learn how to implement these extractors with our guide.

- Tags: how-to-guide
- Published: 2026-08-27

### [How BookOrbit Handles External Service Integrations: Hardcover and Readwise Architecture](/bookorbit/bookorbit/how-does-bookorbit-handle-external-service-integrations-like-hardcover-and-readwise)

Discover how BookOrbit seamlessly integrates external services like Hardcover and Readwise using dedicated NestJS modules for robust networking, auth, and data mapping. Learn about the architecture.

- Tags: architecture
- Published: 2026-08-27

### [How BookOrbit Merges and Manages Annotations from Different Readers](/bookorbit/bookorbit/how-does-bookorbit-merge-and-manage-annotations-from-different-readers)

Discover how BookOrbit merges and manages reader annotations from Kobo, KOReader, and web clients. Learn about its unified schema and deduplication process for seamless synchronization.

- Tags: internals
- Published: 2026-08-27

### [How BookOrbit Implements KOReader Plugin Support and Sync: Architecture and API Deep Dive](/bookorbit/bookorbit/how-does-bookorbit-handle-koreader-plugin-support-and-sync)

Learn how BookOrbit implements KOReader plugin support and sync using a Lua HTTP client and subprocesses. Achieve real-time sync for progress, annotations, and catalog browsing.

- Tags: architecture
- Published: 2026-08-27

### [How BookOrbit Implements Kobo Device Synchronization: A Technical Deep Dive](/bookorbit/bookorbit/how-is-kobo-device-synchronization-implemented-in-bookorbit)

Discover how BookOrbit implements Kobo device synchronization using PostgreSQL snapshots, a composite sync token, and API proxying for seamless library management.

- Tags: deep-dive
- Published: 2026-08-27

### [How Library Scanning and File Discovery Works in BookOrbit: A Technical Deep Dive](/bookorbit/bookorbit/how-does-the-library-scanning-and-file-discovery-work-in-bookorbit)

Explore BookOrbit's library scanning and file discovery. Learn how the NestJS service efficiently walks folders, builds book candidates, and classifies files for your library.

- Tags: deep-dive
- Published: 2026-08-27

### [How BookOrbit Manages Core Book Metadata and File Handling: A Technical Deep Dive](/bookorbit/bookorbit/how-does-bookorbit-manage-core-book-metadata-and-file-handling)

Discover how BookOrbit manages book metadata in PostgreSQL and files on disk using MetadataService and ScannerService for efficient storage and synchronization. Learn the technical details.

- Tags: deep-dive
- Published: 2026-08-27

### [BookOrbit NestJS Backend Module Organization Convention: A Feature‑First Architecture Guide](/bookorbit/bookorbit/what-is-the-module-organization-convention-in-bookorbits-nestjs-backend)

Discover BookOrbit's NestJS module organization convention. Learn how their feature-first architecture structures controllers, services, and repositories for efficient backend development.

- Tags: architecture
- Published: 2026-08-27

### [How to Configure the API Prefix in BookOrbit Backend](/bookorbit/bookorbit/how-to-configure-the-api-prefix-in-bookorbit-backend)

Configure the API prefix in BookOrbit backend using APP_API_PREFIX. Learn how to set your global API prefix and exclude endpoints like /health for seamless integration.

- Tags: how-to-guide
- Published: 2026-08-27

### [How BookOrbit Handles PostgreSQL Database Connections with Drizzle ORM](/bookorbit/bookorbit/how-does-bookorbit-handle-database-connections-with-postgresql-and-drizzle-orm)

Learn how BookOrbit manages PostgreSQL database connections using Drizzle ORM. Discover their approach to type-safe data access and dependency injection in NestJS.

- Tags: how-to-guide
- Published: 2026-08-27

### [BookOrbit Backend Technology Stack: NestJS 11, Fastify, and Drizzle ORM Deep Dive](/bookorbit/bookorbit/what-is-the-technology-stack-for-bookorbit-backend)

Explore the BookOrbit backend technology stack featuring NestJS 11, Fastify, and Drizzle ORM. Learn about the TypeScript, PostgreSQL, and security libraries powering this robust API.

- Tags: deep-dive
- Published: 2026-08-27

### [BookOrbit Frontend Technology Stack: A Complete Guide to the Vue 3 Architecture](/bookorbit/bookorbit/what-is-the-technology-stack-for-bookorbit-frontend)

Explore the BookOrbit frontend technology stack featuring Vue 3, Vite, TypeScript, and Tailwind CSS. Discover our architecture for a seamless user experience.

- Tags: architecture
- Published: 2026-08-27

### [How to Set Up BookOrbit with pnpm Monorepo: Complete Development Guide](/bookorbit/bookorbit/how-to-set-up-bookorbit-with-pnpm-monorepo)

Learn to set up BookOrbit with a pnpm monorepo. Follow our guide to clone the repo, install dependencies, configure the environment, and launch development servers quickly.

- Tags: how-to-guide
- Published: 2026-08-27

