DNS over HTTPS / DNS over Tor / DNSCrypt client, firewall, and connection tracker for Android.

Overview

RethinkDNS + Firewall for Android

An OpenSnitch-inspired firewall and network monitor + a pi-hole-inspired DNS over HTTPS client with blocklists.

In other words, RethinkDNS has two primary modes, DNS and Firewall. The DNS mode routes all DNS traffic generated by apps to one of two DNS over HTTPS resolvers (Cloudflare and RethinkDNS). The Firewall mode lets the user deny internet-access to entire applications based on events like screen-on / screen-off, app-foreground / app-background, connected to unmetered-connection / metered-connection / always; or based on play-store defined categories like Social, Games, Utility, Productivity; or additionally, based on user-defined blacklists.

Get it on F-Droid Get it on Google Play

Firewall

The firewall doesn't really care about the connections per se rather what's making those connections. This is different from the traditional firewalls but in-line with Little Snitch, LuLu, Glasswire and others.

Currently, per app connection mapping is implemented by capturing udp and tcp connections managed by outline-go-tun2socks-layer (written in golang) and asking ConnectivityService for the owner, an API available only on Android 10 or higher. procfs (/proc/net/tcp and /proc/net/udp) is read on-demand to track per-app connections like NetGuard or OpenSnitch do on Android 9 and lower versions. Tracking tcp connections like this works fine whilst tracking udp doesn't.

Network Monitor

A network monitor is a per-app report-card of sorts on when connections were made, how many were made, and to where. Tracking TCP has turned out to be so far straight-forward. DNS packets are trickier to track, and so a rough heuristic is used for now, which may not hold good in all cases.

DNS over HTTPS client

Almost all of the network related code, including DNS over HTTPS split tunnel, is a very minimal fork of the excellent Jigsaw-Code/outline-go-tun2socks written in golang. A majority of work is on the UI with other parts remaining same as on Jigsaw-Code/Intra, and so the implementation underneath is pretty much the same. A split-tunnel traps requests sent to the VPN's DNS endpoint and relays it to a DNS over HTTPS endpoint of the user's choosing and logs the end-to-end latency, time, the request query and its answer.

The RethinkDNS Resolver

A malware and ad-blocking DNS over HTTPS resolver at https://free.bravedns.com/dns-query (deployed to 200+ locations world-wide) is the default DNS endpoint on the app, though the user is free to change that. A configurable DNS resolver that lets users add or remove blacklists and whitelists, add rewrites, analyse DNS requests is launching late October, 2020. Right now, a free-to-use DNS over HTTPS endpoint with custom blocklists can be setup here: bravedns.com/configure.

Community

What RethinkDNS is not

RethinkDNS is not an anonymity tool: It helps users tackle unabated censorship and surveillance but doesn't lay claim to protecting a user's identity at all times, if ever.

RethinkDNS doesn't aim to be a feature-rich traditional firewall: It is more in-line with Little Snitch than IP tables, say.

RethinkDNS is not an anti-virus: RethinkDNS may stop users from phishing attacks, malware, scareware websites through its DNS-based blocklists, but it doesn't actively mitigate threats or even look for them or act on them, otherwise.

What RethinkDNS aspires to be

To turn Android devices into user-agents: Something that users can control as they please without requiring root-access. A big part of this, for an always-on, always-connected devices, is capturing network traffic and reporting it in a way that makes sense to the end-users who can then take a series of actions to limit their exposure but not necessarily eliminate it. Take DNS for example-- for most if not all connections, apps send out a DNS request first, and by tracking just those one can glean a lot of intelligence about what's happening with the phone and which app's responsible.

To deliver the promise of open-internet for all: With the inevitable ESNI standardization and the imminent adoption of DNS over HTTPS and DNS over TLS across operating systems, we're that much closer to an open internet. Of course, Deep Packet Inspection remains a credible threat that can't be mitigated with this, but it is one example of delivering maximum impact (circumvents internet censorship in most countries) with minimal effort (not requiring a use of a VPN or IPFS, for example). RethinkDNS would continue to make these technologies accessible in the most simplest way possible, especially the ones that get 90% of the way there with 10% effort.

