purdue-acm-sigapp / boilerfaves Goto Github PK
View Code? Open in Web Editor NEWAn android app that sends you a notifications when food you like is available in the Purdue dining courts.
An android app that sends you a notifications when food you like is available in the Purdue dining courts.
Someone told me notifications stopped sending after they'd been using the app for a while. Could be an issue with the boot receiver or alarms?
We had an issue with the app crashing after Purdue updated the API. We should add error checking for this to prevent awful user experience like we had. We didn't even know the issue existed until someone reported it.
java.lang.RuntimeException:
at android.os.AsyncTask$3.done (AsyncTask.java:325)
at java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:354)
at java.util.concurrent.FutureTask.setException (FutureTask.java:223)
at java.util.concurrent.FutureTask.run (FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:243)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:607)
at java.lang.Thread.run (Thread.java:761)
Caused by: java.lang.NullPointerException:
at com.lshan.boilerfaves.Models.DiningCourtMenu.<init> (DiningCourtMenu.java:26)
at com.lshan.boilerfaves.Networking.MenuRetrievalTask.doInBackground (MenuRetrievalTask.java:100)
at com.lshan.boilerfaves.Networking.MenuRetrievalTask.doInBackground (MenuRetrievalTask.java:34)
at android.os.AsyncTask$2.call (AsyncTask.java:305)
at java.util.concurrent.FutureTask.run (FutureTask.java:237)
Make an activity that allows users to choose what time notifications for breakfast, lunch, and dinner are sent
Show an error when the user isn't connected to the internet
I want to clean things up so we can remember how we did everything next semester:
-Add documentation (variables, methods, classes)
-Make sure things are well named
-Refactor MenuRetrieval task and MainActivity (they are currently messy)
The app said that a food was available during a meal that the dining court wasn't open for. Maybe the faves aren't getting checked if no menu is returned?
We should change the notification activity to be a general app preferences activity that we can add more settings to later if need be.
-Switch to Android Preference stuff for the notification activity UI and implementation
-Add a "provide feedback or report a bug" button (be sure to report device specifications)
-Add an "about us" text blurb at the bottom of the page with a link to the sigapp website and this github
Make some way for users to tell
Could be as simple as a toast
Google play console is telling us our app crashes as a result of this bug:
Null pointer exception
at com.lshan.boilerfaves.Networking.MenuRetrievalTask.onPostExecute (MenuRetrievalTask.java:237)
at com.lshan.boilerfaves.Networking.MenuRetrievalTask.onPostExecute (MenuRetrievalTask.java:51)
Make a server that compiles a list of all of the foods the dining courts serve.
Make a service that runs in the background to schedule api calls and notifications on a daily basis
If a notification is too long it gets elipsized and you can't tap the notification to see the rest of the text. We should change it so the notification can be expanded.
After opening the select food activity, the progress bar was displayed for a few seconds before the app crashed. Not sure what caused this and was unable to replicate
Let the user filter their faves by dining court and meal:
-Add a collapsible area at the top of the main activity with filter buttons
-Make it clear when a filter is applied
-Add a "clear filters" button
-Maybe add an option to automatically filter by meal time during the day (would go in preferences activity)
Add Google analytics to the app so we can keep track of data like which foods are favorited the most
On the select food activity, have the search bar be expanded when the user enters the activity
Confirm that notifications are working for KitKat (probably they aren't)
Modify the main card adapter so unavailable foods are sent to the bottom of the list on the main page
Create a launcher icon for the app and set a matching color scheme (for things like the toolbar)
Either:
Add a filter button that only shows available faves OR
Put available faves at the top of the faves list
Leaning towards the filter button
Make a nicer launcher icon for older phones that doesn't have a white border around the edges
The app crashed when I opened it after deleting its storage
Add a loading bar on the main page and the select food page while the api call is running
-Get rid of the cards (or make them not look like cards) on the select food activity. The food items should just be inside a RecyclerView.
-A check should still appear when a food is clicked
-Switch to a SortedList in the adapter
Make the list of foods users can select searchable
Haven't been able to reproduce this myself, but a friend claims that the lunch notification was sent even when she had the notification turned off.
When you see that your faves are available, sometimes you want to check the rest of the food that a dining court has. It would be nice if you could see all the menus within BoilerFaves. We could make our own UI for displaying the data, or we could use a WebView to show the dining website (probably should start with the later since their website is decent)
Add Picasso for loading images
Make the notification go away when it is clicked
Make the select food recyclerview automatically scroll to the top when the user starts typing in the search field on the select food page
Add notification channels for breakfast, lunch, and dinner notifications. Make sure to delete the old channel
Center (vertically) the meal names on the main card with the dining court icons to their right
Let a user see when their faves will be available in the future (probably up to two weeks). This is already something the Purdue dining app does... is there an api for it somewhere/a way we can copy their data? If not, it may be a good idea to have our server compile schedules for each food. This would take the stress of searching through two weeks of menus off the client. The information could be displayed when the user taps a food card on the main activity (the card expands) and shown by default when the food is not currently available.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.