Skip to main content

Developer Guide

Whether you're building custom extensions, contributing to the project, or integrating Dumont DEP into your CI/CD pipeline, this guide has everything you need.

Dumont DEP is fully open-source at github.com/openviglet/dumont. All contributions are welcome.


Tech Stack

LayerTechnology
BackendJava 21 · Spring Boot 4.0.3
Message QueueApache Artemis (embedded)
DatabaseH2 (dev) · PostgreSQL (prod)
HTML ParsingJSoup 1.22.1
Text ExtractionApache Tika 3.2.3
Search ClientsTuring Java SDK · SolrJ · ES Client
BuildApache Maven
CI/CDGitHub Actions

Setting Up Your Dev Environment

Prerequisites

  • Java 21 (Temurin recommended)
  • Maven 3.9+
  • Git
  • Turing ES running at http://localhost:2700 (for end-to-end testing)

Clone, Build, and Run

git clone https://github.com/openviglet/dumont.git
cd dumont
mvn clean install

cd connector/connector-app
mvn spring-boot:run

The application starts at http://localhost:30130.


Project Structure

dumont/
├── commons/ # Shared interfaces, models, utilities
├── aem-commons/ # AEM extension interfaces (published to Maven Central)
├── spring/ # Spring Boot configuration and JPA persistence
├── connector/
│ └── connector-app/ # Main pipeline — strategies, batch, queue, indexing plugins, API
├── web-crawler/
│ └── wc-plugin/ # Web Crawler connector plugin
├── db/
│ ├── db-commons/ # DB extension interface (published to Maven Central)
│ ├── db-app/ # Database connector (standalone CLI)
│ └── db-sample/ # Example custom DB extension
├── filesystem/
│ └── fs-connector/ # FileSystem connector (standalone CLI)
├── aem/
│ ├── aem-plugin/ # AEM connector plugin (loaded via -Dloader.path)
│ ├── aem-server/ # AEM server-side integration
│ └── aem-plugin-sample/ # Example custom AEM extensions (WKND site)
└── wordpress/ # WordPress PHP plugin

Extension Points

Dumont DEP provides extension points at multiple levels:

Connector-Level Extensions

ExtensionGuideMaven Artifact
AEM extensions — custom attribute extractors, content processors, delta date logicExtending the AEM Connectorcom.viglet.dumont:aem-commons:2026.1.19
Database extensions — custom row transformations during SQL importExtending the Database Connectorcom.viglet.dumont:db-commons:2026.1.19

Platform-Level Extensions

Creating a Custom Connector

Implement the DumConnectorPlugin interface:

public interface DumConnectorPlugin {
void crawl();
String getProviderName();
void indexAll(String source);
void indexById(String source, List<String> contentId);
}

Creating a Custom Indexing Plugin

Implement the DumIndexingPlugin interface:

public interface DumIndexingPlugin {
void index(TurSNJobItems turSNJobItems);
String getProviderName();
}

Register your plugin as a Spring @Component with @ConditionalOnProperty(name = "dumont.indexing.provider", havingValue = "your-provider").


Processing Strategy Architecture

Strategies are evaluated in priority order for each Job Item:

Dumont DEP — Processing Strategy Flow

To add a custom strategy, implement the strategy interface and assign a priority between the existing ones.


REST API

EndpointDescription
GET /api/v2/connector/statusHealth check
POST /api/v2/connector/indexing/Submit indexing jobs
GET /api/v2/connector/monitoring/index/{source}Monitor indexing progress
GET /api/v2/connector/validate/{source}Validate a content source

For the full API surface, start the application and visit the Swagger UI.


Contributing

  1. Fork the openviglet/dumont repository
  2. Create a branch for your feature or fix: git checkout -b feature/my-improvement
  3. Commit with clear, descriptive messages
  4. Open a Pull Request — describe what you changed and why