Skip to content

Cross-platform SwiftUI app for managing and enforcing custom DNS settings across networks. Built using Composable Architecture. Supports iPhone, iPad and Mac

License

Notifications You must be signed in to change notification settings

peterdsp/imjaDNS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

imjaDNS

imjaDNS is a SwiftUI-based iOS application that allows users to view, manage, and apply custom DNS profiles system-wide using Apple's NEDNSSettingsManager. It loads default profiles from Firebase Remote Config and supports user-defined DNS servers with persistent storage.

imjaDNS


✨ Features

  • ✅ View currently active system DNS
  • 🌐 Detect current network (Wi-Fi, Cellular, Ethernet)
  • 📥 Fetch curated DNS profiles from Firebase Remote Config
  • ➕ Add your own custom DNS profiles (persisted locally)
  • 🔁 Auto-apply last used DNS at app launch
  • ⚙️ First-time setup alert with shortcut to DNS settings
  • 🧩 Built with SwiftUI + Composable Architecture (TCA)

🧠 Architecture

• Composable Architecture (TCA): State management and effects.

• SwiftUI: UI framework for views.

• Firebase Remote Config: Remote profile loading.

• UserDefaults: Stores last used DNS and custom profiles.

• NEDNSSettingsManager: Applies system-wide DNS settings (no VPN used).


🛠 Developer Notes

• DNS changes require user interaction: Users must go to Settings > VPN & Device Management > DNS and select imjaDNS.

• Custom profiles are stored using UserDefaults and restored on every launch.

• Remote Config profiles load only once per session to minimize bandwidth and server hits.


📄 License

License © Petros Dhespollari 2025

About

Cross-platform SwiftUI app for managing and enforcing custom DNS settings across networks. Built using Composable Architecture. Supports iPhone, iPad and Mac

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages