{"id":22253310,"url":"https://github.com/willacosta/flutter_currency_micro_app","last_synced_at":"2025-07-28T05:32:27.275Z","repository":{"id":120174140,"uuid":"594758676","full_name":"WillACosta/flutter_currency_micro_app","owner":"WillACosta","description":" A Currency converter application written in Dart/Flutter that using modularization architecture and mono-repo, managed by Melos CLI ","archived":false,"fork":false,"pushed_at":"2023-06-06T11:36:00.000Z","size":2682,"stargazers_count":6,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-05T18:48:07.367Z","etag":null,"topics":["architecture","clean-architecture","cli","dart","flutter","melos","melos-cli","micro-app","micro-frontend","micro-frontends","mobile","mobile-app","modularization"],"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/WillACosta.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,"zenodo":null}},"created_at":"2023-01-29T15:01:39.000Z","updated_at":"2024-12-08T10:25:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"2101f115-644c-42cd-a113-5184a35f55aa","html_url":"https://github.com/WillACosta/flutter_currency_micro_app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/WillACosta/flutter_currency_micro_app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillACosta%2Fflutter_currency_micro_app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillACosta%2Fflutter_currency_micro_app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillACosta%2Fflutter_currency_micro_app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillACosta%2Fflutter_currency_micro_app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WillACosta","download_url":"https://codeload.github.com/WillACosta/flutter_currency_micro_app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WillACosta%2Fflutter_currency_micro_app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267468300,"owners_count":24092318,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"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":["architecture","clean-architecture","cli","dart","flutter","melos","melos-cli","micro-app","micro-frontend","micro-frontends","mobile","mobile-app","modularization"],"created_at":"2024-12-03T07:17:47.909Z","updated_at":"2025-07-28T05:32:27.267Z","avatar_url":"https://github.com/WillACosta.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"Language: [English](https://github.com/WillACosta/flutter_currency_micro_app) | [Português](https://github.com/WillACosta/flutter_currency_micro_app/tree/main/docs/translations/pt-BR)\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg align=\"center\" width ='80px' src=\"./app/assets/images/logo.png\" alt=\"logo\"\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://medium.com/@willAmaral\"\u003e\u003cimg alt=\"Medium\" src=\"https://skydoves.github.io/badges/Story-Medium.svg\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.instagram.com/wiidev/\"\u003e\u003cimg alt=\"Instagram Profile\" src=\"https://badges.aleen42.com/src/instagram.svg\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nCurrency Converter App provides a simple way to convert any currency. The main idea for this project is to study and apply modularization with mono-repo and managed by Melos CLI, it follows some development best practices, such as Clean Architecture, Clean Code, SOLID, and so on.\n\n# Content\n\n- **[Features](#features)**\n- **[Screenshots](##screenshots)**\n- **[App Modularization Guide](#app-modularization-guide)**\n- **[UI and Design](#ui-and-design)**\n- **[Technical Resources](#technical-resources)**\n- **[Getting Started](#getting-started)**\n\u003c!-- - **[App Flow Sample](#app-flow-sample)** --\u003e\n\n\u003cbr\u003e\n\n# Features\n\nThe project has only three features, `:feature_welcome`, `:feature_conversion` and\n`:feature_currencies_list`, you can see more details in [app modularization\nguide](#app-modularization-guide).\n\n## Screenshots\n\n![Screenshot showing Welcome Screen and Home Screen](docs/images/screenshots.png \"Screenshot showing Welcome Screen and Home Screen\")\n\n# App Modularization Guide\n\nThe project uses a modularization approach with mono-repo, to organize\nand breaking the concept of monolithic into loosely coupled, self contained\nmodules.\n\n![A module graph of currency app](docs/images/app_modules.png \"A module graph of currency app\")\nA module graph of currency app, the arrows flow indicates the dependency way.\n\nThe project contains the following types of modules:\n\n- The `app` module - is the main entry point for the app, this module contains\n  all the app level code, such as navigation, dependency injection setting, state\n  management and other similar things.\n\n- `feature` modules - contains specific modules which has a single responsibility\n  and should have no dependencies on other `feature` modules. They only depend on\n  the `core` modules that they require.\n\n- `core` modules - common library modules and specific dependencies that need to be\n  shared between other modules in the app. These modules can depend on other core modules,\n  but they shouldn’t depend on feature or app modules.\n\nAll these modules are managed by Melos CLI, with this tool, we have more control\nover the dependencies in the entire project and we able to execute common tasks in all modules\nat the same time -- [know more about Melos here](https://melos.invertase.dev/).\nYou can find, some scripts that is used by the project on `melos.yaml` file in the\nroot directory.\n\nAs a mentioned above, the project uses an mono-repo approach to organize all\nthe modules, this means that all the necessary modules exists inside this repository.\nAs you can see bellow:\n\n```\n  .\n  |__app\n  |\n  |__packages\n  |  |\n  |  |__core\n  |  |  |__core...\n  |  |\n  |  |__feature\n  |     |__feature...\n  |\n  |_melos.yaml\n```\n\nSome advantages of this approach:\n\n- Help us to split our codebase into small and independents packages,\n  which is great for reuse and testing\n- Keep everything stored in one place, which saves a lot of time, when is searching\n  for specific module\n- Enforces layered architecture, because all the packages refers to an specific layer\n\n# UI and Design\n\nThe app was designed with an simple and minimalist purpose, we use the concepts\nof design tokens and atomic design, you can check on\n[figma file](https://www.figma.com/file/aBGCDeRuqnngXxhlY4p2O9/Currency-Converter-App-Case-Study?node-id=45%3A39\u0026t=5egYOZqyjrlwngih-1).\n\nThe app has supports for dark and light mode, you can find all components and tokens\nin the `:core_ui` package.\n\n# Technical Resources\n\n- Clean Architecture and SOLID concepts\n- Modularization Approach with mono-repo\n- Mono-repo management with `Melos CLI`\n- Dependency Injection in multiple modules with `GetIt` and `Injectable`\n- Design System and tokens for UI\n- Lottie Animations\n- Navigation system with `Go Router`\n- State management with `Value Notifier`\n\n# Getting Started\n\nFollow these steps to configure and execute the project in your machine:\n\n1. First of all, you need the Flutter SDK and Android/iOS environments to\n   continue -- find more information about this [process here](https://docs.flutter.dev/get-started/install).\n\n2. After had finish the setup of your environment, go to the project directory,\n   and run the following command:\n\n```shell\nmelos bootstrap\n```\n\nThis command runs `flutter pub get` in all modules at the same time and run\n`build runner` when the dependencies are installed with successful.\n\n3. At last, run the app with:\n\n```shell\nflutter run\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillacosta%2Fflutter_currency_micro_app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwillacosta%2Fflutter_currency_micro_app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillacosta%2Fflutter_currency_micro_app/lists"}