{"id":13606044,"url":"https://github.com/KaustubhPatange/navigator","last_synced_at":"2025-04-12T07:33:22.727Z","repository":{"id":38366629,"uuid":"356920997","full_name":"KaustubhPatange/navigator","owner":"KaustubhPatange","description":"A small navigation library for Android to ease the use of fragment transactions \u0026 handling backstack (also available for Jetpack Compose).","archived":false,"fork":false,"pushed_at":"2023-09-14T10:23:29.000Z","size":1711,"stargazers_count":101,"open_issues_count":5,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-08T05:34:04.652Z","etag":null,"topics":["android","animations","backstack","bottom-navigation","fragment-transitions","fragments","jetpack-compose","navigation","process-death","single-activity-pattern","state-persistence","tablayout-navigation"],"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/KaustubhPatange.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-04-11T16:34:09.000Z","updated_at":"2025-02-18T01:26:55.000Z","dependencies_parsed_at":"2024-01-16T23:30:31.870Z","dependency_job_id":"e91ca1b0-f03a-4cc4-9c72-615539971a7a","html_url":"https://github.com/KaustubhPatange/navigator","commit_stats":{"total_commits":194,"total_committers":2,"mean_commits":97.0,"dds":0.05154639175257736,"last_synced_commit":"e64b36054b6daabd3542740cdfd4ac8c078a6391"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KaustubhPatange%2Fnavigator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KaustubhPatange%2Fnavigator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KaustubhPatange%2Fnavigator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KaustubhPatange%2Fnavigator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KaustubhPatange","download_url":"https://codeload.github.com/KaustubhPatange/navigator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248534420,"owners_count":21120323,"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","animations","backstack","bottom-navigation","fragment-transitions","fragments","jetpack-compose","navigation","process-death","single-activity-pattern","state-persistence","tablayout-navigation"],"created_at":"2024-08-01T19:01:05.519Z","updated_at":"2025-04-12T07:33:21.869Z","avatar_url":"https://github.com/KaustubhPatange.png","language":"Kotlin","funding_links":[],"categories":["Kotlin"],"sub_categories":[],"readme":"# navigator\n\n![build](https://github.com/KaustubhPatange/navigator/workflows/build/badge.svg)\n\n\u003e **Looking for Jetpack Compose implementation of `navigator`, see [here](navigator-compose)**.\n\nA small (Kotlin first) type-safe navigation library for Android to ease the use of fragment transactions with a `navigator.navigateTo`\ncall (rest is handled for you) \u0026 navigating back is as simple as `navigator.goBack()`.\n\nYou also get a separate `onBackPressed()` callback on the child fragments which will be called when `this` is the current visible fragment \u0026 is the one which is going to be removed upon back press.\n\nThe library provides some custom transitions like `CircularTransform` (on top of existing animations), see its\nuse in the sample app [here](/samples/backpress-sample).\n\n\u003c!-- The library is build on the existing Fragment APIs so it is easy to introduce this library into existing project. The\ndeveloper has complete control over navigation \u0026 can choose between `FragmentTransaction` or `Navigator` at\nany time. --\u003e\n\nIf you have any implementation details to cover let me know.\n\n**What additional benefits I can get when using this library?**\n\n- Proper handling of Fragment Transaction.\n- Handling up \u0026 back press actions efficiently on [Fragment](/samples/basic-sample).\n- Easy to use API for animations \u0026 transitions (see [here](https://github.com/KaustubhPatange/navigator/wiki/Quick-Tutorials#navigation-with-animation)).\n- Generic Typed Arguments when passing data between destinations (see [here](https://github.com/KaustubhPatange/navigator/wiki/Quick-Tutorials#navigation-with-typed-arguments)).\n- Quick Bottom \u0026 Tab navigation setup (see [tutorials](#tutorials)).\n\nAPI Reference docs, check [here](https://kaustubhpatange.github.io/navigator/reference/navigator).\n\n## Implementation\n\n![Maven Central](https://img.shields.io/maven-central/v/io.github.kaustubhpatange/navigator)\n\n```groovy\n// root's build.gradle\nallprojects {\n    repositories {\n        mavenCentral()\n    }\n}\n```\n\n```groovy\n// modules's build.gradle\ndependencies {\n    implementation \"io.github.kaustubhpatange:navigator:\u003cversion\u003e\" // Core library (Required)\n    implementation \"io.github.kaustubhpatange:navigator-extensions:\u003cversion\u003e\" // Optional but recommended\n    implementation \"io.github.kaustubhpatange:navigator-bottom-navigation:\u003cversion\u003e\" // For setting up Bottom Navigation.\n    implementation \"io.github.kaustubhpatange:navigator-tab-navigation:\u003cversion\u003e\" // For setting up Tab Layout Navigation.\n    implementation \"io.github.kaustubhpatange:navigator-rail-navigation:\u003cversion\u003e\" // For setting up Rail Navigation.\n}\n```\n\n- #### Snapshots\n\nSnapshots of the current development version of `navigator` are available, which track the latest commit. See [here](https://github.com/KaustubhPatange/navigator/wiki/Using-a-Snapshot-Version) for more information.\n\n## Samples\n\n- [Basic sample](/samples/basic-sample) - Hands on with the introduction to some library features.\n- [Backpress sample](/samples/backpress-sample) - A sample focused on handling back press events effectively.\n- [Navigation sample](/samples/navigation-sample) - A sample which demonstrate the use of Bottom \u0026 Tab navigation supporting multiple backstack through `navigator`.\n- [Multi-Module Navigation sample](/samples/multi-module-sample) - Multi-module navigation through `navigator` using Dagger-Hilt.\n\n## Tutorials\n\n- [Quick Setup \u0026 usage](\u003chttps://github.com/KaustubhPatange/navigator/wiki/(Sample-1)-Quick-setup-\u0026-usage\u003e)\n- [Hands on Tutorials](https://github.com/KaustubhPatange/navigator/wiki/Quick-Tutorials)\n  - [Navigate to a Fragment](https://github.com/KaustubhPatange/navigator/wiki/Quick-Tutorials#navigate-to-fragment)\n  - [Navigate to a Fragment but remember the transaction](https://github.com/KaustubhPatange/navigator/wiki/Quick-Tutorials#navigate-to-a-Fragment-but-remember-the-transaction)\n  - [Navigation with typed arguments](https://github.com/KaustubhPatange/navigator/wiki/Quick-Tutorials#navigation-with-typed-arguments)\n  - [Navigation with animation](https://github.com/KaustubhPatange/navigator/wiki/Quick-Tutorials#navigation-with-animation)\n  - [Navigation with single top instance or `popUpTo`](https://github.com/KaustubhPatange/navigator/wiki/Quick-Tutorials#navigation-with-single-top-instance-or-popUpTo)\n  - [Navigate to a BottomSheet or Dialog Fragment](https://github.com/KaustubhPatange/navigator/wiki/Quick-Tutorials#navigate-to-a-bottomSheet-or-dialog-fragment)\n- [Bottom navigation setup](\u003chttps://github.com/KaustubhPatange/navigator/wiki/(Sample-2)-Bottom-navigation-setup\u003e)\n- [TabLayout navigation setup](\u003chttps://github.com/KaustubhPatange/navigator/wiki/(Sample-3)-Tab-Navigation\u003e)\n- [Rail navigation setup](\u003chttps://github.com/KaustubhPatange/navigator/wiki/(Sample-4)-Rail-Navigation\u003e)\n\n## Apps using `navigator`\n\nIf you would like me to add your app in the list, let me know through issues.\n\n|                                                                                                               | Name                                                                                                  |\n| ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |\n| \u003cimg width=\"32px\" src=\"https://github.com/KaustubhPatange/Moviesy/raw/master/web/images/icon.png\" /\u003e          | [**Moviesy**](https://kaustubhpatange.github.io/Moviesy) - Client app for YTS movies                  |\n| \u003cimg width=\"32x\" src=\"https://github.com/KaustubhPatange/XClipper/raw/master/XClipper.Web/images/icon.png\" /\u003e | [**XClipper**](https://github.com/KaustubhPatange/XClipper) - Clipboard manager for Android \u0026 Windows |\n\n## License\n\n- [The Apache License Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt)\n\n```\nCopyright 2020 Kaustubh Patange\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\nhttps://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.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKaustubhPatange%2Fnavigator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKaustubhPatange%2Fnavigator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKaustubhPatange%2Fnavigator/lists"}