A desktop app to watch Simpsons shorts while your monolith app compiles. Made to learn Compose Multiplatform!
The app was developed and built with Compose Multiplatform, a framework to build applications for multiple platforms, without having to rewrite the same code multiple times. It’s very similar to Flutter in terms of architecture, declarative programming model and API.
In terms of project structure, the application has been segregated in several different layers:
- core, responsible for providing the app foundations like DI and state management.
- data, responsible for providing ways to communicate with external services and data sources.
- logging, responsible for logging logic.
- presentation, responsible for everything UI related such as re-usable compose blocks.
- state, responsible for domain state management logic.
And the diagram below describes how these layers communicate with each other:
The shorts URLs are stored in a single JSON file that is hosted on GitHub, so they can be queried freely and in a fast manner.
To play the short, VLC media player is required to exist at runtime. I couldn’t find a better way to do this, and the compose block for the video player was adapted from Kotlin Multiplatform desktop example.
More technical information about the project can be found in the repository README.
Here’s a demo of the app:
#projects #kotlin #kmp #desktop #simpsons