Skip to content
/ hilla Public

Build better business applications, faster. No more juggling REST endpoints or deciphering GraphQL queries. Hilla seamlessly connects Spring Boot and React to accelerate application development.

License

Notifications You must be signed in to change notification settings

vaadin/hilla

Folders and files

NameName
Last commit message
Last commit date
Nov 30, 2021
Oct 14, 2024
Mar 3, 2025
Dec 16, 2024
Jul 17, 2024
Jun 26, 2023
Nov 22, 2023
May 20, 2024
Nov 24, 2023
Jul 8, 2024
Oct 2, 2023
Jun 29, 2022
Nov 24, 2021
Nov 17, 2021
Apr 27, 2021
Feb 13, 2025
Feb 16, 2022
Jul 1, 2024
Jul 1, 2024
Nov 27, 2024
Oct 2, 2023
Mar 3, 2025
Mar 1, 2025
Jan 24, 2025
Jan 9, 2024
Nov 27, 2024
Nov 27, 2024

Repository files navigation

Hilla

The modern web framework for Java

Latest Stable Version Releases

Website · Docs · Forum


Hilla integrates a Spring Boot Java backend with a reactive TypeScript front end. It helps you build apps faster with type-safe server communication, included UI components, and integrated tooling.

Simple type-safe server communication

Hilla helps you access the backend easily with type-safe endpoints.

index.ts

// Type info is automatically generated based on Java
import Person from 'Frontend/generated/com/vaadin/hilla/demo/entity/Person';
import { PersonService } from 'Frontend/generated/endpoints';

async function getPeopleWithPhoneNumber() {
  const people: Person[] = await PersonService.findAll();

  // Compile error: The property is 'phone', not 'phoneNumber'
  return people.filter((person) => !!person.phoneNumber);
}

console.log('People with phone numbers: ', getPeopleWithPhoneNumber());

PersonService.java

@BrowserCallable
@AnonymousAllowed
public class PersonService {

    private PersonRepository repository;

    public PersonService(PersonRepository repository) {
        this.repository = repository;
    }

    public @Nonnull List<@Nonnull Person> findAll() {
        return repository.findAll();
    }
}

Person.java

@Entity
public class Person {

    @Id
    @GeneratedValue
    private Integer id;

    @Nonnull private String firstName;
    @Nonnull private String lastName;
    @Email @Nonnull private String email;
    @Nonnull private String phone;

    // getters, setters
}

Learn more at vaadin.com/hilla

Get started

Follow the tutorials at https://vaadin.com/docs/latest/getting-started

Contributing

The best way to contribute is to try out Hilla and provide feedback to the development team in our Forum or with GitHub issues.

Development

If you want to develop Hilla, you can clone the repo and run tests using the following commands:

git clone https://github.com/vaadin/hilla.git
npm install
npm run build
mvn install -DskipTests
npm test
mvn verify

You need the following versions of SDKs and tools:

  • Node.js: >= 22 LTS,
  • npm: >=10 (package-lock.json is of version 3)
  • JDK: >=17
  • Maven: >=3

Validation codecov