{"id":18709025,"url":"https://github.com/baguilar6174/flutter-movies-app","last_synced_at":"2026-04-16T05:33:50.754Z","repository":{"id":171050757,"uuid":"645458079","full_name":"baguilar6174/flutter-movies-app","owner":"baguilar6174","description":"This application uses TheMovieDB API to display, filter, search, add to favorites, view movie details among other functions, this application uses Riverpod as a state manager, and principles of Clean Architecture, Clean code and SOLID.","archived":false,"fork":false,"pushed_at":"2023-06-16T16:40:22.000Z","size":16548,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-19T08:11:27.488Z","etag":null,"topics":["clean-architecture","dart","dio","flutter","go-router","isar","material-theme","riverpod","the-movie-db"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/baguilar6174.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-25T17:42:52.000Z","updated_at":"2025-05-09T03:13:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"75242fe8-c100-49aa-ae66-7c85075b8aa3","html_url":"https://github.com/baguilar6174/flutter-movies-app","commit_stats":null,"previous_names":["baguilar6174/flutter-movies-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/baguilar6174/flutter-movies-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baguilar6174%2Fflutter-movies-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baguilar6174%2Fflutter-movies-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baguilar6174%2Fflutter-movies-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baguilar6174%2Fflutter-movies-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/baguilar6174","download_url":"https://codeload.github.com/baguilar6174/flutter-movies-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baguilar6174%2Fflutter-movies-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31872654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clean-architecture","dart","dio","flutter","go-router","isar","material-theme","riverpod","the-movie-db"],"created_at":"2024-11-07T12:26:04.173Z","updated_at":"2026-04-16T05:33:50.725Z","avatar_url":"https://github.com/baguilar6174.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Movies applicacion\n\nThis application uses TheMovieDB API to display, filter, search, add to favorites, view movie details among other functions, this application uses Riverpod as a state manager, and principles of Clean Architecture, Clean code and SOLID.\n\n## Concepts of architecture\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" valign=\"center\"\u003e\u003cimg src=\"./media/clean_architecture.jpg\" width=\"75%\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n \u003c/table\u003e\n\n### Entities\nEste concepto nos ayude a definir las reglas de negocio. Hay que tener en cuenta que las entidades son atómicas. Podemos pensar en entidades como objetos que son y serán idénticos entre diferentes aplicaciones de nuestra empresa. Por ejemplo, clientes, productos, películas.\n\n### Datasources\nEn pocas palabras, un Datasource es la fuente de datos. No debería importar de donde venga la información. Los datasources abstractos definen las reglas de negocio que se deben seguir, mientras que las implementaciones como tal, es en donde se llama al API.\n\n### Repositories\nSon los encargados de invocar a los datasources. Deben ser flexibles para poder cambiarlos en cualquier momento, sin afectar a la aplicación.\n\n### State manager\nSirve de puente entre nuestros casos de uso (repository) y realizan los cambios visuales en los Widgets. El gestor de estado es el encargado de invocar a los casos de uso, y estos al repositorio.\n\n## Android platform overview\n\n- Minimum supported version: Android version 5.0 Lollipop (Api level 21)\n- Application Identifier (applicationId) **com.example.flutter_movies_app**\n\n## Get Started 🚀\n\n- Depending on the platform (Windows / MacOS) install Flutter in the stable version `3.10.0`\n- In case of using different versions of Flutter, it is recommended to install and use the Flutter [FVM version manager](https://fvm.app/).\n\n```\ngit clone https://github.com/baguilar6174/flutter-movies-app.git\n```\n\n1. Run `flutter pub get` in project root\n2. Copy `.env.template` after that, rename this file to `.env`\n3. Complete the environment variables\n  - This project uses TheMovieDB API, you can read the [documentation to create an API Key](https://developer.themoviedb.org/docs/getting-started)\n4. Run `flutter pub run build_runner build` to generate neccesary files\n5. Run `flutter run`\n\n## Packages used\n\n* `go_router: ^6.0.5` Routes management\n* `flutter_dotenv: ^5.0.2` Use environment variables\n* `dio: ^5.1.2` HTTP Client\n* `flutter_riverpod: ^2.3.6` State manager\n* `card_swiper: ^2.0.4` Carrusel\n* `intl: ^0.18.1` Internationalized/localized\n* `isar: ^3.1.0+1` Local database Isar\n* `isar_flutter_libs: ^3.1.0+1` Flutter binaries for the Isar Database\n* `isar_generator: ^3.1.0+1` Code generator for the Isar Database\n* `build_runner: ^2.4.5` Generating files using Dart code\n* `path_provider: ^2.0.15`  Finding commonly used locations on the filesystem\n* `flutter_staggered_grid_view: ^0.6.2` Provides a collection of Flutter grids layouts\n\n## What I learned\n\n- Datasources\n- Repositories\n- Models\n- Entities\n- Riverpod\n  - Provider\n  - StateNotifierProvider\n  - Notifiers\n- Mappers\n- Navigation router\n- SearchDelegate\n- Debouncer\n- Streams\n- Builders\n- Navigation\n- Go_Router\n  - Redirect\n  - ShellRoute\n  - SubShellRoutes\n- Local database\n- Riverpod FutureProvider\n\n## Movies applicacion\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"center\"\u003e\n        \u003cimg src=\"./media/1.png\" alt=\"Initial\" width=\"100%\"\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"center\"\u003e\n        \u003cimg src=\"./media/2.png\" alt=\"Carrousel\" width=\"100%\"\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"center\"\u003e\n        \u003cimg src=\"./media/3.png\" alt=\"Horizontal listview\" width=\"100%\"\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"center\"\u003e\n        \u003cimg src=\"./media/4.png\" alt=\"Sliver appbar\" width=\"100%\"\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"center\"\u003e\n        \u003cimg src=\"./media/5.png\" alt=\"Details page\" width=\"100%\"\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"center\"\u003e\n        \u003cimg src=\"./media/6.png\" alt=\"Search delegate\" width=\"100%\"\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd colspan=\"2\" align=\"center\" valign=\"center\"\u003e\n        \u003cimg src=\"./media/7.png\" alt=\"isar db\" width=\"100%\"\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"center\"\u003e\n        \u003cimg src=\"./media/8.png\" alt=\"isar db\" width=\"50%\"\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n## Autor\n\n- Website - [www.bryan-aguilar.com](https://www.bryan-aguilar.com/)\n- Medium - [baguilar6174](https://baguilar6174.medium.com/)\n- LinkeIn - [baguilar6174](https://www.linkedin.com/in/baguilar6174)\n- Email - [bryan.aguilar6174@gmail.com](mailto:bryan.aguilar6174@gmail.com)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaguilar6174%2Fflutter-movies-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbaguilar6174%2Fflutter-movies-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaguilar6174%2Fflutter-movies-app/lists"}