Development

  1. Feel free to fork and send along a pull request for any reproducible bug fixes.
  2. The codebase is raw and is lacking documentation and comprehensive tests. If you need help, feel free to create a Wikipage to highlight the pain with building, testing, writing, committing code.
  3. Write descriptive commit messages that explain concisely the changes made.
  4. Each commit must reference an open issue on the project. This is to make sure there isn't duplicated effort more than anything else.
  5. If you plan to work on a feature, please create a github issue on the project first to kickstart the discussion before committing to doing any work. Again, this is to avoid duplicate work more than anything else.
  6. Release cycles are undecided, but we're leaning towards bi-weekly once automated tests are up, whenever that may be.

Tenets (unless you know better ones)

We aren't there yet, may never will be but these are some tenets for the project for the foreseeable future.

  • Make it right, make it secure, make it resilient, make it fast. In that order.
  • Easy to use, no-root, no-gimmicks features that are anti-censorship and anti-surveillance.
    • Easy to use: Any of the 2B+ Android users must be able to use it. Think CleanMaster / Instagram levels of ease-of-use.
    • no-root: Shouldn't require root-access for any functionality added to it.
    • no-gimmicks: Misleading material bordering on scareware, for example.
    • anti-censorship: Features focused on helping bring an open internet to everyone, preferably in the most efficient way possible (both monetarily and technically).
  • Anti-surveillance: As above, but features that further limit (may not necessarily eliminate) surveillance by apps.
  • Incremental changes in balance with newer features.
    • For example, work on nagging UI issues or OEM specific bugs, must be taken up on equal weight to newer features, and a release must probably establish a good balance between the two. However; working on only incremental changes for a release is fine.
  • Opinionated. Chip-away complexity. Do not expect users to require a PhD in Computer Science to use the app.
    • No duplicate functionality.
    • A concerted effort to not provide too many tunable knobs and settings. To err on the side of easy over simple.
  • Ignore all tenets.
    • Common sense always takes over when tenets get in the way.
  • Must be distributable on the PlayStore, at least some toned down version of it.
    • blokada has the right idea!
    • This unfortunately means on-device blocklists aren't possible; however, Cloudflare Gateway-esque cloud-based per-user blocklists get us the same functionality.
  • Practice what you preach: Be obsessively private and secure.

Backstory

Internet censorship (sometimes ISP-enforced and often times government-enforced), unabated dragnet surveillance (by pretty much every company and app) stirred us upon this path. The three of us university classmates, Mohammed, Murtaza, Santhosh got together in late 2019 in the sleepy town of Coimbatore, India to do something about it. Our main gripe was there were all these wonderful tools that people could use but couldn't, either due to cost or due to inability to grok Computer-specific jargon. A lot has happened since we started and a lot has changed but our focus has always been on Android and its 2B+ unsuspecting users. The current idea is a year old, and has been in the works for about 4 months now, with the pandemic derailing a bit of progress, and a bit of snafu with abandoning our previous version in favour of the current fork, which we aren't proud of yet, but it is a start. All's good now that we've won a grant from the Mozilla Builders MVP program to go ahead and build this thing that we wanted to... do so faster... and not simply sleep our way through the execution. I hope you're excited but not as much as us that you quit your jobs for this like we did.

License

Apache License, Version 2.0.

