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
SurfshopApplication
andWeatherServiceApplication
- Run the frontend using
setupNode.cmd
followed bynpm install
andnpm start
in thewebapp
directory. - Launch http://localhost:4200 to see the shop