Fact-checked by Grok 2 weeks ago

BookStack

BookStack is a and open-source for organizing and storing , functioning as a simple, self-hosted and system that structures content into books, chapters, and pages. Developed using the PHP-based framework and requiring a database, it emphasizes ease of use with a editor, making it suitable for teams with varying technical skills. Released under the , BookStack supports features like searchable content, role-based permissions, authentication integrations (including LDAP, SAML, and OIDC), multi-language support for over 10 languages, and export options for PDFs and . It can run on modest hardware, such as a low-cost , and includes tools for page revisions, diagrams via integration, and customizable themes with dark and light modes. Initiated on July 12, 2015, by developer to address the need for an accessible documentation tool for mixed-skill teams, BookStack has evolved into a community-driven hosted on , with Brown remaining the primary contributor. As of July 2025, marking its tenth anniversary, the platform has seen steady releases, with the November 2025 release of version 25.11 introducing database structure changes for better performance, enhancements, and UI refinements such as improved time-zone display, while amassing 16,926 stars and supporting a global user base through official demos and . Its opinionated design prioritizes a straightforward out-of-the-box experience over extensive customization, distinguishing it from more complex alternatives in the open-source space.

Overview

Development and licensing

BookStack was developed by , an English web developer, as a personal project to address documentation needs in his mixed-technical-skilled workplace. The project began with its initial commit on July 12, 2015, under the name , and was renamed to BookStack just 11 days later on July 23, 2015, reflecting a rapid evolution in its conceptual focus. This early development laid the foundation for a self-hosted platform designed for organizing and sharing knowledge in a book-like structure. Released under the , BookStack permits free use, modification, and distribution, fostering widespread adoption among individuals and organizations seeking customizable documentation solutions. As an open-source project hosted on , it encourages community involvement through pull requests for code enhancements and issue tracking for bug reports and feature requests, enabling collaborative improvements while maintaining core stability. The platform's efforts have resulted in support for 52 languages, achieved through volunteer-driven translations coordinated via Crowdin, allowing users worldwide to interface with BookStack in their preferred language. Built on the framework, it leverages a robust backend for efficient .

Core architecture

BookStack's core architecture is built on the PHP framework for the backend, leveraging its robust features for , , and capabilities to handle application logic and data interactions. This foundation enables efficient server-side processing, with version 8.2 or higher required to support modern syntax and security standards. The primary database backend utilizes version 5.7 or later, or equivalently version 10.2 or later, to store all content, user data, and metadata in a single managed by the application. This relational structure supports scalable storage for documentation elements, with full permissions granted to the database user for creation and maintenance. On the frontend, BookStack employs standard for structure, CSS for styling, and for interactivity, prioritizing a lightweight and straightforward implementation without reliance on heavy external libraries or frameworks beyond core web standards. This design choice facilitates easy self-hosting on standard web servers, requiring only a PHP-compatible environment and minimal dependencies like for package management, ensuring broad compatibility and reduced overhead. At the heart of the architecture lies a where books serve as the primary containers for organizing content, encompassing optional chapters and individual pages that hold the actual information. This structure directly influences the by providing intuitive through nested views and extends to the endpoints, which mirror the hierarchy for programmatic access to books, chapters, and pages. The organizational structure using books, chapters, and pages allows for flexible content grouping while maintaining relational integrity in the database. Security is embedded architecturally through (RBAC), where predefined or custom define permissions for system-wide actions, content creation, and asset management, with granular overrides applicable at the shelf, book, chapter, or page levels. stack additively for , and permissions follow a priority logic that favors specificity—such as content-level grants overriding global denials—ensuring admins retain full while enabling fine-tuned for other .

History

Founding and early development

BookStack was initiated by , a UK-based , in response to his need for a straightforward, self-hosted platform suitable for a with varying levels, as existing options often involved per-user costs or required significant customization for usability. The project's first commit occurred on July 12, 2015, initially under the name "," which at that stage consisted solely of basic book structures without support for users, chapters, or pages. Just eleven days later, on July 23, 2015, the project was renamed to BookStack, coinciding with the addition of sidebar navigation to enhance organization. By October 2015, the core layout had been finalized, incorporating a , header bar, and an overall design inspired by established tools, establishing the foundational structure that would define its book-chapter-page hierarchy. The early beta phase, beginning in August 2015, concentrated on implementing essential functionalities, including user management, notifications, a editor for page creation, revision tracking, and chapter organization to support hierarchical content structuring. BookStack remained in beta status during this period, prioritizing stability and core features over advanced capabilities. Community engagement began with the public repository, where the project was officially announced in late 2015 via forums like Reddit's r/selfhosted, leading to initial user adoption by 2016 as evidenced by steady website traffic growth and over 200 stars by mid-year. This early traction was bolstered by community referrals and documentation resources, fostering organic adoption among users seeking simple knowledge management solutions.

