{"id":13477793,"url":"https://github.com/FunkyMuse/Vigilante","last_synced_at":"2025-03-27T06:30:54.685Z","repository":{"id":37787450,"uuid":"304110809","full_name":"FunkyMuse/Vigilante","owner":"FunkyMuse","description":"🛡️ Android security (camera/microphone dots indicators) app using Hilt, Animations, Coroutines, Material, StateFlow, Jetpack (Room, ViewModel, Paging, Security, Biometrics, Start-up) based on MVVM architecture.","archived":true,"fork":false,"pushed_at":"2023-10-21T15:10:59.000Z","size":3803,"stargazers_count":775,"open_issues_count":5,"forks_count":63,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-10-30T10:41:25.009Z","etag":null,"topics":["android","androidanimation","androidviewmodel","biometrics-android","camera","clean-architecture","clean-architecture-coroutines","coroutines-android","dagger2","hilt-android","hilt-dependency-injection","kotlin","material-animation","microphone","mvvm-android","mvvm-architecture","paging3","room-persistence-library","screen-dots","stateflow"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FunkyMuse.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2020-10-14T19:07:49.000Z","updated_at":"2024-10-12T16:42:08.000Z","dependencies_parsed_at":"2024-01-14T08:17:15.066Z","dependency_job_id":"e193b4e1-a604-4b8c-9cd0-941a33a6a07a","html_url":"https://github.com/FunkyMuse/Vigilante","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunkyMuse%2FVigilante","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunkyMuse%2FVigilante/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunkyMuse%2FVigilante/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunkyMuse%2FVigilante/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FunkyMuse","download_url":"https://codeload.github.com/FunkyMuse/Vigilante/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245797266,"owners_count":20673818,"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","androidanimation","androidviewmodel","biometrics-android","camera","clean-architecture","clean-architecture-coroutines","coroutines-android","dagger2","hilt-android","hilt-dependency-injection","kotlin","material-animation","microphone","mvvm-android","mvvm-architecture","paging3","room-persistence-library","screen-dots","stateflow"],"created_at":"2024-07-31T16:01:47.661Z","updated_at":"2025-03-27T06:30:52.685Z","avatar_url":"https://github.com/FunkyMuse.png","language":"Kotlin","funding_links":[],"categories":["Kotlin"],"sub_categories":[],"readme":"# Vigilante [THIS PROJECT IS UNMAINTAINED DUE TO THIS FUNCTIONALITY ALREADY PRESENT IN THE OS INTEGRATION]\n\n[![API](https://img.shields.io/badge/API-24%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=21)\n[![GitHub release (including pre-releases)](https://img.shields.io/github/v/release/FunkyMuse/Vigilante?include_prereleases)](https://github.com/FunkyMuse/Vigilante/releases/latest)\n\nAn app that focuses on your privacy and alerts you when a third-party app uses your device camera or mic, plus few other goodies.\n\n## Features\n- Notifications when mic/camera is used\n- Screen dots when mic/camera is used\n- Screen dots customizations when mic/camera is used (size, color, screen position)\n- History when apps request permissions\n- History of when you disconnected/connected your charger\n- History of when you connected/disconnected your headphones\n- History of your notifications\n- Lockscreen history\n- Security sensible device info\n- No sneaky permissions\n- Does not connect to the Internet\n- All of your data is encrypted (database and preferences)\n- Dark mode/light mode\n- Built with many amazing libre libraries, such as ([Kotlin extensions and helpers](https://github.com/FunkyMuse/KAHelpers), [Crashy](https://github.com/FunkyMuse/Crashy), [SQL Cipher](https://github.com/sqlcipher/android-database-sqlcipher), [Color picker](https://github.com/skydoves/ColorPickerView))\n- and many more…\n\n## Download\n[![Get it on GitHub releases](https://i.ibb.co/q0mdc4Z/get-it-on-github.png)](https://github.com/FunkyMuse/Vigilante/releases/latest)\n[![Get it on F-Droid](https://fdroid.gitlab.io/artwork/badge/get-it-on.png)](https://f-droid.org/en/packages/com.crazylegend.vigilante/)\n\n## Screenshots\n\n#### Light\n\n\u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_1.png\" width=\"33%\"\u003e \u003c/img\u003e\u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_2.png\" width=\"33%\"\u003e \u003c/img\u003e\u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_3.png\" width=\"33%\"\u003e\u003c/img\u003e \u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_4.png\" width=\"33%\"\u003e\u003c/img\u003e \u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_5.png\" width=\"33%\"\u003e\u003c/img\u003e \u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_6.png\" width=\"33%\"\u003e\u003c/img\u003e\n#### Dark\n\n\u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_7.png\" width=\"33%\"\u003e\u003c/img\u003e \u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_8.png\" width=\"33%\"\u003e\u003c/img\u003e \u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_9.png\" width=\"33%\"\u003e\u003c/img\u003e \u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_10.png\" width=\"33%\"\u003e\u003c/img\u003e \u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_11.png\" width=\"33%\"\u003e\u003c/img\u003e \u003cimg src=\"https://raw.githubusercontent.com/FunkyMuse/Vigilante/master/fastlane/metadata/android/en-US/images/phoneScreenshots/screen_12.png\" width=\"33%\"\u003e\u003c/img\u003e\n\n## Translations\nHelp translate the app at [Hosted Weblate](https://hosted.weblate.org/projects/vigilante/).\n\u003ca href=\"https://hosted.weblate.org/engage/vigilante/\"\u003e\n\u003cimg src=\"https://hosted.weblate.org/widgets/vigilante/-/horizontal-blue.svg\" alt=\"Translation status\" /\u003e\n\u003c/a\u003e\n\nPull requests are also possible, Crowdin was removed because it isn't good, and only worked 1 out of 12 times.\n\n## Known issues\n* [Cannot uninstall app via Package Installer](https://github.com/FunkyMuse/Vigilante/issues/150) this issue has a [fix](https://github.com/FunkyMuse/Vigilante/issues/71#issuecomment-769303018)\n\n## Built With 🛠\n\nSome of the popular libraries and MVVM clean architecture used with Room database as a source.\n\n* [Kotlin](https://kotlinlang.org/) - First class and official programming language for Android development.\n\n* [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html) - Threads on steroids for Kotlin.\n* [Flow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/) - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.\n* [StateFlow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/) - A live data replacement.\n\n* [Android JetPack](https://developer.android.com/jetpack) - Collection of libraries that help you design robust, testable, and maintainable apps.\n  * [Paging3](https://developer.android.com/topic/libraries/architecture/paging/v3-overview) - Load and display small chunks of data at a time.\n  * [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - Stores UI-related data that isn't destroyed by UI changes.\n  * [ViewBinding](https://developer.android.com/topic/libraries/view-binding) - A robust replacement for findViewById, kotlin sytnhetics and DataBinding.\n  * [Navigation Components](https://developer.android.com/guide/navigation/navigation-getting-started) - Navigate fragments easier.\n  * [SavedStateHandle](https://developer.android.com/reference/androidx/lifecycle/SavedStateHandle) - A handle to saved state passed down to androidx.lifecycle.ViewModel.\n  * [Room](https://developer.android.google.cn/jetpack/androidx/releases/room) - Persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.\n  * [Biometrics](https://developer.android.com/jetpack/androidx/releases/biometric) - Authenticate with biometrics or device credentials, and perform cryptographic operations.\n  * [Security](https://developer.android.com/jetpack/androidx/releases/security) - Safely manage keys and encrypt files and shared preferences.\n  * [Start-up](https://developer.android.com/jetpack/androidx/releases/startup) - Implement a straightforward, performant way to initialize components at app startup, such as our crash-reporting library [Crashy](https://github.com/FunkyMuse/Crashy).\n* [Material Components for Android](https://github.com/material-components/material-components-android) - Modular and customizable Material Design UI components for Android.\n* [Dependency Injection](https://developer.android.com/training/dependency-injection) -\n  * [Hilt-Dagger](https://dagger.dev/hilt/) - Standard library to incorporate Dagger dependency injection into an Android app.\n  * [Hilt-ViewModel](https://developer.android.com/training/dependency-injection/hilt-jetpack) - DI for injecting `ViewModel`.\n\n* Architecture\n    * Clean Architecture\n    * MVVM \n    * Offline with Room + SQL Cipher\n* Tests\n  * [Mockk](https://mockk.io) - Mocking library for Kotlin.\n  * [Coroutines test](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-test/)\n\n## Found this repository useful? ❤️\n\nSupport it by joining [stargazers](https://github.com/FunkyMuse/Vigilante/stargazers) for this repository. 🌠\n\nAnd [follow me](https://github.com/FunkyMuse) or check out my [blog](https://funkymuse.dev/) for my next creations! ⭐\n\n## Contributions\n\nFeature requests and translations are always welcome.\n\n## License\n[GNU General Public License v3.0+](https://github.com/FunkyMuse/Vigilante/blob/master/LICENSE)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFunkyMuse%2FVigilante","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFunkyMuse%2FVigilante","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFunkyMuse%2FVigilante/lists"}