Comments
  • F-Droid

    F-Droid

    Make app more popular by adding visible link to github and emphasize it at the top of www.bravedns.com page. Without this link www.bravedns.com looks like commercial closed-source project.

    P1 
    opened by woodholly 19
  • Shadowsocks with RethinkDNS

    Shadowsocks with RethinkDNS

    Is it possible to connect with shadowsocks while using RethinkDNS as firewall in any way? I have not found a solution or tutorial on my own for this scenario. Please help ;-(

    opened by MLzen 18
  • Browser is bypassing firewall

    Browser is bypassing firewall

    Android 10. Privacy Browser (frontend for the system webview). In the RethinkDNS firewall I blocked all apps including all system apps. I unchecked all the whitelisted apps so the Rethink DNS firewall says,

    296 apps blocked 0 whitelisted, 0 excluded

    But I am still using the browser to submit this report.

    L050 P0 
    opened by raven9nine 16
  • Ability to manually update local blocklists seemingly gone from v0.5.3i release

    Ability to manually update local blocklists seemingly gone from v0.5.3i release

    The interface changed quite a bit with this new version and so it's possible that I'm missing something, in which case this should probably be treated as a request for improving the documentation or making the UX less confusing.

    Prior to this release, there was a way to force an update of the on-device blocklists. This sometimes failed, which is a bug that I think was fixed. With this release, if this ability exists, I can't find it.

    There was a button to check for updates that I found, and now it says "Update available", but clicking it does nothing. Clicking "Apply" also does nothing.

    Screenshot_20220728-205552_RethinkDNS

    opened by afontenot 14
  • Apps like messenger cannot access the internet unless exluded?

    Apps like messenger cannot access the internet unless exluded?

    Hello,

    I've seen the note under the option for Allow bypass, which seems to mention apps like whatsapp will need it to function properly, but what it fails to explain is why?

    Messenger will connect fine if under dns battery save mode only, will fail in firewall or dns+firewall mode. It will still fail if whitelisted under firewall mode. It will only connect if excluded. Sometimes it connects when allow bypass is on, sometimes it doesn't.

    So it seems to be some part of the firewall thats blocking messenger. Even if all options under universal are disabled, and messenger is disabled in firewalls app list, it will still fail to connect which is confusing.

    As I am using afwall+ donate version at the moment still, afwall will only block apps that i select, which is what rethinkdns should do, not blocking apps that I dont want blocked, currently seems to only be an issue with messenger.

    There are 2 other apps I need excluded as well, but its because of its LAN functionality, which is syncthing and vlc. Syncthing I have configured to route only on lan, never to the internet and vlc only used for devices like chromecast, but when excluding them it bypasses not just firewall but also dns, and in the case of syncthing, if I did decide to re-configure syncthing to sync with devices over the internet, dns qureries wouldn't be encrypted then. Those lan based apps, I am fine having it bypass just firewall though, as its needed. Whitelisting them doesn't work.

    Also, I prefer to have always on vpn and Block connections without vpn enabled to prevent data leaks, and as app will mention, exclude apps and Allow bypass dont work in lock down mode.

    I know that to communicate with lan, lockdown mode needs to be off anyway though, android limitation, but thats my concerns as to adding to the exclude list.

    So far, I can replace AdAway and private dns function with rethinkdns, working on replace afwall with it, for a vpn based method to avoid iptables.

    Anyway to address this?

    Thank you :)

    opened by dhammel 14
  • Allow use of default network DNS

    Allow use of default network DNS

    Hi, As fas as I know, there is currently no option not to use a custom DNS. It would be great to be able to use the default network DNS, as it complements very well the on-device blocklist feature and give users more control over their setup. Thanks for the great app.

    opened by BayLee4 14
  • Android 13 Notification Permission

    Android 13 Notification Permission

    Android 13 (SDK 33) needs apps to declare a new permission: https://developer.android.com/develop/ui/views/notificationsnotification-permission

    Declare: <uses-permission android:name="android.permission.POST_NOTIFICATIONS">

    Request permission if not granted (which isn't to new apps on Android 13).

    Check if notification channel is allowed before sending notifications to it: NotificationManager#areNotificationsEnabled()

    P0 
    opened by ignoramous 13
  • RethinkDNS + TorBot + Nextdns(private dns)

    RethinkDNS + TorBot + Nextdns(private dns)

    Hi guys, first of all, great app much appreciated!

    My problem though, i am running the Rethinkdns app on my Android 11 phone, in combination with the Torbot, and private dns settings in my network options pointing to a nextdns subscription.

    Inet is not working. When opening my Rethinkdns app it says "protected with TOR & private dns" ..all looks good, but there is no inet. Not sure how to troubleshoot this. I've configured Rethink to only use dns and this disabled private dns, and then it works. The only think actually what doesn't work is this specific combination of Rethinkdns + tor + nextdns private dns.

    is there anything i should take into account or to check or some settings i am not seeing? or is this just by design?

    regards,

    Lennart

    opened by evilprime 12
  • Battery life on Android 12

    Battery life on Android 12

    Rethink is routinely 25%+ of my battery usage across all apps since upgrading to Android 12. Right now it's actually 37% since last charge.

    If there's something I should be doing, please advise. 😃

    opened by michaelblyons 12
  • Exclude ntp (udp port 123 from system process)

    Exclude ntp (udp port 123 from system process)

    Please let user or by default Exclude NTP (UDP port 123 from system process) because, if time is not in sync, no TLS connection will never succeed. orbot can't bootstrap. DNS (at least DoH) will fail because HTTPS will fail.

    opened by 4-FLOSS-Free-Libre-Open-Source-Software 12
  • F-Droid build failed

    F-Droid build failed

    e: /builds/linsui/fdroiddata/build/com.celzero.bravedns/app/src/main/java/com/celzero/bravedns/ui/DNSDetailActivity.kt: (33, 7): Redeclaration: DnsDetailActivity
    e: /builds/linsui/fdroiddata/build/com.celzero.bravedns/app/src/main/java/com/celzero/bravedns/ui/DNSListActivity.kt: (33, 7): Redeclaration: DnsListActivity
    e: /builds/linsui/fdroiddata/build/com.celzero.bravedns/app/src/main/java/com/celzero/bravedns/ui/DnsDetailActivity.kt: (33, 7): Redeclaration: DnsDetailActivity
    e: /builds/linsui/fdroiddata/build/com.celzero.bravedns/app/src/main/java/com/celzero/bravedns/ui/DnsListActivity.kt: (33, 7): Redeclaration: DnsListActivity
    

    Could you please take a look? Thanks!

    opened by linsui 10
  • Ruleset for uninstalled apps

    Ruleset for uninstalled apps

    When an app is uninstalled, preserve it rules until deleted by the user?

    Rules cannot assume that the UID would remain the same across reinstalls.

    In fact, even the package name may not remain the same across reinstalls, while app-id can never change: https://developer.android.com/studio/build/configure-app-module#set_the_application_id

    P0 
    opened by ignoramous 1
  • Investigate apps not working when VPN in lockdown

    Investigate apps not working when VPN in lockdown

    A user says,

    I'm running Android 13 on a Pixel 6. I have wifi disabled, and I am only connected to 5G. Enabled Always on doesn't cause any issues, but I do encounter issues when I also enable Block connections without VPN . All apps are not affected, but some that can't load any data are Canary Mail, Snapchat, Cash App, Spotify, and more. Whatsapp is one of the few that does work. The strange thing here is that the network log does not reflect this. It looks like the Rethink log doesn't even know blocked requests were attempted. It is logging some allowed requests from these apps. Another thing I've noticed is that when I enable VPN Lockdown, the issues usually start to occur after a network change or reboot. I'm not set on VPN Lockdown if it's not practical, but I'd like to keep it on if I can find a way to do so.

    It could very well be that these apps have issues with the vpn in lockdown mode themselves.

    opened by ignoramous 0
  • Universal Lockdown + App Lockdown behaviour

    Universal Lockdown + App Lockdown behaviour

    When both universal and app lockdown (for a given app) are set, an app's bypass rule takes precedence (that is, IPs in an app's bypass rules must not be blocked). The current code doesn't do that:

    https://github.com/celzero/rethink-app/blob/402eb46086b29cd44cb8c5d97ec72ff514a857db/app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt#L346-L354

    bug 
    opened by ignoramous 1
