Pluggable data administration UI library for Java web applications [Spring/JPA]

The best match for Spring Boot powered applications! Add missing data administration UI to your application


Allows developers to easily configure their administration user interface.
Complete entities manipulation support (including their associations).
Allows users to search entities by text fields, dates, numeric values & associations.
Enriching your application with REST API based on Spring Data REST.
Fully functional data management back-end for Servlet 3.0 web applications in one package.
Try It Now!

Bootstrapping Java web applications

Speeding up application development by bringing pluggable fully operational data management back-end for Spring/JPA based applications

Try It Now!

Simple Java DSL used for administration interface customization

public class CustomerAdministration extends AdministrationConfiguration<Customer> {

    @Autowired
    private OrderRepository orderRepository;

    @Override
    public EntityMetadataConfigurationUnit configuration(EntityMetadataConfigurationUnitBuilder configurationBuilder) {
        return configurationBuilder
                .pluralName("Customers")
                .singularName("Customer")
                .nameExtractor(customerNameExtractor())
                .build();
    }

    @Override
    public FieldSetConfigurationUnit listView(FieldSetConfigurationUnitBuilder fragmentBuilder) {
        return fragmentBuilder
                .field("name").caption("Name")
                .field("surname").caption("Surname")
                .field("phone").caption("Phone")
                .field("email").caption("Email")
                .build();
    }

    @Override
    public FieldSetConfigurationUnit formView(PersistentFieldSetConfigurationUnitBuilder fragmentBuilder) {
        return fragmentBuilder
                .field("name").caption("Name")
                .field("surname").caption("Surname")
                .field("phone").caption("Phone")
                .field("email").caption("Email")
                .field("deliveryAddress").caption("Delivery Address").editor(textArea())
                .build();
    }

    @Override
    public FiltersConfigurationUnit filters(FiltersConfigurationUnitBuilder filterBuilder) {
        return filterBuilder
                .filter("Name", "name")
                .filter("Surname", "surname")
                .filter("Phone", "phone")
                .build();
    }

    @Override
    public ScopesConfigurationUnit scopes(ScopesConfigurationUnitBuilder scopeBuilder) {
        return scopeBuilder.scope("All", all()).defaultScope()
                .scope(">$10", filter(topBuyerPredicate(10)))
                .scope(">$20", filter(topBuyerPredicate(20)))
                .scope(">$30", filter(topBuyerPredicate(30)))
                .build();
    }

    private DomainTypePredicate<Customer> topBuyerPredicate(final int ordersTotalSum) {
        return new DomainTypePredicate<Customer>() {
            @Override
            public boolean apply(Customer customer) {
                List<Order> orders = orderRepository.findByCustomer(customer);
                return totalOf(orders).compareTo(new BigDecimal(ordersTotalSum)) > 0;
            }
        };
    }

    private EntityNameExtractor<Customer> customerNameExtractor() {
        return new EntityNameExtractor<Customer>() {
            @Override
            public String apply(Customer customer) {
                if (isBlank(customer.getName()) && isBlank(customer.getSurname())) {
                    return customer.getEmail();
                }
                return format("%s %s", trimToEmpty(customer.getSurname()), trimToEmpty(customer.getName()));
            }
        };
    }
}
Get the code!

Pluggable administration interface for Java web applications

LightAdmin makes it possible to relieve your codebase for more important stuff!

Get the code!

Projects using LightAdmin data management back-end