About Features Downloads Getting Started Documentation Events Support GitHub

Love VuFind®? Consider becoming a financial supporter. Your support helps build a better VuFind®!

Site Tools


Warning: This page has not been updated in over over a year and may be outdated or deprecated.
development:architecture:directory_layout

VuFind® Directory Layout

Top-Level Layout

  • config
    Application-level configurations
    • vufind
      Default VuFind® .ini files; normally these are copied into a local settings directory rather than modified directly.
  • data
    Storage for application-level data (rarely used)
  • downloads
    Cache for downloaded dependencies (e.g. Solr)
  • harvest
    Tools for harvesting metadata
  • import
    Tools for importing metadata
  • languages
    Default language files
  • local
    Default local settings directory (other paths may be configured)
  • module
    Core code, divided into modules; for details, see anatomy of a module below.
    • VuFind
      Core VuFind® code
    • VuFindAdmin
      Code for accessing the web-based Admin panel
    • VuFindApi
      Code for VuFind®'s public API
    • VuFindConsole
      Console-specific code used for command-line tools
    • VuFindDevTools
      Code that is only available when VuFind® is set to development mode (via Apache configuration)
    • VuFindLocalTemplate
      Template for building a local module to override VuFind® defaults; this is copied by install.php and should not be modified directly
    • VuFindSearch
      VuFind®'s low-level search system
    • VuFindTheme
      VuFind®'s theming system
  • public
    Web root – should only contain index.php; other files are made accessible via Apache configuration
  • solr
    Solr index and all Solr related items including Solr itself and the data directories for the indexes. This is separated into separate 'vufind' and 'vendor' subdirectories to differentiate Solr-distributed code from VuFind® configuration and data.
  • tests
    Test suite
  • themes
    Templates, CSS, Javascript, images and other theme-specific resources; for details, see anatomy of a theme below.
    • local_mixin_example
      Example of a theme mix-in (used by the mix-in generator).
    • local_theme_example
      Example of a local custom theme (used by the theme generator).
    • root
      Base theme containing shared resources needed by all other themes
    • assorted other directories
      VuFind®'s built-in themes (details vary depending on version)
    • i18n
      Specialized Javascript/PHP tools for building language files for i18n
  • vendor
    Third-party code
  • build.xml
    Phing build script (used for development/continuous integration)
  • import-*.*
    Import automation scripts
  • index-alphabetic-browse.*
    AlphaBrowse index generation script
  • install.php
    VuFind® installer
  • solr.sh
    Solr startup/shutdown script

Anatomy of a Module

Every module has the same basic structure.

  • config
    Configuration directory defining module-specific resources
  • sql
    Module-specific SQL definitions (not commonly used)
  • src
    Module-specific PHP code, stored in directories matching PHP namespace structure
  • tests
    Module-specific tests (not always used)
  • xsl
    Module-specific XSLT code (not commonly used)
  • Module.php
    Class for loading and bootstrapping module

Anatomy of a Theme

Every theme has the same basic structure.

  • css
    CSS resources (exposed to public access)
  • images
    Image resources (exposed to public access)
  • js
    Javascript resources (exposed to public access)
  • less
    LESS resources (used to build CSS)
  • scss
    SCSS resources (auto-translated from LESS; provided for reference but unused by default)
  • templates
    PHP templates for rendering HTML
  • theme.config.php
    Theme configuration file
development/architecture/directory_layout.txt · Last modified: 2024/01/04 19:11 by demiankatz