Major releases and milestones

BookStack's development progressed significantly from 2019, with key releases introducing enhancements to usability, stability, and functionality. The v0.26 release on May 6, 2019, focused on mobile optimization and refinements, providing a refreshed design with improved mobile experience and new features. A pivotal milestone occurred on April 9, 2021, with the v21.04 release, which marked the end of the phase and transitioned to a full using a year-month , signifying the platform's maturity after over five years of development. In terms of community growth, BookStack reached 10,000 stars on September 15, 2022, reflecting its rising popularity as an open-source documentation platform. Advancing into 2025, the v25.05 release on May 31 introduced a comment system for pages and books, along with features like comment referencing and archiving support. The v25.07 release on July 30 brought enhanced editing tools, including a editor, and expanded customization options such as ZIP import/export via and tag-based styling derived from parent structures. July 2025 also celebrated the project's 10-year anniversary, commemorating the initial commit on July 12, 2015, with reflections on its evolution, community contributions, and statistical achievements like 16,926 GitHub stars. Most recently, the v25.11 release on November 9 included a database schema overhaul for improved performance, alongside expanded REST API endpoints for comments and images. These updates continue to build on BookStack's Laravel foundation for ongoing enhancements in scalability and integration.

Content Management

Organizational structure

BookStack utilizes a hierarchical content model to facilitate organized , featuring four primary levels: shelves, books, chapters, and pages. Shelves function as optional top-level collections that group multiple books, enabling thematic or categorical organization across broader scopes. Books serve as mandatory top-level containers for all , providing the foundational for housing related materials. Chapters act as optional subdivisions within books, allowing for intermediate grouping of related topics, while pages constitute the essential, mandatory units for holding individual pieces of such as text, images, and attachments. This layered approach promotes scalability, from simple single-book setups to complex multi-shelf libraries. The mandatory elements—books and pages—ensure a consistent baseline for content creation, with chapters and shelves available optionally to enhance granularity without imposing rigidity. For example, a user documenting software procedures might employ books for major modules and pages for step-by-step guides, adding chapters only where subtopics warrant separation, and shelves to aggregate books by project phase. This flexibility supports diverse use cases, from personal notes to enterprise wikis. Within books, chapters and pages support intuitive sorting and reordering through drag-and-drop mechanisms in the interface, or via bulk operations like the "Sort" action for maintaining sequential logic. Books can similarly be reordered within shelves or across the system using manual adjustments or automated sort rules based on criteria such as name or creation date, ensuring content remains navigable and user-defined. Page-level revision tracks all changes, automatically generating a new each time content is saved, complete with timestamps, authors, and optional change summaries. Users access this history via the "Revisions" link in the page's sidebar menu, where they can browse versions, view side-by-side diffs highlighting additions and deletions, and restore any prior version to overwrite the current one, provided they hold edit permissions on the page. To manage storage, BookStack defaults to retaining the 100 most recent revisions per page, pruning older ones automatically, though administrators can adjust or disable this limit via configuration. Permissions operate on a role-based system and are inheritable down the hierarchy, with options to override at shelves, books, chapters, or pages for targeted control. Common actions like view (access content), edit (modify details), and delete (remove items) can be granted or restricted per role at any level; for instance, a book's view permission cascades to its chapters and pages unless a chapter-specific override denies edit access to certain users. This granular application supports secure, context-specific access without global restrictions.

Editing capabilities

