Open-source project
hs-web/hsweb-framework avatar
hs-web/hsweb-framework

hsweb-framework: End-to-End Reactive Admin Panel Architecture

hsweb (haʊs wɛb) 是一个基于spring-boot 2.x开发 ,首个使用全响应式编程的企业级后台管理系统基础项目。

8,397 stars3,011 forksJavaApache-2.0

At a glance

What is it?
A Spring Boot framework for building backend management systems using Project Reactor and R2DBC. Every layer is reactive, from database to HTTP, making it fit only for teams familiar with async patterns and willing to commit to them.
Who is it for?
hsweb-framework is for Java teams building admin or backend management systems and ready to adopt reactive programming throughout the stack. Do not choose it if your team has no experience with Project Reactor, or if you need synchronous database access alongside the reactive parts.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 7 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Reactive from end to end, not just in name

Spring Boot 2.x runs hsweb through every layer, from the HTTP handler to the database query. Rather than bolting Project Reactor callbacks onto a synchronous Spring MVC app, hsweb commits to reactive code paths throughout: Spring WebFlux handles the web layer, R2DBC with the hsweb easy-orm wrapper handles database access, and transaction control operates reactively. Most Java frameworks patch async onto synchronous cores; hsweb builds the core async. A steep learning curve follows if you have not used Project Reactor before. According to the README, you should understand Project Reactor and Spring Boot before adopting hsweb. If you have built with Reactor elsewhere, hsweb follows patterns you already know. If you have not, expect weeks of ramp-up before your team writes code confidently.

Permission and role management as a first-class feature

Multi-dimensional permission control comes with hsweb by default, including role-based access control (RBAC) and data-level permissions. You can write rules that let a manager see only their division's data without fetching the full table and filtering in code. According to the README, mark a controller method with @SaveAction, and hsweb wraps it with permission checks. Built-in user management and permission assignment mean a new admin system does not start from scratch. Note that two-factor authentication remains unimplemented.

DSL-driven queries that sidestep SQL injection

Query construction happens through a fluent Java API, not string concatenation. According to the README, createQuery().where("name", name).fetch() becomes a prepared statement with the name parameter bound by hsweb. No template syntax to parse exists, and no risk of a developer dropping user input directly into a string follows. Updates work the same way: createUpdate().set(user::getName).where(user::getId).execute(). Compile-time type safety eliminates entire classes of injection flaws. JPA-like annotations (@Table, @Id, @Column) make data classes look familiar to anyone who has used Hibernate.

Setting up an entity and querying it

Start by defining an entity class with hsweb annotations. According to the README, mark it with @Table and name the database table, then mark each field with @Column. Here is the example from the README:

java
@Table(name = "s_entity")
public class MyEntity {

    @Id
    private String id;

    @Column
    private String name;

    @Column
    private Long createTime;
}

Once defined, inject the reactive repository and use it to query and save. According to the README, the pattern is:

java
@Autowire
private ReactiveRepository<MyEntity, String> repository;

With the repository injected, you can save, update and query without writing SQL. Create a new entity, call repository.save(entity), and hsweb handles the insert. Read the examples linked in the README for more complete patterns.

Eight modular components for selective adoption

Rather than pulling the entire framework, you choose which modules your application needs. hsweb-authorization handles permission control, hsweb-datasource manages database connections, hsweb-concurrent covers caching, and hsweb-system provides user and permission management. According to the README, cloning the repository and building from source is not recommended; instead, depend on specific modules from Maven. Once released to the central repository, each module can be versioned independently. hsweb-logging handles logging and hsweb-starter bootstraps modules, reducing boilerplate in a new application.

Database support limited to R2DBC drivers

hsweb commits to reactive-only access and supports only databases with R2DBC drivers: H2, MySQL, SQL Server and PostgreSQL. If your system relies on a database without a maintained R2DBC implementation, hsweb cannot be used. No path to synchronous JDBC access exists; the README lists non-reactive support (Spring MVC, JDBC) as a planned but incomplete feature. Not a limitation of the framework's design, but a choice: hybrid applications cannot use hsweb for the reactive parts and JdbcTemplate for the others.

Project Reactor as a prerequisite, not an option

Every piece of code you write in hsweb works with Project Reactor types: Mono for single values, Flux for streams. No wrapper hides them behind a simpler API. Hiding Reactor would obscure what your code actually does and lead to surprises when reactive behavior becomes visible (errors do not throw; they emit to an error handler). You must be comfortable reading Reactor documentation and debugging reactive pipelines. Learning cost is front-loaded; after ramp-up, the mental model stays consistent.

Editorial conclusion

hsweb-framework is for Java teams building admin or backend management systems and ready to adopt reactive programming throughout the stack. Do not choose it if your team has no experience with Project Reactor, or if you need synchronous database access alongside the reactive parts. Verify that your database driver supports r2dbc before committing; the framework supports H2, MySQL, SQL Server and PostgreSQL, but your specific version and configuration may not.

Frequently asked questions

What is hsweb-framework used for?

hsweb-framework is used to build backend management systems and admin panels. It provides built-in user management, role-based access control, data-level permissions, and permission assignment, so a new admin application can focus on business logic rather than re-implementing authentication and authorization.

Does hsweb-framework support synchronous code?

No. The README lists non-reactive support (Spring MVC, JDBC) as a planned feature, but it is not implemented. Every part of hsweb is reactive. If you need synchronous database access, you cannot use hsweb.

What programming experience is required to use hsweb-framework?

The README states you should understand Project Reactor and Spring Boot before using hsweb. If you have not built with Project Reactor before, expect a significant learning curve before your team is productive.

What databases does hsweb-framework support?

hsweb-framework supports H2, MySQL, SQL Server and PostgreSQL through R2DBC drivers. Any database without an R2DBC driver cannot be used.

Can I use hsweb-framework for only part of my application?

Yes. The framework is modular; you can depend on specific modules like hsweb-authorization or hsweb-datasource rather than pulling the entire system. The README recommends depending on individual modules and waiting for them to reach the Maven central repository rather than cloning and building from source.

Official sources

  1. hs-web/hsweb-framework on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/hs-web-hsweb-framework.svg)](https://hysenlabs.com/projects/hs-web-hsweb-framework)