Releases(v0.5.3l)
  • v0.5.3l(Dec 6, 2022)

    Polyglottic!

    • Re-support Android 6.
    • All new RDNS+ UI.
    • All new firewall and network engine.
    • New feature: Translations in 15+ languages.
    • New feature: Adaptive icons.
    • New feature: Show domain names in per app network logs.
    • Fix missing notifications on Android 13.
    • Fix misbehaving Orbot DNS integration.
    • Apps screen now accessible in DNS-only mode.
    • Major improvements to built-in Download Manager.
    Source code(tar.gz)
    Source code(zip)
    rethinkdns23.apk(44.02 MB)
  • v0.5.3k(Oct 14, 2022)

    Introducing a more private Rethink resolver, Max. Mark IPv6 as experimental; switch to IPv4 by default. New feature: Backup and restore app settings. New feature: App lockdown mode. New feature: Universal lockdown mode. New feature: Apply firewall rules on port numbers. New feature: Apply app firewall rules in batches. Minor UI refresh. Other memory and crash fixes.

    Source code(tar.gz)
    Source code(zip)
    rethinkdns22.apk(42.46 MB)
  • v0.5.3j(Sep 7, 2022)

  • v0.5.3i(Jul 25, 2022)

    IPv6 support. Per app IP blocklists. New firewall rule: Block port 80 (insecure HTTP) traffic. New firewall rule: Block connections on metered (mobile) network. New feature: Connect to System or Network provided DNS. New feature: Block connections over metered (mobile) and unmetered (wifi) networks. New feature: Per app network report card. New feature: Add IP addresses or IP subnet ranges as firewall rules. UI overhaul for Firewall and DNS screens. All-new network engine.

    Source code(tar.gz)
    Source code(zip)
    rethinkdns20.apk(49.63 MB)
  • v0.5.3h(Nov 18, 2021)

    Minor release fixing a terrible file-bloat.

    Leftover local blocklist files were not deleted which resulted in ever-increasing app size. Worse still, users had no way to delete these except 'clear data'.

    Now, the leftover files, if any, are deleted on every blocklist download run.

    Leftovers are also handled for remote blocklist files.

    Source code(tar.gz)
    Source code(zip)
    rethinkdns19.apk(43.14 MB)
  • v0.5.3g(Sep 21, 2021)

    1. New firewall rule: Block connections not resolved by user-configured DNS endpoint.
    2. New firewall rule: Block newly installed apps by default.
    3. Network Log UI now shows domain names corresponding to IP addresses.
    4. DNS Log UI now shows all IPs received as part of DNS response.
    5. Forward all traffic to port 53 to user-configured DNS endpoint.
    6. Improved search filters for network logs.
    7. Quick action buttons on Home Screen.
    8. A brand new Pause mode which suspends DNS and Firewall for unblocked apps.
    9. Major bug fixes around internet connectivity issues.
    10. Share automatically generated bug reports from the About page.
    11. UI refresh of the Settings page.
    12. Improvements to "Block any app not in use feature"; no longer experimental.
    13. 50 other performance improvements and bug fixes throughout the app.
    Source code(tar.gz)
    Source code(zip)
    rethinkdns18.apk(43.14 MB)
  • v0.5.3e(Apr 15, 2021)

    DNS Logs UI now shows website icons corresponding to DNS queries. These icons are fetched from DuckDuckGo. To enable / disable this see the Settings screen. An edge case during app start-up where all connections were allowed while the firewall rules were being loaded has been fixed. Changes to the way the app recovers from the 'Waiting' state.

    Source code(tar.gz)
    Source code(zip)
    rethinkdns16.apk(38.62 MB)
  • v0.5.3d(Apr 2, 2021)

    Major updates to how the app handles connectivity changes. This fixes issues where devices may have previously lost Internet connectivity with the app switched on. True Black theme on popular demand. Check the Settings -> Appearance. Improvements on themes. Better consistency in the colour scheme. Stop button in the Notification bar.

    Source code(tar.gz)
    Source code(zip)
    rethinkdns15.apk(38.57 MB)
  • v0.5.3c(Mar 17, 2021)

    1. Support for one-click Tor-as-a-Proxy (Orbot) setup.
    2. When the network is unavailable RethinkDNS now reports "bad network connectivity" to the Android OS. This might improve scenario where apps do not recover from poor / flaky networks.
    3. Report bad-network to Android when DNS connections fail and healthy network when they succeed.
    4. OISD.NL (full) is the only default list on RethinkDNS starting this release.
    Source code(tar.gz)
    Source code(zip)
    rethinkdns14.apk(38.69 MB)
  • v0.5.3b(Mar 6, 2021)

  • v0.5.2(Nov 10, 2020)

    30+ new features. Rebrand to RethinkDNS.

    DNS

    • Support for RethinkDNS+ (a configurable DNS resolver with custom blocklists) deployed to 200+ locations world-wide.
    • Support for DNSCrypt v2 with Anonymized Relays.
    • Support to forward DNS requests to other apps like Nebulo or PDNSF.

    Firewall

    • Support for "Always-on VPN" and "Block connections without VPN" (this is enforced by Android and is full-proof in that it blocks all internet traffic that bypasses VPN ensuring nothing escapes the RethinkDNS firewall).
    • Exclude apps from VPN, that is from the RethinkDNS firewall altogether.
    • Whitelist apps from RethinkDNS firewall rules (but not DNS).
    • Block all connections when source app is unknown (this occasionally happens with UDP traffic that the source app cannot be determined at times).
    • Block all UDP traffic except DNS traffic.
    • Block IP addresses apps are connecting to individually from the "Network Log" screen.

    UI

    • DNS Firewall screens see a major UI overhaul.
    • A bottom sheet in "Network Log" now shows some relevant actions (block app, block IP, kill app).
    • A tap on DNS logs entries now shows more information including blocklists.
    • Select and copy app names and IP addresses from both "DNS Logs" screen and "Network Logs".
    • A search bar in all firewall screens.\n\n

    Proxies:

    • Forward TCP connections to any SOCKS5 endpoint.
    • Set a HTTP/S proxy endpoint.
    Source code(tar.gz)
    Source code(zip)
    rethinkdns10.apk(46.72 MB)
  • v0.4.4(Sep 7, 2020)

    Bugs:

    • 'Start' button now shows just fine for Right-to-Left languages, like Arabic and Hebrew.
    • App now doesn't auto-start on phone reboot.
    • A critical stability fix that caused frequent app crashes in the background.
    • Changes in 'block when app not in use' behavior which now works as originally intended.
    • "Always-on VPN" related prompt is shown now when user taps the 'Start' button.
    • A minor fix for 'app won't start' bug in Samsung devices.

    Refactor:

    • Faster loading times for 'Network Monitor'.
    • A textbox now warns users to exercise caution when blocking 'System Apps`.
    Source code(tar.gz)
    Source code(zip)
    bravedns-android-app-release-v0.4.4.apk(43.35 MB)
  • v0.4.2(Aug 25, 2020)

    Bugs:

    1. ANR in ScreenLockService.
    2. Limit crashes when restarting the VPN. 2a. DNS screen: An artificial delay of 1s between DNS changes. 2b. Home screen: As above, changing "app-modes" has an artificial delay 1s to limit crashes in LwIP stack due to rapidly restarting the VPN.
    3. Fixed incorrect median latency calculation with a simpler though brute force approach.
    4. WebView showing the BraveDNS FAQ webpage was lying around cached as a background activity. Destroying it now when user navigates away from it.
    5. ANRs in the home-screen: LiveData powers the View instead of make-shift multi-threaded implementation.
    6. Firewall now correctly works on Android 8+ (previously it worked only on Android 10+).

    Features:

    1. Network monitor: A real-time running log of network activity tagged per-app with details about IP address, port, transport protocol, timestamp, and geo IP location of the server. This log is gathered from the BraveVPNService#block calls made by the outline-go-tun2socks layer on every new TCP or UDP connection.
    2. Firewall screen now correctly handles the scenario where multiple packages can have the same UID. Firewall still functions per-uid (and not per package, though it is uncommon for application packages to share UIDs).
    3. Users can now firewall System apps.
    4. About page: Tells a bit about the project, shows telegram group and github links. Added to the home-screen fragment.

    Refactors:

    1. Firewall screen: A new look firewall screen that is more "correct" in face of any number of updates. LiveData + Room to the rescue.
    2. Various UI related changes (including text copy).
    Source code(tar.gz)
    Source code(zip)
    bravedns-android-app-release-v0.4.2.apk(43.32 MB)
  • 0.3(Aug 15, 2020)

    A stable preview release of BraveDNS android app with critical bug fixes and a couple of features.

    DNS:

    • Added ability for users to key-in a custom DNS endpoint.
    • Blocked dns requests now show a "red" hint against their entry.

    Homescreen:

    • Now shows trackers-blocked count instead of trackers-blocked percentage.

    Firewall:

    • Firewall now correctly blocks traffic on device-lock instead of screen-off.
    • Renamed labels in the Universal Firewall section.
    • A "red" coloured hint against in the categories section to better indicate which categories are blocked.

    Bugs:

    • Fixed an occasional bug that was crashing the app when the underlying VPN connection was restarted in response to screen-on / screen-off events.
    • Fixed ANR in ScreenLockService.
    Source code(tar.gz)
    Source code(zip)
    bravedns-android-app-release-v0.3.apk(43.42 MB)
