Broadleaf Commerce - Enterprise eCommerce framework based on Spring
Java JavaScript Groovy HTML Other
Switch branches/tags
broadleaf-custom-field-1.1.1-GA broadleaf-custom-field-1.1.0-M1 broadleaf-custom-field-1.1.0-GA broadleaf-custom-field-1.0.0-M1 broadleaf-5.2.0-RC2 broadleaf-5.2.0-RC1 broadleaf-5.2.0-M2 broadleaf-5.2.0-M1 broadleaf-5.2.0-GA broadleaf-5.1.4-PERF2 broadleaf-5.1.4-PERF1 broadleaf-5.1.4-GA broadleaf-5.1.3-GA broadleaf-5.1.2-GA broadleaf-5.1.1-GA broadleaf-5.1.0-GA broadleaf-5.0.11-GA broadleaf-5.0.10.3-GA broadleaf-5.0.10.2-GA broadleaf-5.0.10.1-GA broadleaf-5.0.10-GA broadleaf-5.0.9-GA broadleaf-5.0.8-GA broadleaf-5.0.7-GA broadleaf-5.0.6-GA broadleaf-5.0.5-GA broadleaf-5.0.4-GA broadleaf-5.0.3-GA broadleaf-5.0.2-GA broadleaf-5.0.1-GA broadleaf-5.0.0-RC2 broadleaf-5.0.0-RC1 broadleaf-5.0.0-M4 broadleaf-5.0.0-M3 broadleaf-5.0.0-M1 broadleaf-5.0.0-GA broadleaf-4.1.5-GA broadleaf-4.1.4-GA broadleaf-4.1.3-GA broadleaf-4.1.2-GA broadleaf-4.1.1-GA broadleaf-4.1.0-GA broadleaf-4.0.22-PERF2 broadleaf-4.0.22-PERF1 broadleaf-4.0.21-PERF7 broadleaf-4.0.21-PERF6 broadleaf-4.0.21-PERF5 broadleaf-4.0.21-PERF4 broadleaf-4.0.21-PERF3 broadleaf-4.0.21-PERF2 broadleaf-4.0.21-PERF1 broadleaf-4.0.21-GA broadleaf-4.0.20-GA broadleaf-4.0.19-GA broadleaf-4.0.18-GA broadleaf-4.0.17-GA broadleaf-4.0.16-GA broadleaf-4.0.15-GA broadleaf-4.0.14-GA broadleaf-4.0.13-GA broadleaf-4.0.12-GA broadleaf-4.0.11-GA broadleaf-4.0.10-GA broadleaf-4.0.9-GA broadleaf-4.0.8-GA broadleaf-4.0.7-GA broadleaf-4.0.6-GA broadleaf-4.0.5-GA broadleaf-4.0.5-BETA1 broadleaf-4.0.4-GA broadleaf-4.0.3-GA broadleaf-4.0.2-GA broadleaf-4.0.1-PATCH2 broadleaf-4.0.1-PATCH1 broadleaf-4.0.1-GA broadleaf-4.0.0-RC8 broadleaf-4.0.0-RC7 broadleaf-4.0.0-RC6 broadleaf-4.0.0-RC5.1 broadleaf-4.0.0-RC5 broadleaf-4.0.0-RC4 broadleaf-4.0.0-RC3.1 broadleaf-4.0.0-RC3 broadleaf-4.0.0-RC2 broadleaf-4.0.0-RC1 broadleaf-4.0.0-PATCHSOLR1 broadleaf-4.0.0-PATCH1 broadleaf-4.0.0-GA broadleaf-4.0.0-CLIENT3-1 broadleaf-4.0.0-CLIENT2-1 broadleaf-4.0.0-CLIENT1-1 broadleaf-4.0.0-BETA15 broadleaf-4.0.0-BETA14 broadleaf-4.0.0-BETA13 broadleaf-4.0.0-BETA12 broadleaf-4.0.0-BETA11 broadleaf-4.0.0-BETA10 broadleaf-4.0.0-BETA9 broadleaf-4.0.0-BETA8 broadleaf-4.0.0-BETA7
Nothing to show
Latest commit 124c21e Jul 21, 2017 @jfleschler jfleschler committed with phillipuniverse Fixed an error caused by performing an unchecked cast (#1612)
* Fixed an error caused by explicitly casting a SiteMapGeneratorConfiguration to a CategorySiteMapGeneratorConfiguration

* Changed the check to `.isAssignableFrom` in case the object is a proxy (#1612)

README.md

BroadleafCommerce

Introduction

Broadleaf Commerce is an open-source, e-commerce framework written entirely in Java on top of the Spring framework. It is targeted at facilitating the development of enterprise-class, commerce-driven sites by providing a robust data model, services and specialized tooling that take care of most of the "heavy lifting" work. To accomplish this goal, we have developed our platform based on the key feature sets required by world-class online retailers - and we're committed to continually expanding our feature offering. We've also taken extra steps to guarantee interoperability with today's enterprise by utilizing standards wherever possible and incorporating best-of-breed, open-source software libraries from the community.

This repository does not encapsulate all of the functionality that Broadleaf provides and most other features are developed within other repositories. See our modules page for other features that Broadleaf provides outside of this repository.

Getting Started

Unless you are sending a pull request or making core changes to Broadleaf, this is likely not the best place to get started. Check out the Getting Started guide to quickly kick off your Broadleaf-enabled website.

Local Development

If you are interested in a contribution Broadleaf Commerce recommends JDK 1.8, but will build/run with JDK 1.7 or 1.8. At this time Broadleaf has not been tested with Java 9.

The easiest way to get the Broadleaf framework locally set up with the DemoSite is to clone this repository and execute a clean install via Maven:

mvn clean install

If you are using JRebel for development, add the Maven profile blc-development to include the necessary rebel.xml files in the built jars:

mvn clean install -Pblc-development

Our integration tests take a while to execute so you might also want to temporarily skip tests:

mvn clean install -Pblc-development -DskipTests

Note: all contributed code must have passing tests via Maven

If you need to use a specific version of Broadleaf, simply check out that version using either the branch or tag. All releases are tagged 'broadleaf-' whereas all active development versions are tagged 'BroadleafCommerce-<major.minor>.x'. For instance, if you would like to actively develop on the Broadleaf 2.2 line in order for your changes to be in the next GA patch release of Broadleaf 2.2, you would check out the 'BroadleafCommerce-2.2.x' branch.

git clone git@github.com:BroadleafCommerce/BroadleafCommerce
cd BroadleafCommerce

# use 4.0.x-SNAPSHOT
git checkout BroadleafCommerce-4.0.x
mvn clean install -Pblc-development

# switch to a GA version
git checkout broadleaf-4.0.21-GA
mvn clean install -Pblc-development

Support

Broadleaf commerce offers commercial support and training which can also include professional services. Community support is offered through Stack overflow via the broadleaf-commerce tag. If you have a found a bug or would like to make a contribution feel free to open an issue or send us a pull request.

Contributing

See CONTRIBUTING.md

License

Broadleaf Commerce core is released under a dual license format. It may be used under the terms of the Fair Use License 1.0 (http://license.broadleafcommerce.org/fair_use_license-1.0.txt) unless the restrictions on use therein are violated and require payment to Broadleaf, in which case the Broadleaf End User License Agreement (EULA), Version 1.1 (http://license.broadleafcommerce.org/commercial_license-1.1.txt) shall apply. Alternatively, the Commercial License may be replaced with a mutually agreed upon license between you and Broadleaf Commerce.

Various commercial modules that are also available (for instance, price list management) are released under the applicable commercial license. These are not included with the core Broadleaf framework.

Key Features and Technologies

Spring Framework

Spring is the enterprise Java platform on which BroadleafCommerce is based. It provides numerous features, including dependency injection and transaction control.

Security

Spring Security provides a robust security framework for controlling authentication and authorization at both the code and page level and is utilized by BroadleafCommerce for access control.

Persistence

JPA and Hibernate represent the BroadleafCommerce ORM infrastructure for controlling persistence of our rich domain model.

Search

Flexible domain search capabilities in BroadleafCommerce are provided through integration with Solr.

Task Scheduling

Scheduling of repetitive tasks in BroadleafCommerce is offered through the Quartz job scheduling system.

Email

Email support is provided throughout the BroadleafCommerce framework in either synchronous or asynchronous (JMS) modes. Email presentation customization is achieved via Thymeleaf templates.

Modular Design

Important e-commerce touchpoints are embodied in the concept of BroadleafCommerce "Modules". A module can provide interaction with a credit card processor, or even a shipping provider. Any number of custom modules may be developed and utilized with BroadleafCommerce.

Configurable Workflows

Key areas in the e-commerce lifecycle are represented as configurable workflows. Implementors have full control over the keys steps in pricing and checkout, allowing manipulation of module ordering, overriding existing module behavior and custom module execution. Composite workflows are also supported to achieve more exotic, nested behavior.

Extendible Design

BroadleafCommerce is designed from the ground-up with extensibility in mind. Almost every aspect of BroadleafCommerce can be overridden, added to or otherwise modified to enhance or change the default behavior to best fit your needs. This includes all of our services, data access objects and entities. Please refer to the extensibility section of our documentation.

Configuration Merging

As an extra bonus to our extensibility model, we offer a custom merge facility for Spring configuration files. We minimize the BroadleafCommerce configuration semantics that an implementer must be aware of, allowing our users to focus on their own configuration particulars. BroadleafCommerce will intelligently merge its own configuration information with that provided by the implementer at runtime.

Presentation Layer Support

BroadleafCommerce also includes a number of pre-written Spring MVC controllers that help to speed development of the presentation layer of your own BroadleafCommerce-driven site.

QOS

BroadleafCommerce also provides quality of service monitoring for modules (both custom and default modules) and provides support for several QOS handlers out-of-the-box: logging and email. Additional, custom QOS handlers may be added through our open API.

Promotion System

BroadleafCommerce includes a highly-configurable system for including your pricing promotions. We provide several standard levels at which promotions may be applied: Order level, Order Item level and Fulfillment Group level. In addition, your promotion business rules are represented in a flexible and standardized way using the MVEL expression language.

PCI Considerations

We have taken measures in the construction and design of BroadleafCommerce to help you achieve PCI compliance, should you decide to store and use sensitive customer financial account information. Payment account information is referenced separately, allowing you to segregate confidential data onto a separate, secure database platform. API methods have been added to allow inclusion of any PCI compliant encryption scheme. Also, verbose logging is included to track payment interaction history.

Admin Platform

BroadleafCommerce includes a wholely extendible administrative application built with Spring MVC. The admin application also provides an easy-to-use interface for catalog, order and customer functions and provides a robust, rule-driven environment for creating and managing discount promotions.

Admin Customization

BroadleafCommerce provides a robust set of admin presentation annotations that allow configuration of domain class display and persistence semantics without touching any admin code. This provides an easy-to-consume approach for introducing entity extensions and additional fields into the admin forms so that your business users can immediately start to benefit. We also provide a full annotation or xml-based approach for overriding the admin config declared inside BroadleafCommerce so that you can have an impact on our defaults. And for more advanced customizations, our admin platform is based on Spring MVC, so your Spring knowledge will translate here as well when it comes to adding additional controllers, and the like.

Content Management

BroadleafCommerce includes a robust content management system for creating and managing static pages and content. We also include a powerful content targeting feature that allows business users to dynamically drive the most appropriate content to users.