Write Less Code.
Ship Better Software.

Cloudsupport extends Spring Boot with opinionated conventions and smart abstractions that eliminate boilerplate — so you can focus on what actually matters.

0%
Less Boilerplate
0x
Faster Onboarding
0%
Spring Boot and React Compatible
Zero
Lock-in Risk

See How Cloudsupport
Transforms Your Code

Real-world examples showing the same functionality implemented with pure Spring Boot versus Cloudsupport. Less code, same power, better readability.

1

JPA Entity Definition

A proper JPA entity with audit fields, primary-key-based equals/hashCode that obeys the JPA contract, and Hibernate proxy safety.

Spring Boot ~85 lines
@Entity
@Getter
@Setter
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @CreatedBy
    private String createdBy;

    @CreatedDate
    @Temporal(TemporalType.TIMESTAMP)
    @Column(columnDefinition = "TIMESTAMP WITH TIME ZONE")
    private Date createdDate;

    @LastModifiedBy
    private String lastModifiedBy;

    @LastModifiedDate
    @Temporal(TemporalType.TIMESTAMP)
    @Column(columnDefinition = "TIMESTAMP WITH TIME ZONE")
    private Date lastModifiedDate;

    @Column(unique = true)
    private Long uid;

    private String firstName;
    private String lastName;
    private OffsetDateTime birthDate;

    /**
     * Hash code based on the primary key.
     * Ref: https://stackoverflow.com/questions/5031614
     */
    @Override
    public int hashCode() {
        // If the ID is null, fall back to object identity
        if (id == null) {
            return super.hashCode();
        }
        return Objects.hashCode(id);
    }

    /**
     * Equals based on the primary key.
     * Ref: https://stackoverflow.com/questions/5031614
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null) return false;

        // Fix for comparing transient and proxied entities
        Class<?> c1 = Hibernate.getClass(this);
        Class<?> c2 = Hibernate.getClass(obj);
        if (!c1.equals(c2))
            return false;

        BaseEntity other = (BaseEntity) obj;

        // If the IDs are null, fall back to object identity
        if (id == null || other.getId() == null) {
            return super.equals(obj);
        }
        return Objects.equals(this.getId(), other.getId());
    }

    /**
     * To String based on the primary key.
     */
    @Override
    public String toString() {
        return new ToStringBuilder(this)
                .append("id", this.getId())
                .toString();
    }
}

// Plus a class that implements
// org.springframework.data.domain.AuditorAware
Cloudsupport 10 lines
@Entity
@Getter
@Setter
public class Person extends BaseEntity {

    @Column(unique = true)
    private Long uid;

    private String firstName;
    private String lastName;
    private OffsetDateTime birthDate;
}
~88% fewer lines — audit fields, equals, hashCode & toString all inherited
2

OIDC / JWT Method Security

Securing a method with permission checks and extracting the logged-in user’s name from a JWT token — including the OpenAPI metadata.

Spring Boot 9 lines
@PreAuthorize("hasAuthority('permission')")
@SecurityRequirement(name = "JWT")
public void operation(
    @AuthenticationPrincipal(expression =
        "#this instanceof T(org.springframework
            .security.oauth2.jwt.Jwt)
            ? claims['name'] : null")
    @Parameter(hidden = true)
    String name) {

}
Cloudsupport 4 lines
@HasAuthority("permission")
public void operation(@LoggedInName String name) {

}
~60% fewer lines — no SpEL expressions, no OpenAPI boilerplate, just intent
3

RPC-Style REST Controllers

Mapping web services with versioning and OpenAPI grouping derived from the Java package structure. Given the URI, finding the code is immediate — enforcing a well-structured codebase that mirrors the API.

Spring Boot 10 lines
package ....any.arbitrary.subpackage;

@RequestMapping("<prefix>/group/operationName.v1")
public class OperationNameControllerV1 {

    @GetMapping
    @Tag(name = "group")
    public ReturnModel handle() {

    }
}
Cloudsupport 9 lines
package ....<group>.operationName.v1;

@Ws
public class OperationNameWsV1 extends BaseWs {

    @GetMapping
    public ReturnModel handle() {

    }
}
No manual URI strings or @Tag — versioning, routing & OpenAPI groups derived from package structure
4

Security Configuration & Wiring

Auto-configuring a full OIDC/JWT security stack for microservices — resource server, CORS, method security, Swagger scheme, MDC logging, and more.

Spring Boot 8+ classes & configs
// You implement all the following for backend microservices:

// 1. SecurityFilterChain bean that enables
//    OAuth2 ResourceServer authorization via JWT

// 2. Disable form login, BASIC auth and CSRF

// 3. CORS Filter for mobile + credentialed requests

// 4. Activate method security
//    (@PreAuthorize and @PostAuthorize)

// 5. Enable meta-annotation templating
//    for method security

// 6. JwtAuthenticationConverter for loading
//    authorities from JWT claim (e.g., "roles")

// 7. Bearer Swagger security scheme
//    (e.g., "JWT") for OpenAPI

// 8. Post-processing filter to feed MDC
//    with user data (enriched logging)

// 9. Post-processing filter to enhance the Spring
//    authentication token with web data
//    (e.g., IP from "X-Forwarded-For" header)
Cloudsupport 1 line
// application.properties

cloudsupport.security.scheme=jwt
One property replaces 8+ manually wired classes, filters & configurations

Everything You Need,
Nothing You Don’t

Cloudsupport is a thin, non-invasive layer that respects Spring Boot’s conventions while removing its ceremony.

Zero Boilerplate

Convention-over-configuration patterns that eliminate repetitive code.

Clean Architecture

Enforces separation of concerns naturally. Your codebase stays organized as it grows without extra discipline.

Battle Tested

Used in production systems handling real-world workloads. Stable, reliable, and continuously maintained.

Cloudsupport for Mobile
and Web, Too

More than 50 ready-to-use UI components for React Native — with customizable themes, built-in validation, and a consistent design language across your entire app.

The UI suite includes everything you need to ship polished mobile apps without reinventing the wheel.

Typography Buttons Form Fields Validation Menus Overlays Media Charts Layouts Themes Messages

Ready to Write Less?

Add Cloudsupport to your existing Spring Boot project in minutes and start removing boilerplate today.