Owner
Anti-censorship and anti-surveillance tools for Android
null
A simple Android app to demonstrate the use of Hover SDK for M-PESA Send Money while offline. This SDK does not require an internet connection, it automates USSD sessions in the background of an android application.

HoverSDKDemo Hover SDK is an Android SDK that lets mobile developers to add money features to the applications. This SDK does not require an internet

Joel Kanyi 9 Dec 21, 2022
NimTome is a Free and open-source spell tracker application for Dungeons and Dragons

Nimtome: An open source application to manage all your spells in D&D About This project came to life as a homework assignment, but it became a lot bit

null 2 Jan 11, 2022
Water tracker app helps you with daily reminder to drink water. This app is just a trial to test and improve my android development skills.

?? About Me I am a self-thaught developer learning web and android development. This app is just a trial to test and improve my android development sk

Sinan Sonmez (Chaush) 28 Dec 17, 2022
Loop Habit Tracker, a mobile app for creating and maintaining long-term positive habits

Loop is a mobile app that helps you create and maintain good habits, allowing you to achieve your long-term goals. Detailed graphs and statistics show you how your habits improved over time.

Alinson S. Xavier 5.8k Jan 7, 2023
Episodie is a TV show time tracker app with unusual design written in kotlin and clean architecture approach. Get to know how much time you spent watching tv shows.

