Class Scheduler is an Android mobile app that allows users to keep track of classes, upcoming exams and mentor contact information.
The architecture behind the mobile application includes room persistence library which is used to set up an SQLite database. The mobile application also contains entities that represent tables in the database. Data access objects are included in the architecture to allow CRUD functionality. There is also a class that extends RoomDatabase, that when called creates an instance of the database. View models update and manage the data for activities. There are adaptors handle repetitive views such as recycler views. The app uses the Android X support library which is a software capability that allows new features to work in older APIs. This will help minimize such software limitations. One limitation of the app is the lack of fragments to allow for flexibility of UI. The app was developed under Android 10(API 29). This app was tested on a Samsung Galaxy S9+ Android 9(API 28) device and on a Nexus 6(API 27) emulator.
What I would do differently if I do this project again is that I would use fragments to set up different screens instead of an activity for each screen. Using fragments would also take away the challenge of passing information between activities since an activity could be reused. I would also display each terms courses inside a recyclerView on the term details screen to make it more obvious that the courses are assigned to that term.
While developing the app, I faced certain challenges. The first and probably the hardest challenge was getting started. All the concepts were new,
and I had to face a learning curve in the beginning. A second challenge I encountered was setting up more than one notification at a time.
If I tried to create two notifications at a time, only the first notification would work. A third challenge would be setting up the Room Database.
I had difficulties connecting the view model to the repository and querying the database from the repository through the data access objects.
It was also a challenge to set up the user entered date to accept only the MM/dd/yyyy format.