Quarkus Framework codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld spec and API.
This codebase was created to demonstrate a fully fledged fullstack application built with Quarkus including CRUD operations, authentication, routing, pagination, and more.
We've gone to great lengths to adhere to the Quarkus community styleguides & best practices.
For more information on how to this works with other frontends/backends, head over to the RealWorld repo.
This application basically uses Quarkus Framework with Java 21 with some other modules known to development community:
- Hibernate 5
- Jackson for JSON
- PostgreSQL database
- JPA Criteria
application/ -> business orchestration layer
+-- web/ -> web layer models and resources
domain/ -> core business implementation layer
+-- model/ -> core business entity models
+-- feature/ -> all features logic implementation
+-- validator/ -> model validation implementation
+-- exception/ -> all business exceptions
infrastructure/ -> technical details layer
+-- configuration/ -> dependency injection configuration
+-- repository/ -> adapters for domain repositories
+-- provider/ -> adapters for domain providers
+-- web/ -> web layer infrastructure models and security
chmod +x ./mvnw
Make sure, docker is running as Dev Services will start a PostgreSQL database
./mvnw quarkus:dev
The server should be running at http://localhost:8080
./mvnw test
Make sure, docker is running as a PostgreSQL container will be started
- (Recommended) Using nektos/act:
Important
After cloning the repository, make sure to run dos2unix ./mvnw
if you're using Git Bash. Otherwise, Act might throw an Error 126
.
act --cache-server-addr host.docker.internal
- Using the local script:
./e2e/e2e-tests.sh
./mvnw package
GraalVM is necessary for building native executable, more information about setting up GraalVM can be found in Quarkus guides and database engine need to be changed.
./mvnw package -Pnative
# Database configuration
quarkus.datasource.db-kind=postgresql
Improvements are welcome, feel free to contribute.