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::JobQueuemodule, 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, orpatron_updated. Evergreen calls configured webhook URLs with JSON payloads, enabling real‑time integrations. - Batch Import/Export: The
evergreen-importandevergreen-exportutilities 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:
- Monolithic: One VM with PostgreSQL, Redis, Solr, and the Evergreen services (API + UI). Suitable for pilot deployments.
- Micro‑service: Separate containers or pods for API, UI, Solr, and Redis. Kubernetes operators are available to manage persistence, scaling, and rolling upgrades.
- 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::Pluginsframework 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 (
#evergreenon 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 withmake 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
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Tags
Explore More Apps
Domain Locker
Central hub for managing and monitoring all your domain names
Metabase
Easy open‑source business intelligence for everyone
Frappe Helpdesk
Open-Source Ticket Management for Seamless Customer Support
PeerTube
Decentralized, ad‑free video sharing platform
UBOS
Open-source platform for user‑centric social web applications
Monica
Your personal relationship manager