gitmyhub

inKino

Dart ★ 3.7k updated 4y ago

A multiplatform Dart movie app with 40% of code sharing between Flutter and the Web.

inKino is a movie browsing app built in Dart that runs on Android, iOS, and the web from a largely shared codebase. It shows current films and showtimes for Finnkino, a Finnish cinema chain. The app is available on the Google Play Store, the Apple App Store, and as a website at inkino.app.

The project is structured into three parts. The core folder contains all the shared business logic: fetching data from an API, parsing responses, managing application state with Redux, and defining data models. Both the mobile and web versions import this core package, which is why roughly 40% of the total code is shared between them. The mobile folder is a Flutter project that produces the native Android and iOS apps. The web folder is an AngularDart progressive web app.

This separation was the main point of the project. The author built it as a demonstration of how much logic a developer can share across platforms when using Dart for all of them. At the time it was created, this was a relatively uncommon approach, and the README notes the author intended to write about it in more depth on their blog.

Setting up the project requires installing both Dart for web development and Flutter separately, since the Flutter SDK ships a modified version of Dart that is not suited for web work. A sample config file for the TMDB movie database API needs to be renamed before building, though a TMDB key is optional and only affects whether actor images appear.

The project includes automated tests covering the core logic and serves as a practical reference for developers exploring multiplatform Dart architecture.