MCPSERV.CLUB
Evergreen ILS

Evergreen ILS

Self-Hosted

Open-source library management for institutions of all sizes

Active(95)
142stars
0views
Updated 1 day ago

Overview

Discover what makes Evergreen ILS powerful

Evergreen is a full‑stack, open‑source Integrated Library System (ILS) designed for large consortia and institutional libraries that require a self‑hosted, highly configurable solution. At its core, Evergreen exposes a RESTful API layer that abstracts library operations—cataloging, circulation, patron management, and acquisitions—while retaining a robust relational data model that can be queried directly with SQL or via the API. The system is engineered for horizontal scalability; its stateless service architecture allows multiple application nodes to share a single PostgreSQL database cluster, with optional caching layers (Redis) and search backends (Solr or Elasticsearch).

Languages & Frameworks

Database

Search & Indexing

Background Jobs

Overview

Evergreen is a full‑stack, open‑source Integrated Library System (ILS) designed for large consortia and institutional libraries that require a self‑hosted, highly configurable solution. At its core, Evergreen exposes a RESTful API layer that abstracts library operations—cataloging, circulation, patron management, and acquisitions—while retaining a robust relational data model that can be queried directly with SQL or via the API. The system is engineered for horizontal scalability; its stateless service architecture allows multiple application nodes to share a single PostgreSQL database cluster, with optional caching layers (Redis) and search backends (Solr or Elasticsearch).

Architecture

  • Languages & Frameworks: The application is primarily written in Perl 5 for the core business logic, leveraging the Catalyst web framework. The user interface is built with React and Redux, served through a Node.js middleware that proxies API calls to the Perl back‑end.
  • Database: Evergreen uses PostgreSQL 10+ as its primary data store, with a rich schema that supports MARC21, RDA, and BIBFRAME. The database is the single source of truth; all API calls are translated into SQL transactions.
  • Search & Indexing: The system integrates with Apache Solr 8.x (or Elasticsearch) for full‑text search, bibliographic discovery, and advanced faceting. Indexes are automatically refreshed via background workers written in Perl.
  • Background Jobs: Evergreen’s job queue is powered by Redis and the Evergreen::JobQueue module, enabling asynchronous processing of patron notifications, batch imports, and report generation.
  • Containerization: Official Docker images are available for each component (API, UI, Solr, Redis), facilitating deployment on Kubernetes or Docker Compose. The images expose environment variables for database credentials, Solr core names, and API ports.

Core Capabilities

  • RESTful API: All CRUD operations on bibliographic, patron, and circulation records are exposed via versioned endpoints (/api/v1). The API supports JSON payloads, OAuth2 authentication, and granular permission scopes.
  • Webhooks & Event Hooks: Developers can subscribe to events such as item_checked_out, hold_created, or patron_updated. Evergreen calls configured webhook URLs with JSON payloads, enabling real‑time integrations.
  • Batch Import/Export: The evergreen-import and evergreen-export utilities accept MARCXML, CSV, or JSON. They can be invoked via command line or REST endpoints for automated workflows.
  • Custom Fields & Templates: The UI allows creation of custom fields on bibliographic and patron records, while the API permits manipulation of these fields programmatically. Custom report templates can be written in SQL or JavaScript and rendered via the API.
  • Authentication & Authorization: Evergreen supports LDAP, Shibboleth, and SAML for single sign‑on. Role‑based access control is configurable through the admin interface or via API calls.

Deployment & Infrastructure

Evergreen can run on a single server for small libraries or scale out across multiple nodes in a load‑balanced cluster. Recommended deployment patterns:

  1. Monolithic: One VM with PostgreSQL, Redis, Solr, and the Evergreen services (API + UI). Suitable for pilot deployments.
  2. Micro‑service: Separate containers or pods for API, UI, Solr, and Redis. Kubernetes operators are available to manage persistence, scaling, and rolling upgrades.
  3. Hybrid: Use a managed PostgreSQL cluster (e.g., Amazon RDS) while keeping the application tier on-premises. Evergreen’s connection pooling is compatible with any JDBC‑compliant database.

The application includes health checks (/health) and Prometheus metrics endpoints, making it straightforward to integrate with monitoring stacks (Grafana, Alertmanager).

Integration & Extensibility

  • Plugin System: Evergreen’s Evergreen::Plugins framework allows developers to inject Perl modules that hook into lifecycle events (e.g., on_item_checked_out). Plugins are installed via CPAN or local modules and loaded at runtime.
  • Custom UI Components: The React front‑end is built with a plugin architecture; developers can add new pages or widgets by registering components in app/plugins.
  • Third‑Party APIs: Evergreen can consume external services such as Google Books for metadata enrichment, ORCID for patron identity, or Zotero for citation management. These integrations are typically implemented as background jobs that fetch data and update the local database.
  • Webhooks: Expose your own endpoints to receive notifications from Evergreen, or use the built‑in webhook system to push events to external systems like Slack, Kafka, or a custom ERP.

Developer Experience

  • Documentation: The official docs (https://evergreen-ils.org/docs) cover architecture, API reference, plugin development, and deployment guides. The API spec is available in OpenAPI format for tooling integration.
  • Community: Evergreen has an active mailing list, IRC channel (#evergreen on Libera.Chat), and a GitHub repository with regular releases. The release cycle (monthly) provides predictable updates, while the long‑term support (LTS) releases ensure stability.
  • Testing: The codebase includes a comprehensive test suite (Perl Test::More), and developers can run tests locally with make test. Continuous integration pipelines are available on GitHub Actions.
  • Configuration: All major settings (database, Solr,

Open SourceReady to get started?

Join the community and start self-hosting Evergreen ILS today

Weekly Views

Loading...
Support Us

Featured Project

$30/month

Get maximum visibility with featured placement and special badges

Repository Health

Loading health data...

Information

Category
other
License
GPL-2.0
Stars
142
Technical Specs
Pricing
Open Source
Database
PostgreSQL
Docker
Community
Min RAM
1GB
Min Storage
5GB
Supported OS
LinuxDocker
Author
evergreen-library-system
evergreen-library-system
Last Updated
1 day ago