This project using Macwire for dependency injection and ignore Play layout.
The frontend-backend communication is based is autowire and boopickle
The application have three parts.
- shared
- server
- client
The shared directory contains the frontend and backend shared codes. We put here the communication objects and the API traits.
This is the play server directory. The application override the default play application loader because it's using MacWire for dependency injection and Play SIRD for the routing.
The application loading started in the GlobalApplicationLoader
class. The BuiltInComponentFromContextWithPlayWorkaround
class is a workaround to Play, because Play doesn't handle well the big file upload, when you not using guice for dependency injection.
The Routing is in the ApplicationComponents
class, this file depend to the Controller
and Service
trait which contains the dependent classes.
The ApiController
methods will handle the different API calls. Each api entry point must exists in the ApplicationComponents
router (See sampleApi call)