roughike/inKino
50.9
Adequate · 23 September 2026
5.2k
lines of production code
Dart
primary language
5
measurements over time
What this system is
This system is a multiplatform movie information application for the Finnkino service, built with a shared Dart core library and deployed as both a Flutter mobile app and an AngularDart web app. It provides users with the ability to browse events, view showtimes, search for films, and access actor details, utilizing external APIs for data enrichment. The architecture supports internationalization in English and Finnish, with CI/CD pipelines automating builds and releases across Android, iOS, and web platforms.
Features
Initial core library release with internationalization and data models
This change introduces the core library for the inKino application, establishing the foundational data models (Event, Show, Theater, Actor), Redux state management, and API integration layers. It adds full internationalization support with English and Finnish translations, enabling the app to display localized strings for features like showtimes, movie details, and error messages. The core also includes the Finnkino API client for fetching schedules and events, the TMDB API client for enriching actor data with avatars, and parsers for converting XML responses into the app's internal data structures.
core · high confidence
Initial release of the inKino mobile app
This change introduces the initial version of the inKino mobile application, providing a Flutter-based client for the Finnkino movie service. Users can now browse movie details, view showtimes, search for films, and purchase or reserve tickets. The app features a polished UI with animated event detail pages, actor scrollers, and image galleries, along with support for English and Finnish languages. It also includes infrastructure for automated beta distribution to Google Play (internal testing) and TestFlight via Fastlane.
mobile · high confidence
Initial web application shell and UI components
The web directory now contains the initial implementation of the client-side application, introducing the core Angular components for the user interface. This includes the main application layout with a responsive header, navigation bar, and search functionality, as well as specific views for event details, actor scrollers, and theater selection. The update also establishes the build configuration for production optimization (minification, tree-shaking) and deployment settings for Firebase hosting, along with standard linting rules for the Dart codebase.
web · high confidence
Multiplatform support with CI and release automation
The project now supports a multiplatform architecture, featuring a shared core library used by both a Flutter mobile app (Android/iOS) and an AngularDart progressive web app. To support this, a Travis CI configuration and build scripts have been added to automate testing and analysis across all platforms, and a release script has been introduced to streamline building APKs, iOS binaries, and deploying the web app. Additionally, legacy IDE module files have been removed, and the Apache 2.0 license has been added.
(repo-wide) · high confidence
Removals
Redux store structure and logic removed
The Redux implementation files in lib/redux (including actions, reducers, middleware, state classes, selectors, and store configuration) have been deleted. This removes the application's state management layer, which previously handled theater initialization, show fetching, and caching via the redux package.
lib/redux · high confidence
Removal of placeholder movie grid components
The placeholder UI components for displaying movie lists have been removed from the application. Specifically, the \MovieGrid\ widget, the \MovieGridItem\ widget, and the \MyHomePage\ (which served as the main scaffold with tabs) have been deleted from \lib/ui\. This cleanup removes the stub implementations that previously displayed static placeholder text and generic styling, indicating a shift away from these initial mock-up structures in the user interface.
lib/ui · high confidence
Removal of the legacy TheaterList widget
The \TheaterList\ widget, which previously rendered the list of theaters and handled selection via a Redux store connector, has been removed from the codebase. This deletion eliminates the specific UI component responsible for displaying the theater subhead and individual theater list items, indicating a structural change to how the theater list is presented or managed in the application.
_lib/ui/theater\list · high confidence
Removed Finnkino API integration and related data models
The Finnkino-specific API client and its associated data models (Show, ScheduleDate) have been removed from the application. This eliminates the code responsible for fetching and parsing schedule data from the Finnkino XML service, effectively removing support for retrieving schedules from this specific provider.
lib/data · high confidence
Removed legacy showtimes UI components
The showtimes page and its associated view model and list tile widgets have been removed from the application. This deletion eliminates the previous implementation that displayed showtimes using a Redux-connected list view with alternating background styles and specific time formatting.
lib/ui/showtimes · high confidence
Behavioural changes
Removal of Android Fastlane and Gradle wrapper scripts
The Android build configuration has been simplified by removing the Fastlane automation setup (including Appfile, Fastfile, and store metadata) and the Gradle wrapper scripts (gradlew and gradlew.bat). This change removes the local tooling used for automated testing and Play Store submissions, as well as the self-contained Gradle distribution, indicating a shift away from these specific local build and release workflows for the Android module.
android · high confidence
Removal of legacy main application entry point
The original \lib/main.dart\ file has been deleted. This file previously defined the \InKinoApp\ entry point, configured the Redux store, and set up the \MaterialApp\ with a custom color swatch and the \MyHomePage\ as the initial screen. Its removal indicates that the application's entry point and initial routing structure have been moved or restructured to a different location within the codebase.
lib · high confidence
Test coverage
Removed legacy unit tests for Redux middleware and data models
Deleted test files for the TheaterMiddleware, ScheduleDate model, and Show model. These tests previously verified middleware initialization logic and XML parsing for schedule data, but have been removed from the test suite.
test · high confidence
Dependencies
Initial project structure and dependency setup for multi-platform app
This change establishes the foundational project structure and dependency configuration for the inKino application across mobile and web platforms. It introduces a shared 'core' library with dependencies on redux, xml, and kt\_dart, while configuring the mobile app with updated packages like flutter\_redux and key\_value\_store\_flutter, and the web app with AngularDart components. Additionally, it sets up iOS CocoaPods and Android build configurations, including Android release signing support, to prepare the codebase for multi-platform deployment.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 51.
Lenses
- Code Health 98
- Architecture 91
- Maturity 50
- Readiness 40
- Security 81
- Domain Modelling 100
- Accessibility 48
Changes since last survey
- 300 commits — 260 feature/other, 40 fixes
By area
- (repo) — 78 commits
- lib/ui — 78 commits
- (root) — 41 commits
- lib/redux — 15 commits
- android/app — 12 commits
- lib/data — 12 commits
- ios/Runner — 8 commits
- test/redux — 7 commits
- test/ui — 7 commits
- lib/networking — 6 commits
- test/data — 5 commits
- lib/utils — 4 commits
- core/lib — 3 commits
- ios/Podfile — 2 commits
- lib/models — 2 commits
- lib/tmdb_config.dart — 2 commits
- test/networking — 2 commits
- web/lib — 2 commits
- android/.gitignore — 1 commit
- assets/images — 1 commit
Notable commits
- fix: Added some more test cases for the event name cleaner & fixed one issue.
- fix: Fix date selector overflowed (#105)
- fix: Fix iOS project by updating the Podfile to latest Flutter master.
- fix: Fix the hashCode and equality implementations of viewmodels.
- fix: Fix untracked files.
- fix: Fixed actor avatar loading error caused by Dart 2 migration.
- fix: Fixed imports.
- fix: Fixed overflowing text on long movie titles.
- fix: Fixed overflowing text on long movie titles.
- fix: Fixed the actor scroller trying to update the actor list after it has been detached from the widget tree.
- fix: Fixed the actor scroller trying to update the actor list after it has been detached from the widget tree.
- fix: Fixed the backdrop placeholder not filling the full width.
- fix: Fixed the backdrop placeholder not filling the full width.
- fix: Fixed the case where searching for "2d" returned search results even though it was cleaned from the title.
- fix: Fixed the case where searching for "2d" returned search results even though it was cleaned from the title.
- fix: Fixed the mock http client implementation to support the new Flutter SDK version.
- fix: Fixed the non-existing constructor parameters
- fix: Fixed the peeking background problem in the theater list.
- fix: Fixed the peeking background problem in the theater list.
- fix: Fixed untracked files.
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
roughike/inKino was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit d406a23c3b57a0348a13de0cc6fc680b376cab35 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.