Skip to content
/ Dend Public

The end of unwanted calls. Your personal call firewall for Android. Define your own rules with a blacklist/whitelist, or block all unknown callers with a single tap. Clean, simple, and effective call control.

License

Notifications You must be signed in to change notification settings

Godzuche/Dend

Repository files navigation

Dend – An Intelligent Call Firewall for Android

Dend App Logo

Block Calls, Not Connections.
A modern, open-source Android app that gives you back your focus by intelligently filtering incoming calls based on your rules.

Latest Release License

The Problem

Ever been in a focused work session, an important meeting, or a critical moment in a game, only to have an unwanted call interrupt you? Worse, on many networks, that incoming call can momentarily kill your phone's mobile data connection, disrupting your flow entirely.

Dend was engineered as a robust solution to this exact problem. It's a lightweight, private, and powerful firewall for your calls, ensuring that only the people you trust can make your phone ring.

Features Implemented

This project showcases a production-ready application built with modern, best-practice Android architecture.

  • Three-Mode Firewall:

    • Firewall On: Instantly and silently rejects any number on your personal blacklist.
    • Zen Mode: Rejects all calls except those on your trusted whitelist. Perfect for zero-distraction focus sessions.
    • Firewall Off: Allows all calls through as normal.
  • Intelligent Rules Management:

    • Persistent Blacklist & Whitelist: Your rules are saved securely on your device in a Room database, surviving app restarts.
    • "Promote & Demote" Logic: A number can only exist on one list. Adding a number to the whitelist automatically removes it from the blacklist (and vice-versa), ensuring predictable behavior.
    • Forgiving "Undo" Action: Accidentally removed a rule? A Snackbar with an "Undo" action provides a safety net, powered by a persistent isPendingDeletion flag in the database to handle app closures gracefully.
  • State-Aware Activity Log:

    • Proof & Transparency: View a chronological history of every call the app has blocked, complete with timestamps and the mode it was blocked in.
    • Contextual Headers: The log is beautifully organized with "Today," "Yesterday," and date-based stickyHeaders for effortless scanning.
    • Smart Actions: Each log item features a dynamic set of quick actions. "Allow" a number (add to whitelist), "Call Back," or "Add Contact." Actions are intelligently hidden if they are not relevant (e.g., "Add Contact" is hidden if the number is already in your device contacts).
  • Robust & Resilient Call Screening:

    • System-Level Integration: Built with CallScreeningService to intercept calls before they ring.
    • High-Reliability Architecture: Engineered to prevent the "stuck network" bug by elevating process priority with a ForegroundService during the critical call-rejection window.
    • Intelligent Number Normalization: Uses Google's libphonenumber to parse and normalize numbers to the E.164 standard, correctly handling local and international formats to ensure rules are matched reliably.
  • Modern & Decoupled Architecture:

    • 100% Kotlin & Jetpack Compose: A fully declarative UI built for performance and state-driven rendering.
    • Clean MVVM & UDF: Follows modern MVVM principles with Unidirectional Data Flow (Flow, StateFlow).
    • Centralized Event Bus: A generic UiEventBus decouples ViewModels from the UI, allowing any feature to request a Snackbar or other global UI action without direct dependencies.
    • Dependency Injection: Uses Koin for a clear and maintainable dependency graph.
  • Private by Design: All rule processing and call logging happens entirely on your device. Your contacts, rules, and call patterns never leave your phone.

Screenshots

Coming soon... The UI is being polished to perfection!

Installation & Setup

  1. Download the latest APK from the Releases Page.
  2. Install the app on your Android device (Android 10/Q or higher).
  3. Crucial Step: On first launch, the app will guide you to set Dend as the default "Caller ID & spam app". This permission is required by Android for the app to screen and manage incoming calls.
  4. Start building your firewall rules and enjoy the silence!

Roadmap & Planned Features

This project is an active exploration of modern Android development.

  • Custom Firewall Rules: Block calls based on patterns (e.g., hidden numbers, international numbers).
  • Automated SMS Replies: Optionally send a configurable, automatic text message when a call is blocked.
  • Onboarding Flow: A guided setup experience for new users.
  • Intelligent Spam Database Integration: (Future) Optionally sync with a known spam number database.

Contributing

This is an open-source project built for learning and solving a real-world problem. Contributions, feature ideas, and pull requests are welcome and greatly appreciated! Please see CONTRIBUTING.md for more details.

License

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

About

The end of unwanted calls. Your personal call firewall for Android. Define your own rules with a blacklist/whitelist, or block all unknown callers with a single tap. Clean, simple, and effective call control.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages