What is Notifilter?
Notifilter is my senior project for my computer science undergrad. The app allows users to create filters that are activated by tagging calendar events with the filter's name. I'm currently working on this, hoping to finish it by graduation in May.
Notifications can be very distracting, and Android's built-in Do-Not-Disturb system requires a completely separate scheduling workflow from the built-in calendar. This makes it extremely tedious to set up DnD schedules to match calendar events and means updating one won't update the other.
Pulling the scheduling process into the calendar app would simultaneously make the user's workflow much easier and reduce the coding I would need to do. I needed a system to tag calendar events with notification filters, triggering the filter when the event starts. I decided to go with a #[filter name] system to be easily understood by the user.
This was my initial vision for the app, I really wanted it to have a unique style to it and focus on one-handed use. Sadly, time is limited (one semester, with all my other classes, my job, and an internship) so I had to pare it down quite a bit. I'm building this app in Flutter, and this design would have required a ton of custom components I don't have time to build right now.
This was an initial plan-b design. I merged some of the unique UI elements with Material Design standards. This design would still require a lot of custom widgets I don't have time for, so it needed to be revisited.
I moved the notifications to the main screen, reducing the number of screens I'd have to code. I also switched over to the default Material widgets Flutter offers.
This is the design I ended with. As I got more comfortable with Dart, I realized custom widgets weren't as much extra work as I thought! Some things still had to be tweaked in Android Studio, but I could go with my original vision for the app's unique styling.
These are screenshots of compiled code from where I left off (running on my Galaxy Fold 2, hence the funky aspect ratio). I was able to get the UI, filter editor, and backend SQL databases (for filters, notifications, apps, etc.) working. Right at the end, I ran into problems with the available notification listener libraries for Flutter. Getting my app across the finish line would mean reverse-engineering the popular plugins to pull more info from the system, and I didn't have time to learn how to write my own Flutter plugin. Soon, I had to start my summer job at Walmart to save money for the move out to Seattle! I learned so much with this project, hopefully I get back around to it someday!