Since I haven’t been working on my game project lately I decided to start writing about the project I am currently working on. This is an extension of a school project in which we were tasked with creating an Android application. Since this course is now finished I’ve decided to continue working on this project as a hobby.
It is a pretty simple shopping or todo list app that I’ve done, but with some neat twists. One core functionality of the app is the ability to share lists with other people, which was something that I thought would provide me with an architectural challenge. To implement the sharing functionality I’ve used Amazon Web Services’ s different services as a backend. I’m currently using Cognito User Pools and Cognito Federated Identities for registering new accounts, handling users and authourizing requests from the client to AWS resources. To store the shared lists and other data I’m using Amazon DynamoDB which is NoSQL database service, which provides the app with fast access to remote data. The app also makes use of a local storage component in the form of an SQLite database, which enables the ability to use the app when offline.
Above is two screenshots of the app’s main activities. From the left is the main overview activity where the app starts from, displaying all your current lists and to the right is a more detailed view of a chosen list where the user can delete, change or check of items.
Right now the app offers the functionality as I originally aspired to have, but during the development it became apparent to me that I wanted to continue to improve on my project. Some things that I have identified as missing functionality or areas of improvement are:
- Implement a “invite” system, where a user sends an invite (in app or email) to another user, prompting to share a list
- Right now anyone can add lists to share with anyone
- Work on animations between activity switching in order to get a nice and logical feel to the application flow
- Right now I’m only using default “swipe” animations, which works better in some cases than others.
- Errorhandling when communicating with AWS
- Right now alot of assumptions are being made about the state of the app when fetching data from AWS
- Improving code readability
- Try to implement more Java 8 features such as lambda and stream to minimize nested if statements and loops where possible.
These are just some improvements that I can think of right now, but there are always popping up new thoughts of things to get better at. Next post I will probably talk a little about code readability and how I have improved this in the app from day 1.