{"id":20760223,"url":"https://github.com/yassineabou/calculator","last_synced_at":"2025-10-06T00:05:04.375Z","repository":{"id":163769862,"uuid":"603163072","full_name":"yassineAbou/Calculator","owner":"yassineAbou","description":"Calculator is an android app that simplifies all mathematical needs from basic to complex functions, including EMI calculations","archived":false,"fork":false,"pushed_at":"2024-10-26T01:08:44.000Z","size":4727,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-30T05:44:51.927Z","etag":null,"topics":["android","android-architecture-components","baseline-profiles","calculator","data-binding","emi-calculator","hilt","kotlin","kotlin-coroutines","mvvm","mxparser","navigation-component","room","sdp","ssp","viewmodel"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yassineAbou.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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-02-17T18:47:20.000Z","updated_at":"2024-10-26T01:08:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"14d5650f-d091-49e5-9065-035a334cdf92","html_url":"https://github.com/yassineAbou/Calculator","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yassineAbou%2FCalculator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yassineAbou%2FCalculator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yassineAbou%2FCalculator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yassineAbou%2FCalculator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yassineAbou","download_url":"https://codeload.github.com/yassineAbou/Calculator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251651221,"owners_count":21621702,"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","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":["android","android-architecture-components","baseline-profiles","calculator","data-binding","emi-calculator","hilt","kotlin","kotlin-coroutines","mvvm","mxparser","navigation-component","room","sdp","ssp","viewmodel"],"created_at":"2024-11-17T10:12:28.027Z","updated_at":"2025-10-06T00:04:59.355Z","avatar_url":"https://github.com/yassineAbou.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e \n \u003cimg src=\"https://i.imgur.com/hVfvB0H.png\" alt=\"Calculator\" style=\"width: 100px; height: 100px; object-fit: contain; margin-right: 10px;\"\u003e\n  \u003ch1 style=\"display: inline-block; margin: 0; vertical-align: middle;\"\u003eCalculator\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://kotlinlang.org/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Kotlin-1.8.21-blue?logo=kotlin\" alt=\"Kotlin version 1.8.21\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://gradle.org/releases/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Gradle-8.0.2-white?logo=gradle\" alt=\"Gradle version 8.0.2\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://developer.android.com/studio\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Android%20Studio-Flamingo-orange?logo=android-studio\" alt=\"Android Studio Flamingo\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://developer.android.com/studio/releases/platforms#7.0\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Android%20min%20version-7-brightgreen?logo=android\" alt=\"Android min version 7\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\nThis app simplifies all the mathematical needs from basic to complex functions.\nIt allows the user to  save and reference his previous calculations at any time.\nPlus, it can easily handle EMI calculations,  compare results, and share them with other apps\n\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://play.google.com/store/apps/details?id=com.yassineabou.calculator\"\u003e\u003cimg alt=\"Get it on Google Play\" src=\"https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png\" height=\"80px\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Screenshots\n\n\u003cdiv style=\"display:flex; flex-wrap:wrap;\"\u003e\n  \u003cimg src=\"https://i.imgur.com/7WHkTHI.jpg\" style=\"flex:1; margin:5px;\" height=\"450\"\u003e\n  \u003cimg src=\"https://i.imgur.com/uSw9JmW.jpg\" style=\"flex:1; margin:5px;\" height=\"225\"\u003e\n  \u003cimg src=\"https://i.imgur.com/ZTUjq7h.jpg\" style=\"flex:1; margin:5px;\" height=\"450\"\u003e\n \u003cimg src=\"https://i.imgur.com/wHxuU7S.jpg\" style=\"flex:1; margin:5px;\" height=\"450\"\u003e\n  \u003cimg src=\"https://i.imgur.com/jSxeAb0.jpg\" style=\"flex:1; margin:5px;\" height=\"450\"\u003e\n  \u003cimg src=\"https://i.imgur.com/eYofXob.jpg\" style=\"flex:1; margin:5px;\" height=\"450\"\u003e\n  \u003cimg src=\"https://i.imgur.com/fQHjr71.jpg\" style=\"flex:1; margin:5px;\" height=\"450\"\u003e\n  \u003cimg src=\"https://i.imgur.com/AXxQt2e.jpg\" style=\"flex:1; margin:5px;\" height=\"450\"\u003e\n\u003c/div\u003e\n\n## Architecture\nThe architecture of this application relies and complies with the following points below:\n* A single-activity architecture, using the [Navigation Components](https://developer.android.com/guide/navigation) to manage fragment operations.\n* Pattern [Model-View-ViewModel](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel)(MVVM) which facilitates a separation of development of the graphical user interface.\n* [Android architecture components](https://developer.android.com/topic/libraries/architecture/) which help to keep the application robust, testable, and maintainable.\n\n\u003cp align=\"center\"\u003e\u003ca\u003e\u003cimg src=\"https://raw.githubusercontent.com/mayokunthefirst/Instant-Weather/master/media/final-architecture.png\" width=\"700\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n## Package Structure\n```  \ncom.yassineabou.calculator  # Root Package\n├── data                    # For handling all data operations\n│   ├── local               # For handling data on a local level\n│   ├── model               # Contains data classes/structures\n│   └── repository          # For accessing and managing data\n|  \n├── di                      # Dependency Injection: Contains the dependency injection setup\n│  \n├── ui                      # UI Layer: Activities, Fragments, ViewModels\n│   ├── calculator          # Contains logic and UI for the calculator\n│   ├── emi                 # Contains logic and UI for the EMI calculator\n│   └── MainActivity        # The main activity which hosts the other UI elements\n|  \n├── utils                   # Contains utility classes and Kotlin extensions\n└── CalculatorApplication   # The application class\n\n\n```  \n\n## Built With 🧰\n\n- [Baseline Profiles](https://developer.android.com/topic/performance/baselineprofiles/overview) (Performance optimization tool)\n- [Navigation](https://developer.android.com/topic/libraries/architecture/navigation) (Fragment transitions)\n- [Data Binding](https://developer.android.com/topic/libraries/data-binding) (Bind views)\n- [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) (Store and manage UI-related data)\n- [Kotlin Coroutine](https://github.com/Kotlin/kotlinx.coroutines) (Light-weight threads)\n- [Hilt](https://dagger.dev/hilt/) (Dependency Injection for Android)\n- [Room](https://developer.android.com/topic/libraries/architecture/room) (Abstraction layer over SQLite)\n- [Sdp](https://github.com/intuit/sdp) (Scalable size unit)\n- [Ssp](https://github.com/intuit/ssp) (Scalable size unit for texts)\n-  [MxParser](https://github.com/mariuszgromada/MathParser.org-mXparser) (Math expression parser)\n\n## Contribution\nWe welcome contributions to our project! Please follow these guidelines when submitting changes:\n\n-   Report bugs and feature requests by creating an issue on our GitHub repository.\n-   Contribute code changes by forking the repository and creating a new branch.\n-   Ensure your code follows our coding conventions.\n-   Improve our documentation by submitting changes as a pull request.\n\nThank you for your interest in contributing to our project!\n\n## License\n```\nCopyright 2023 Yassine Abou \n  \nLicensed under the Apache License, Version 2.0 (the \"License\");  \nyou may not use this file except in compliance with the License.  \nYou may obtain a copy of the License at  \n  \n    http://www.apache.org/licenses/LICENSE-2.0  \n  \nUnless required by applicable law or agreed to in writing, software  \ndistributed under the License is distributed on an \"AS IS\" BASIS,  \nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  \nSee the License for the specific language governing permissions and  \nlimitations under the License.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyassineabou%2Fcalculator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyassineabou%2Fcalculator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyassineabou%2Fcalculator/lists"}