BookStack provides users with dual editing interfaces for creating and modifying page content: a visual What You See Is What You Get (WYSIWYG) editor and a Markdown source editor, allowing seamless toggling between them via a dropdown menu when editing permissions permit. The WYSIWYG editor functions similarly to standard word-processing tools, supporting direct formatting through toolbar buttons and keyboard shortcuts, such as Ctrl+B (or Cmd+B on macOS) for bold text and Ctrl+K for inserting hyperlinks. Meanwhile, the Markdown editor adheres to the CommonMark specification with extensions for tables and task lists, enabling users to write structured content using simple syntax like # Header for headings or | Column1 | Column2 | for tables, and includes a live preview pane that updates in real-time as text is entered. Rich text capabilities in both editors facilitate the inclusion of multimedia and structural elements without requiring external tools. Users can insert images directly into content via upload or URL linking (e.g., ![Alt text](image-url) in Markdown), embed external content through hyperlinks or iframes where supported, create tables for data organization, generate diagrams using an integrated diagrams.net editor that opens inline for drawing and editing flowcharts, UML diagrams, or other visuals, and syntax highlighting for additional languages including Groovy (as of v25.11). These features extend to advanced formatting like blockquotes, code blocks, ordered and unordered lists, and callouts for highlighting key information, ensuring content remains visually engaging and accessible. At the page level, BookStack supports attachments for supplementary files, allowing users to documents, images, or other via a sidebar panel in the editor (accessible through a paperclip icon) or by drag-and-drop. Once attached, files can be linked within the page content by generating URLs, dragging them into the editor, or using the insert link tool, with attachments inheriting the page's view permissions for secure access and download. This system stores files server-side or via cloud options like , enabling inline previews for compatible formats while maintaining separation from core content to avoid bloating page storage. Collaboration is enhanced through an updated threaded comment system, with new abilities introduced in version 25.05, which permits users to add comments directly on pages and books for discussion and . Comments can reference specific sections of via inline selection, appearing as highlighted bubbles or badges that link to threaded replies in a sidebar; these references update dynamically to indicate if the targeted has changed, with options to archive threads for organization. This feature, available in the editor and on viewed pages, fosters iterative improvements without altering the original . To prevent during editing sessions, BookStack implements saving and auto-save mechanisms across both editors. Changes are automatically preserved as every few seconds, with manual saves triggered by Ctrl+S (or Cmd+S), allowing users to resume work later; full saves use Ctrl+Enter to publish while continuing the session. These are tied to the hierarchical structure of books, chapters, and pages, ensuring edited content integrates smoothly into the overall organizational framework.

User Experience

Search and navigation

