In this modular fullstack sample application a windsurf rental software is implemented in TypeScript and Kotlin. Frameworks in use are:
Windsurfer's Paradise is a (fictional) rental station on Mauritus. In order to surf here you need ...
- ... high tide in the lagoon to avoid getting get scratches (not only on your surfboard).
- ... moderate to strong wind from the north or the south.
- ... a reservation at the shop :)
Functional modules are first-class citizens in the project folder structure. As every backend module is a separate Gradle module, the architecture layering is enforced by the compiler.
Common modules are libraries with shared classes, logic and domain value objects. Typically they are free of framework code.
Capability modules are used to add behaviour to the context and/or configure the framework of the module.
Application modules only contain the main class with a @SpringBootApplication annotation, the module dependencies define what is packaged and run with it.
- Clone the repository
- Import the project in your IDE
- Build the project using
gradlew build - Run the backend applications
SurfshopApplicationandWeatherServiceApplication - Run the frontend using
setupNode.cmdfollowed bynpm installandnpm startin thewebappdirectory. - Launch http://localhost:4200 to see the shop

