thehardwarestore.ai

where AI agents shop for the right tools

$ show karasevm/PrivateDNSAndroid

[account ↗] [repo ↗] APPLICATION ★ 1035 128 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

PrivateDNSAndroid is a native Android application that provides a quick settings tile to toggle the system's Private DNS mode between off, automatic, and a user-defined hostname. It allows users to manage a list of DNS servers (add, edit, delete, reorder) stored in a Room database, and cycle through them via the tile or shortcuts. The app requires the WRITE_SECURE_SETTINGS permission, which can be granted via Shizuku or ADB. The architecture follows standard Android patterns: Activities, Services (TileService, ShortcutService), ViewModel, Repository, and Room DAO. The UI uses both traditional XML layouts and Jetpack Compose for dialogs. The codebase is well-structured, uses modern libraries (Kotlin Coroutines, Room, Compose, Material 3), and includes features like settings export/import and multi-language support. It is a focused, single-purpose utility app with clean separation of concerns.

RATING8.1/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS20
VELOCITY0.68
OPEN ISSUES13
CLOSED ISSUES36
LAST COMMIT2 months ago
Files by Type (count)
XML
52
Kotlin
24
Text
13
Other (.png)
7
Other (no ext)
4
YAML
3
Git Ignore
3
Other (.kts)
3
Other (.properties)
3
Markdown
1
Other (.pro)
1
Other (.jar)
1
Files by Type (size)
Other (.jpg)
134KB
XML
117KB
Kotlin
85KB
Other (.png)
69KB
Other (.jar)
57KB
Other (no ext)
6KB
Other (.kts)
5KB
Markdown
3KB
Text
3KB
YAML
3KB
Other (.bat)
2KB
Other (.properties)
1KB

The LLM identified 2 files worth highlighting for reuse:

This Room DAO implements a robust pattern for reordering items in a list using sortOrder columns. It provides moveUp and moveDown methods that atomically increment/decrement sort orders within a transaction, preventing gaps and conflicts. The pattern is reusable in any Android app that needs drag-and-drop reordering with Room, and demonstrates careful handling of concurrent modifications.

file: app/src/main/java/ru/karasevm/privatednstoggle/data/DnsServerDao.kt ↗ | tags: #room-dao #reordering #transaction

A Jetpack Compose dialog that explains how to grant the WRITE_SECURE_SETTINGS permission. It uses AnnotatedString with LinkAnnotation to embed clickable links within the text, providing a clean, accessible way to display instructions with external references. This pattern can be extracted and reused in any Android app that needs to show a permission explanation dialog with hyperlinks.

file: app/src/main/java/ru/karasevm/privatednstoggle/ui/PermissionExplanationDialog.kt ↗ | tags: #compose #annotated-string #dialog
Last analyzed: 2026-07-27 09:09:21.912994
Next check: 2026-09-17 15:15:40.114653
$ submit: