Movies an Tv Shows App

This project was created based on a technical test for Leal.co

This project as made with Clean Architecture structure and TDD behavior.

Main approaches:

  • Only the Login button works
  • The login data is hard coded and only works with specific inputs
  • The API key and other variables stuff are written inside the code for test purposes
  • I made 6/8 pages

Start working

  1. Download the base code ๐Ÿ—‚
  2. Install the Pub dependencies โœ…
    flutter pub get
  3. Run test ๐Ÿงช
    flutter test
  4. Start project to see it working ๐Ÿš€

This application get different list of todays Tv Shows.

See my work:

Folders structure

Lib Folder

๐Ÿ“ฆlib
 โ”ฃ ๐Ÿ“‚core
 โ”ƒ โ”ฃ ๐Ÿ“‚error
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œexceptions.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œfailures.dart
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œmessages.dart
 โ”ƒ โ”ฃ ๐Ÿ“‚routes
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œroutes.dart
 โ”ƒ โ”ฃ ๐Ÿ“‚theme
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œtheme_data.dart
 โ”ƒ โ”ฃ ๐Ÿ“‚usecases
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œusecase.dart
 โ”ƒ โ”ฃ ๐Ÿ“‚util
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œdialog_messages.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œfailure_to_message.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œimage_path_generator.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œmodify_text_length.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œset_stars.dart
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œurl_path_converter.dart
 โ”ƒ โ”— ๐Ÿ“‚widgets
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œinformation_container.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œlist_separator.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œmovie_detail_button.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œmovies_action_button.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œmovies_button.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œmovies_image.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œmovies_text_field.dart
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œmovies_title.dart
 โ”ฃ ๐Ÿ“‚features
 โ”ƒ โ”ฃ ๐Ÿ“‚auth
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚data
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚datasources
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œauth_local_data_source.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œauth_remote_data_source.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚models
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œauth_model.dart
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚repositories
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œauth_repository_impl.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚domain
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚entities
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œauth.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚repositories
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œauth_repository.dart
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚usecases
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œlog_out.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œlogin.dart
 โ”ƒ โ”ƒ โ”— ๐Ÿ“‚presentation
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚bloc
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚auth_bloc
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œauth_bloc.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œauth_event.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œauth_state.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œblocs.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚pages
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œloading_page.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œwelcome_page.dart
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚widgets
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œbackground_container.dart
 โ”ƒ โ”— ๐Ÿ“‚tv_show
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚data
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚datasources
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œtv_show_remote_data_source.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚models
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œtv_show_model.dart
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚repositories
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œtv_show_repository_impl.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚domain
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚entities
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œtv_show.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚repositories
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œtv_show_repository.dart
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚usecases
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œget_airing_today_tv_shows.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œget_details_tv_shows.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œget_popular_tv_shows.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œget_recommended_tv_shows.dart
 โ”ƒ โ”ƒ โ”— ๐Ÿ“‚presentation
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚bloc
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚tv_show
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œtv_show_bloc.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œtv_show_event.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œtv_show_state.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚pages
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œdetails_page.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œfavorites_page.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œhome_page.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œnavigator_page.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œposter_detail_page.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œrecent_detail_page.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œrecent_page.dart
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚widgets
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œmovie_list.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œmovie_page_layout.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œmovie_poster.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œmovie_view.dart
 โ”ฃ ๐Ÿ“œgenerated_plugin_registrant.dart
 โ”ฃ ๐Ÿ“œinjection_dependency_container.dart
 โ”— ๐Ÿ“œmain.dart

Test Folder

๐Ÿ“ฆtest
 โ”ฃ ๐Ÿ“‚core
 โ”ƒ โ”— ๐Ÿ“‚util
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œfailure_to_message_test.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œimage_path_generator_test.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œmodify_text_length_test.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œset_stars_test.dart
 โ”ƒ โ”ƒ โ”— ๐Ÿ“œurl_path_converter_test.dart
 โ”ฃ ๐Ÿ“‚features
 โ”ƒ โ”ฃ ๐Ÿ“‚auth
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚data
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚datasources
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œauth_local_data_source_test.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œauth_remote_data_source_test.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚models
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œauth_model_test.dart
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚repository
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œauth_repository_impl_test.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚domain
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚usecases
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œlog_out_test.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œlogin_test.dart
 โ”ƒ โ”ƒ โ”— ๐Ÿ“‚presentation
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚bloc
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚auth_bloc
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œauth_bloc_test.dart
 โ”ƒ โ”— ๐Ÿ“‚tv_show
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚data
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚datasource
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œtv_show_remote_data_source_test.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚models
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œtv_show_model_test.dart
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚repositories
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œtv_show_repository_impl_test.dart
 โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“‚domain
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚usecases
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œget_airing_today_tv_shows_test.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œget_details_tv_show_test.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ฃ ๐Ÿ“œget_popular_tv_shows_test.dart
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œget_recommended_tv_shows_test.dart
 โ”ƒ โ”ƒ โ”— ๐Ÿ“‚presentation
 โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚bloc
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“‚tv_show
 โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”ƒ โ”— ๐Ÿ“œtv_show_bloc_test.dart
 โ”— ๐Ÿ“‚fixtures
 โ”ƒ โ”ฃ ๐Ÿ“œauth.json
 โ”ƒ โ”ฃ ๐Ÿ“œfixture.dart
 โ”ƒ โ”ฃ ๐Ÿ“œtests_values.dart
 โ”ƒ โ”ฃ ๐Ÿ“œtv_show.json
 โ”ƒ โ”— ๐Ÿ“œtv_shows.json

Images

drawing drawing drawing drawing drawing drawing drawing drawing drawing

GitHub

View Github