Episodie Episodie is a TV show time tracker app with unusual design. Get to know how much time you spent watching tv shows. Track easily overall progr

Przemek 126 Dec 7, 2022
Google map location tracker uploading current to realtime database and displaying location information from firebase realtime.

WEEK-8-SQ009-ANDROID LOCATION - GROUP WORK (2) Problem Description Track your partner(s). Implementation 1: You are to build a map application to show

null 0 Mar 16, 2022
Self hosted read and to-read list book tracker

JELU Official documentation Like Jelu or find it useful ? Offer me a coffee ☕ Purpose This app main purpose is to track what you have read, what you a

null 181 Dec 28, 2022
Open Source Magic: The Gathering life tracker and companion app

SpellCounter SpellCounter is a free, open source Magic: The Gathering life and counter tracking app Features 100% free with no ads Supports up to 8 pl

Sean Kenkeremath 3 Jul 27, 2022
Vanilla Music Player for Android (abandoned). Visit https://github.com/vanilla-music/vanilla for an actively developed fork

Translating You can help translate here. If your language isn't on the list, open an issue and I can add it. Building To build you will need: A Java c

Chris Eby 154 Dec 9, 2022
Shows how to build a VPN app for Android using leaf: https://github.com/eycorsican/leaf .

aleaf Shows how to build a VPN app for Android using leaf. Dependencies Rust GCC/clang Make SDK NDK LLVM (Windows host only, see below) Building Linux

