All Projects → roughike → Inkino

roughike / Inkino

Licence: apache-2.0
A multiplatform Dart movie app with 40% of code sharing between Flutter and the Web.

Programming Languages

dart
5743 projects
CSS
56736 projects
HTML
75241 projects
ruby
36898 projects - #4 most used programming language
shell
77523 projects
objective c
16641 projects - #2 most used programming language
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Inkino

Fmt
A modern formatting library
Stars: ✭ 12,698 (+293.25%)
Mutual labels:  multiplatform, cross-platform
Reaktive
Kotlin multi-platform implementation of Reactive Extensions
Stars: ✭ 760 (-76.46%)
Mutual labels:  multiplatform, cross-platform
Kissme
Kissme: Kotlin Secure Storage Multiplatform
Stars: ✭ 351 (-89.13%)
Mutual labels:  multiplatform, cross-platform
Yyets flutter
人人影视客户端 for Flutter
Stars: ✭ 157 (-95.14%)
Mutual labels:  multiplatform, cross-platform
Orbtk
The Rust UI-Toolkit.
Stars: ✭ 3,460 (+7.15%)
Mutual labels:  cross-platform
Eiskaltdcpp
File sharing program using DC and ADC protocols
Stars: ✭ 277 (-91.42%)
Mutual labels:  cross-platform
Lynda Dl
A cross-platform python based utility to download courses from lynda.com for personal offline use.
Stars: ✭ 280 (-91.33%)
Mutual labels:  cross-platform
Sdrplusplus
Cross-Platform SDR Software
Stars: ✭ 258 (-92.01%)
Mutual labels:  cross-platform
Rabbittoolbox
🤸🏾‍♀️👗开源的动画渲染软件,提倡以简单、易用,高质量的物理演算以及渲染质量和性能,为喜爱二次元动画的用户降低视频制作门槛
Stars: ✭ 309 (-90.43%)
Mutual labels:  cross-platform
Orion
Cross platform Twitch.tv client
Stars: ✭ 298 (-90.77%)
Mutual labels:  cross-platform
Micro
A modern and intuitive terminal-based text editor
Stars: ✭ 18,526 (+473.74%)
Mutual labels:  cross-platform
Polodb
PoloDB is an embedded JSON-based database.
Stars: ✭ 282 (-91.27%)
Mutual labels:  cross-platform
Photon
A lightweight multi-threaded downloader based on aria2.
Stars: ✭ 3,030 (-6.16%)
Mutual labels:  cross-platform
Dotnetspider
DotnetSpider, a .NET standard web crawling library. It is lightweight, efficient and fast high-level web crawling & scraping framework
Stars: ✭ 3,233 (+0.12%)
Mutual labels:  cross-platform
Xplat
Cross-platform (xplat) tools for Nx workspaces https://nstudio.io/xplat
Stars: ✭ 300 (-90.71%)
Mutual labels:  cross-platform
Nazaraengine
Nazara Engine is a fast, complete, cross-platform, object-oriented API which can help you in your daily developper life.
Stars: ✭ 279 (-91.36%)
Mutual labels:  cross-platform
Flatbuffers
FlatBuffers: Memory Efficient Serialization Library
Stars: ✭ 17,180 (+432.05%)
Mutual labels:  cross-platform
Hprose Nodejs
Hprose is a cross-language RPC. This project is Hprose 2.0 for Node.js
Stars: ✭ 297 (-90.8%)
Mutual labels:  cross-platform
Flutter yyets
🎲 Flutter YYets Demo
Stars: ✭ 283 (-91.24%)
Mutual labels:  cross-platform
Cute headers
Collection of cross-platform one-file C/C++ libraries with no dependencies, primarily used for games
Stars: ✭ 3,274 (+1.39%)
Mutual labels:  cross-platform

inKino - a multiplatform Dart project with code sharing between Flutter and web

What is inKino?

Build Status

inKino is a multiplatform Dart app for browsing movies and showtimes for Finnkino cinemas.

InKino showcases Redux, has an extensive set of automated tests and 40% code sharing between Flutter and web. The Android & iOS apps are made with a single Flutter codebase. The progressive web app is made with AngularDart. This project is generally something that I believe is a good example of a multiplatform Dart project.

I plan on doing a full article series on multiplatform Dart stuff, so you might want to check out my blog and subscribe to it.

Get it on Google Play Get it on the App Store Get it on the App Store

Folder structure

There's three different folders. Each of them is a Dart project.

  • core: contains the pure Dart business logic, such API communication, Redux, XML parsing, sanitization, i18n, models and utilities. It also has a great test coverage.
  • mobile: this is the Flutter project. It imports core, and it's a 100% shared codebase for the native Android & iOS apps that go on app stores.
  • web: the AngularDart progressive web app. Also imports core, and it's the thing that is live at https://inkino.app.

To work on these projects, open each one of them in an editor of your choice.

For example, if you want to do a new feature and you do it for the Flutter project first, you'd open both core and mobile in separate editor windows. To clarify, you'd do File -> Open... for core and then File -> Open... again for mobile.

Development environment setup

  • Install Dart for the web. The customized Dart version Flutter ships with is not suitable for web development.
  • Install webdev by running pub global activate webdev. This requires that you ran your Dart installation properly and Dart is part of your PATH.
  • Install an IDE. You can't go wrong with WebStorm. If that doesn't tickle your fancy, there are other options too.
  • Install the Dart plugin for your IDE.

Finally, if you haven't already, install Flutter. And the Flutter plugin for your IDE. At the time of being, inKino is built with Flutter 1.0.

If you don't like IDEs, you can apparently use Emacs or Vim too.

Building the project

Renaming the TMDB configuration file

You don't need a TMDB API key, but the actor images won't load without it.

If you try to build the project straight away, you'll get an error complaining that a tmdb_config.dart file is missing. To resolve that, run this on your terminal in the project root:

cd core/lib/src && mv tmdb_config.dart.sample tmdb_config.dart && cd ../../..

OR

If you don't trust in random bash scripts copied from the Internet, you can just rename the tmdb_config.dart.sample to tmdb_config.dart manually.

Building from source

First, ensure that you followed the "Development environment setup" section above.

  • To run the web project, first run pub get initially, and then webdev serve in the root of the web project.
  • To run the Flutter project, open it in your editor and click the play button, or run flutter run on your terminal.

Contributing

Contributions are welcome! However, if it's going to be a major change, please create an issue first. Before starting to work on something, please comment on a specific issue and say you'd like to work on it.

Thanks

Special thanks to Olli Haataja for the design.

Additional thanks for the initial release go to Thibaud Colas, Brian Egan, Alessandro Aime and Juho Rautioaho for giving their extra pair of eyes for reviewing the source code.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].