{"id":22455728,"url":"https://github.com/theapache64/twyper","last_synced_at":"2025-06-11T09:32:06.159Z","repository":{"id":43290527,"uuid":"461554384","full_name":"theapache64/twyper","owner":"theapache64","description":"🔥 Yet another Tinder like swipeable cards, built for Jetpack Compose","archived":false,"fork":false,"pushed_at":"2022-08-01T18:48:40.000Z","size":205,"stargazers_count":108,"open_issues_count":2,"forks_count":8,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-08T11:51:30.530Z","etag":null,"topics":["jetpack-compose","tinder-swiper"],"latest_commit_sha":null,"homepage":"https://twitter.com/theapache64/status/1495460911372705793","language":"Kotlin","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/theapache64.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}},"created_at":"2022-02-20T16:58:45.000Z","updated_at":"2025-01-13T02:05:40.000Z","dependencies_parsed_at":"2022-08-31T15:21:44.747Z","dependency_job_id":null,"html_url":"https://github.com/theapache64/twyper","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Ftwyper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Ftwyper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Ftwyper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Ftwyper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theapache64","download_url":"https://codeload.github.com/theapache64/twyper/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Ftwyper/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259238870,"owners_count":22826811,"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":["jetpack-compose","tinder-swiper"],"created_at":"2024-12-06T07:13:17.515Z","updated_at":"2025-06-11T09:32:06.124Z","avatar_url":"https://github.com/theapache64.png","language":"Kotlin","readme":"![](cover.jpeg)\n\n# twyper\n\n![buildStatus](https://img.shields.io/github/workflow/status/theapache64/twyper/Java%20CI%20with%20Gradle?style=plastic)\n![latestVersion](https://img.shields.io/github/v/release/theapache64/twyper)\n\u003ca href=\"https://twitter.com/theapache64\" target=\"_blank\"\u003e\n\u003cimg alt=\"Twitter: theapache64\" src=\"https://img.shields.io/twitter/follow/theapache64.svg?style=social\" /\u003e\n\u003c/a\u003e\n\n\u003e Yet another Tinder like swipeable card library, built for Jetpack Compose\n\n### ✨ Demo\n\nhttps://user-images.githubusercontent.com/9678279/154856283-c38be412-387c-4b25-a612-01fea39829f1.mov\n\n## ⌨️ Usage\n\n![latestVersion](https://img.shields.io/github/v/release/theapache64/twyper)\n\n### 1. Add dependency\n```groovy\nrepositories {\n  maven { url 'https://jitpack.io' } // Add jitpack\n}\n\ndependencies {\n  implementation 'com.github.theapache64:twyper:\u003clatest.version\u003e'\n}\n```\n\n### 2. Use `Twyper` composable\n\n```kotlin\nval items = remember { mutableStateListOf(*('A'..'Z').toList().toTypedArray()) }\n\n//  twyperController to swipe cards programmatically\nval twyperController = rememberTwyperController() \nTwyper(\n    items = items,\n    twyperController = twyperController, // optional\n    onItemRemoved = { item, direction -\u003e\n        println(\"Item removed: $item -\u003e $direction\")\n        items.remove(item)\n    },\n    onEmpty = { // invoked when the stack is empty\n        println(\"End reached\")\n    }\n) { item -\u003e\n    // card content goes here\n}\n\n```\n- See full source code [here](https://github.com/theapache64/twyper/blob/b4c21e76928ed888c9c1230ca9e3ac4711d8cf5a/sample/src/main/java/com/github/theapache64/twyper/TwyperPreview.kt#L20)\n\n### 3. Use `TwyperFlip` composable\n```kotlin\nval items = remember { mutableStateListOf(*('A'..'Z').toList().toTypedArray()) }\n\n//  twyperFlipController to swipe cards programmatically\nval twyperFlipController = rememberTwyperFlipController()\n\nval generateBoxModifier: () -\u003e Modifier = {\n    //return Modifier for the card\n}\n\nTwyperFlip(\n    items = items,\n    twyperFlipController = twyperFlipController,\n    onItemRemoved = { item, direction -\u003e\n        println(\"Item removed: $item -\u003e $direction\")\n        items.remove(item)\n    },\n    cardModifier = generateBoxModifier,\n    onEmpty = {  \n        println(\"End reached\")\n    },\n    front = { item -\u003e\n        // card content goes here\n    },\n    back = { item -\u003e\n       // card content when flipped goes here\n    })\n```\n- See full source code [here](https://github.com/yash-k9/twyper/blob/master/sample/src/main/java/com/github/theapache64/twyper/TwyperFlipPreview.kt)\n\n## 🧪 More Samples\n\n- [Swipe Search](https://github.com/theapache64/swipe-search)\n\nhttps://user-images.githubusercontent.com/9678279/154852171-184ff026-f2e4-4ff7-9782-4ab3d9947bf7.mov\n\n- [Swipe Search Flip](https://github.com/theapache64/swipe-search)\n\nhttps://user-images.githubusercontent.com/59912430/157506600-6fc784c7-e7f5-40ae-b6fe-d369876e7908.mp4\n\n- [TwyperFlip Demo](https://github.com/yash-k9/twyper/blob/master/sample/src/main/java/com/github/theapache64/twyper/TwyperFlipPreview.kt)\n\nhttps://user-images.githubusercontent.com/59912430/157507083-77e646d6-e735-4227-abb6-f13c56e217dc.mp4\n\n\n## ✍️ Author\n\n👤 **theapache64**\n\n* Twitter: \u003ca href=\"https://twitter.com/theapache64\" target=\"_blank\"\u003e@theapache64\u003c/a\u003e\n* Email: theapache64@gmail.com\n\nFeel free to ping me 😉\n\n## 🤝 Contributing\n\nContributions are what make the open source community such an amazing place to be learn, inspire, and create. Any\ncontributions you make are **greatly appreciated**.\n\n1. Open an issue first to discuss what you would like to change.\n1. Fork the Project\n1. Create your feature branch (`git checkout -b feature/amazing-feature`)\n1. Commit your changes (`git commit -m 'Add some amazing feature'`)\n1. Push to the branch (`git push origin feature/amazing-feature`)\n1. Open a pull request\n\nPlease make sure to update tests as appropriate.\n\n## ❤ Show your support\n\nGive a ⭐️ if this project helped you!\n\n\u003ca href=\"https://www.patreon.com/theapache64\"\u003e\n  \u003cimg alt=\"Patron Link\" src=\"https://c5.patreon.com/external/logo/become_a_patron_button@2x.png\" width=\"160\"/\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://www.buymeacoffee.com/theapache64\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" width=\"160\"\u003e\n\u003c/a\u003e\n\n## ☑️ TODO\n\n- [ ] Add UI tests and unit tests\n\n## 📝 License\n\n```\nCopyright © 2022 - theapache64\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.\n```\n\n_This README was generated by [readgen](https://github.com/theapache64/readgen)_ ❤\n","funding_links":["https://www.patreon.com/theapache64","https://www.buymeacoffee.com/theapache64"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheapache64%2Ftwyper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheapache64%2Ftwyper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheapache64%2Ftwyper/lists"}