null 34 Sep 3, 2021
The implementation of https://dribbble.com/shots/2067564-Replace

FlyRefresh The Android implementation of Replace, designed by Zee Youn. I implement this as a FlyRefresh layout. The content of the layout can be any

吴晶 2.9k Nov 29, 2022
Solving all 25 days of the AOC 2021 event here: https://adventofcode.com

advent-of-code-2021-kotlin Welcome to the Advent of Code1 Kotlin project using the Advent of Code Kotlin Template delivered by JetBrains. In this repo

Mofe Ejegi 1 Dec 17, 2021
Open source Crypto Currency Tracker Android App made fully in Kotlin

CoinBit CoinBit is a beautiful CryptoCurrency app, completely open sourced and 100% in kotlin. It supports following features Track prices of over 300

Pranay Airan 50 Dec 5, 2022
A Simple Expense Tracker App 📱 built to demonstrate the use of modern android architecture component with MVVM Architecture

Expenso ?? A Simple Expense Tracker App ?? built to demonstrate the use of modern android architecture component with MVVM Architecture ?? . Made with

Michel Horacio 1 Dec 28, 2022
The Sleep tracker app for lesson 6 of the Udacity: Developing Android Apps with Kotlin Course

App Architecture-Presistence This is the Sleep tracker app for lesson 6 of the U

null 0 Dec 28, 2021
Time Tracker Application

Time Tracker Application This Application is to serve two purposes. Learning Android Development Tracking Time Technology Language and Libraries Kotli

null 0 Dec 10, 2021
Room : Sleep Quality Tracker app

Room - SleepQualityTracker app This is the toy app for Lesson 6 of the Android App Development in Kotlin course on Udacity. SleepQualityTracker The Sl

Martin 0 Dec 8, 2021
Covid Tracker - Show Details of Corona virus cases of all affected country

Covid_Tracker Based on MVVM Architecture Show Details of Corona virus cases of a

inderjeet yadav 1 Feb 27, 2022
A productivity tracker app published on Google Play

producktivity-tracker A productivity tracker app published on Google Play. Includes Google AdMob and in-app-purchases to disable ads. This project was

null 1 Mar 9, 2022