BookStack provides a engine that indexes the names, descriptions, and body content of books, chapters, and pages, enabling to discover relevant information across the platform. The supports relevance-based ranking by default, with options for advanced sorting such as by last commented date using syntax like {sort_by:last_commented}. can perform global searches via the header bar, which queries all content levels, or scoped searches within a specific book or chapter using sidebar inputs. Advanced search features include filters for content type (e.g., {type:page} or {type:chapter}), tags (e.g., [location=london] or [name=value] with operators like =, >, or like), and other criteria such as update dates (e.g., {updated_after:2016-12-30}) or ownership (e.g., {updated_by:me}). Search syntax allows for exact phrases in quotes (e.g., "london meeting"), multi-term matching (e.g., london meeting), and negation with a minus sign (e.g., -location). Results display live previews with options to view all matches, including pagination for large sets as of version 25.11 (November 2025), facilitating quick navigation to indexed items. Navigation within BookStack is aided by a sidebar that displays the hierarchical structure of books and chapters, with expandable sections and next/previous links for sequential traversal. Breadcrumbs appear above content areas, providing a clickable path from shelves or top-level books to the current page, helping users maintain context during exploration. Internal linking supports cross-page hyperlinks via , which can reference entire pages or specific sections using anchors (e.g., appending #section to scroll to headings or selected text blocks). Paragraph-level anchors are generated automatically for headings in the editor, and users can create custom ones by selecting text to obtain a popup. A recent activity feed on the homepage and within books lists updates such as page edits, with clickable links to affected content and a "View All" option for comprehensive overviews. This feed enhances navigation by highlighting changes across the content structure, complementing the platform's book-based hierarchy. As of version 25.11 (November 2025), UI refinements include consistent absolute time displays with time zone support, improving temporal context in feeds and throughout the interface.

Authentication and permissions

BookStack provides built-in authentication through and password registration, where new users must verify their to activate their account. This process ensures secure by requiring confirmation via an email link sent upon registration. For broader access, BookStack integrates with third-party services for social logins, including , , and , allowing users to authenticate using their existing accounts. Enterprise options extend this capability with LDAP for directory-based login, where user details are synced from an LDAP server, and support for providers like , enabling seamless integration with systems. Access control in BookStack employs granular role-based access control (RBAC), with default roles including Guest, Viewer, Editor, Creator, and Admin, each defining specific permissions for actions like viewing, editing, or managing content. Permissions are scoped to organizational levels such as shelves, books, chapters, and pages, allowing overrides at more specific content hierarchies while inheriting from broader levels. As detailed in the organizational structure, these permissions cascade downward unless explicitly restricted, providing fine-tuned control over content visibility and modification. To enhance security, BookStack supports (MFA) on a per-user basis, using time-based one-time passwords (TOTP) generated by authenticator apps, along with backup codes for recovery. Administrators can enforce MFA requirements through role settings, prompting users to enable it upon login. Session management relies on secure cookies for maintaining user logins, with options to enforce secure transmission over , and includes standard logout functionality to terminate active sessions and clear authentication data.

Deployment and Extensibility

Installation and configuration

BookStack requires specific system prerequisites to ensure compatibility and performance. The platform is built on version 8.2 or higher, including extensions such as , DOM, iconv, mbstring, mysqlnd, , PDO, PDO MySQL, tokenizer, XML, and ZIP; optional extensions like LDAP and EXIF may be needed for advanced features. Additionally, it needs 5.7 or later, or 10.2 or later, along with for repository management and updates, version 2.2.0 or higher for handling PHP dependencies, and a compatible such as or to serve the application files. For a manual installation, begin by cloning the official repository using the command git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch bookstack, which downloads the stable release branch into a directory named "bookstack." Next, navigate into the directory and execute composer install --no-dev to install the required dependencies without development tools. Create a copy of the example environment file with cp .env.example .env, then edit .env to configure the database connection details (such as DB_HOST, DB_DATABASE, DB_USERNAME, and DB_PASSWORD) and settings (like MAIL_MAILER, MAIL_HOST, and MAIL_FROM_ADDRESS). Ensure the directories storage, bootstrap/cache, and public/uploads have appropriate write permissions for the user. Generate an application key by running php artisan key:generate. Point the web server's document root to the public folder, then execute php artisan migrate to set up the . Access the application via the web server, logging in with the default credentials [email protected] and password, and immediately change them upon first use. BookStack supports containerized deployment through community-maintained images, such as the one provided by LinuxServer.io, enabling quick setup in isolated environments. To deploy, use a Compose file that pulls the (e.g., linuxserver/bookstack), maps ports (typically 80 for HTTP), and configures persistent volumes for the /config (application , including uploads for files and images) and a separate persistent volume for the database in its dedicated container, to prevent on container restarts. An example setup involves defining services for BookStack and a / container, setting environment variables for database credentials and the application , then running docker-compose up -d to start the stack. This approach simplifies dependency management and scalability on servers with installed. After installation, configure core settings via the .env file to tailor the application to the . Set the APP_URL variable to the full base of the installation (e.g., https://example.com) to ensure proper link generation and redirects. For email functionality, specify the driver and details, such as MAIL_MAILER=smtp, MAIL_HOST=smtp.example.com, MAIL_PORT=587, MAIL_USERNAME, and MAIL_PASSWORD, allowing notifications for registrations and content updates. The initial is automatically provisioned upon first with the default credentials, after which additional users can be managed through the application's interface. Common configurations include securing the with and adjusting options. To enable , configure the (e.g., via certificates in or ) to enforce SSL/TLS , updating the APP_URL to use https:// accordingly. storage defaults to the local filesystem, with uploaded images and attachments saved to storage/app/public/uploads; this path can be customized in config/filesystems.php if needed, though local is recommended for simplicity in most self-hosted setups. Ensure all configurations are tested post-setup to verify functionality.

Customization and integrations

BookStack supports extensive through its theme system, which allows users to modify both the visual appearance and underlying behavior of the platform. The visual theme system enables overrides for views, translation strings, and icons primarily via CSS and template modifications, providing flexibility for and adjustments without altering core files. This system is implemented by creating a custom theme directory and setting the APP_THEME , though such overrides are considered unstable and may require updates after core releases. Complementing this, the logical theme system uses event hooks to extend functionality, such as adding custom routes or commands, allowing deeper behavioral changes like integrating additional logic during content processing. The platform's REST facilitates programmatic interactions, supporting (CRUD) operations on content entities like books, chapters, pages, and shelves, as well as user management tasks. for API requests is handled via API tokens, which can be generated for users with the 'Access system API' permission, enabling secure external access. In 25.11, released on November 9, 2025, the was expanded to include full CRUD endpoints for comments and new retrieval options for image data, enhancing capabilities for dynamic content handling. Users can inject custom and to embed external elements, such as calendars or interactive charts, either through the editor's HTML mode for page-specific additions or via the global "Custom HTML Head Content" setting in the administration panel for site-wide scripts and styles. This injection method supports overrides for functionality and appearance but requires caution to avoid conflicts with updates or security policies like (). While BookStack lacks a formal ecosystem, extensions are achieved through the systems and community-contributed hacks, with a limited but growing set of tools for enhancements like LDAP group synchronization and scripted exports via the . For instance, LDAP is natively supported for user import and role mapping, configurable via environment variables to sync groups with BookStack roles. Integrations with external services are enabled through outgoing webhooks, which trigger POST requests in a Slack-compatible format for events like content updates, allowing notifications to platforms such as Discord, Zulip, or . Configuration occurs in the "Settings > Webhooks" interface, with options for asynchronous processing via a worker to minimize performance impact. Additionally, (SSO) is supported via , replacing default authentication with identity provider login, automatic user registration using external IDs, and optional group synchronization to roles. Setup involves editing the .env file with IdP metadata and providing BookStack's ACS and SLS endpoints to the provider.

References

  1. [1]
    BookStack
    BookStack is a simple, open-source, self-hosted, easy-to-use platform for organising and storing information.Installation · Docs · Support for BookStack · Alternative Open Source Options
  2. [2]
    BookStackApp/BookStack: A platform to create ... - GitHub
    BookStack is an opinionated documentation platform that provides a pleasant and simple out-of-the-box experience.
  3. [3]
    The BookStack Project FAQ
    How did BookStack start? Dan Brown started building BookStack in 2015 while looking for a documentation platform to use for his mixed-technical-skilled ...Origins, Goals &... · Feature Development · Services
  4. [4]
    A Decade of BookStack
    Jul 12, 2025 · BookStack is now over 10 years old! The initial commit for the project was made on the 12th of July 2015, and here we are a decade later.Video With Q&a · Financials · Bookstack, In NumbersMissing: history | Show results with:history
  5. [5]
    A Year of BookStack
    Initial Commit (Oxbow) - 12 Jul 2015. The first commit was super simple. It was all and only about books. No users, chapters or pages. The ...Back In Time · Bookstack With A Sidebar... · Feature Dump And Polish...
  6. [6]
  7. [7]
    bookstack — Translation Project on Crowdin
    ### Summary: Languages Supported or Translated for BookStack
  8. [8]
    Installation - BookStack
    BookStack installation requires PHP >= 8.2, MySQL >= 5.7 or MariaDB >= 10.2, and manual install involves cloning the repo and running composer install.Missing: architecture | Show results with:architecture
  9. [9]
    Content Overview - BookStack
    Just like normal books, BookStack books can contain chapters and pages. You start off by creating a book which acts as the highest level of categorisation.
  10. [10]
    Roles and Permissions - BookStack
    Roles can be created and edited by an admin user by navigating to “Settings > Roles” within the BookStack interface.
  11. [11]
    Beta Release v0.26.0 - BookStack
    BookStack v0.26 is finally here, bringing a refreshed design that includes new functionality while providing a much better mobile experience.
  12. [12]
    BookStack Release v21.04
    Apr 9, 2021 · For this release we're dropping the beta and changing our version scheme as detailed below. This release has no single major feature but is ...
  13. [13]
    Reaching 10k GitHub Stars & A look at first sharing BookStack
    Sep 15, 2022 · The below video quickly reviews our star growth before taking a nostalgic look back at the reception upon first sharing BookStack on the /r/selfhosted ...
  14. [14]
    BookStack Release v25.05
    May 31, 2025 · In July we'll see the 10 year anniversary since the start of the project. I was aiming to build one of the very complicated & highly ...Content Comments · Comment Archiving · Translations
  15. [15]
    Organising Content - BookStack
    Within BookStack there are two options for moving content around; Either you can move pages and chapters individually or you can sort entire books.Moving Single Pages &... · Sorting Books · Sort RulesMissing: hierarchical | Show results with:hierarchical
  16. [16]
    Other Configuration - BookStack
    Revision Limit. Each time a page is saved a revision is stored to track history. To prevent your database becoming bloated BookStack will automatically ...Recycle Bin Lifetime · Custom User Avatar Fetching · Custom Diagrams.Net Url
  17. [17]
    Full history via UI · Issue #2243 · BookStackApp/BookStack - GitHub
    Sep 4, 2020 · You can see full page revision history by going to a page and clicking the Revisions link in the right hand menu.
  18. [18]
    Beta Release v0.31.0 - BookStack
    Jan 3, 2021 · BookStack v0.31.0 includes a recycle bin, controllable item ownership, expanded audit logs, page API endpoints, and a new revision system.Recycle Bin · Translations · Full List Of ChangesMissing: history | Show results with:history
  19. [19]
    Default Page Editor - BookStack
    The default editor in BookStack is a 'What You See Is What You Get' (WYSIWYG) editor. The usage of this editor is similar to typical word-processing ...
  20. [20]
    Markdown Editor - BookStack
    The default editor option, for when creating a new page, can be configured by an admin within the “Settings > Customization” area of BookStack. You can change ...
  21. [21]
    Drawings & Diagrams - BookStack
    BookStack has built-in support for creating and editing drawings via integrating with diagrams.net. This integration provides very powerful drawing/diagram ...
  22. [22]
    Attachments - BookStack
    You can drag the attachment from the sidebar using its handle or name, and then drop it into the editor which will insert an attachment link at that location.
  23. [23]
    Configuring File Uploads - BookStack
    BookStack allows users to upload both images for content and files as attachments. For information relating to security for file uploads please refer to the ...Storage Options · Local (secure - Restricted) · Changing Upload Limits
  24. [24]
    Searching Content - BookStack
    There are a few locations within BookStack where you can search for your content. Below is a list of search functions within BookStack.
  25. [25]
    Getting Around and Finding Content - BookStack
    There are many ways to get around and find content within your BookStack instance outside of following the core hierarchy. Below is an overview of some common ...Missing: organizational | Show results with:organizational
  26. [26]
    Page Permalinks - BookStack
    A quick and easy way to find the page Permalink has been built into BookStack. Simply select any block of text within a page and you'll see a small popup box.
  27. [27]
    Email & Webhooks - BookStack
    BookStack sends out emails for a range of purposes such as email-address confirmation & “forgot password” flows. Both SMTP and Sendmail (Linux Sendmail) are ...
  28. [28]
    Third Party Authentication - BookStack
    BookStack currently supports login via a range of third party and social applications. Once enabled options for these services will show up in the login, ...Google · Twitter · Azuread (microsoft)
  29. [29]
    LDAP Authentication - BookStack
    BookStack can be configured to allow LDAP based user login. While LDAP login is enabled you cannot log in with the standard user/password login and new user ...
  30. [30]
    SAML 2.0 Authentication · BookStack
    ### Summary of SAML Integration in BookStack
  31. [31]
    Security - BookStack
    Attachments, if not using Amazon S3, are stored in the storage/uploads directory. By default, unlike images, these are stored behind the application ...Securing Images · Iframe Source Control · Content Security Policy...
  32. [32]
    bookstack - LinuxServer.io
    Bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor.
  33. [33]
    Filesystem Permissions - BookStack
    This section provides an approach for setting permissions for your BookStack instance, which allows updating by the login user while providing the web-server ...<|control11|><|separator|>
  34. [34]
    Hacking BookStack
    Within the “Settings > Customization” view within BookStack you'll find a “Custom HTML Head Content” setting. You can use this to add in any custom JavaScript ...Missing: frontend | Show results with:frontend
  35. [35]
    BookStack Release v25.11 · BookStack
    ### API Expansions in BookStack v25.11 (Authentication Tokens)
  36. [36]
    are plugins planned? #1373 - BookStackApp/BookStack - GitHub
    Apr 4, 2019 · I don't really have the time or capability to support a "plug-in" ecosystem technically. The REST API and theme system are fairly well defined ...