Week Five

Monday (25/02/2018)
Designing the screens using Adobe XD.

On Monday I started designing the screens using Adobe XD, I had already used Adobe XD for my Mobile Development with Android assignment, so I was familar with how it worked. I decided to create two separate files one for the library and employees and one for the users, this would allow me to get feedback for each of these separately.

When designing, the screens, I also used the colour palette I had created on Thursday so that I could get a feel for the different colours and how it would look. I also included the logo on the top of the main navigation bar. Although, I was unsure whether this should  be the title of the page, since for apps like of Goodreads it was just the title.

I was able to design most pages, but some pages would have sub-pages of the same content, in this instance it seemed redundant to create all the pages. And, I thought that too many pages would be overwhelming for the user evaluation. Therefore, for pages where there is the same content I only included the one screen design.

I later remembered that for the library employees I would need to ensure that it was tablet friendly, so I started creating the screen designs for tablet. Most the pages would look the same, and the main goal was that it would still be usable in tablet mode.

Tuesday (26/02/2018)
User Evaluation.

On Tuesday I performed some user evaluation on the user screens. My first task was to think of some evaluation questions that could be asked. I created a Google Forms document which contained three sections:

  • The first section would ask the user how they would expect to perform those actions. For this questions the user wouldn’t see the screen designs. These answers would be useful to see what people’s expections are when using the app.
  • The second section would show the screen designs to the user and would ask the users to perform certain actions. This would ensure that it was clear how to navigate through the app.
  • The final section would ask design questions to the user. E.g. do you like the colour scheme? Do you think the icons are suitable for the actions?

I messaged some of my friends, some of which study computer science and some who aren’t and asked for feedback. I wasn’t able to get feedback instantly, however, I decided that I would work on the functionality of the app first and then focus more on the design. Although, when I start  getting feedback, the feedback was generally consistent, and the biggest change that would be implemented was to have a ‘favourites’ tab in the bottom navigation. This page would show you your favourite genres, and would allow you to change them. As, many people commented that you wouldn’t expect to do it in the burger menu.

I also did this for the library screens. However, instead of asking my friends, I asked people who are the same age as library employees and aren’t technically proficient.

Wednesday (27/02/2018)

On Wednesday, whilst I was waiting for feedback I started working on database diagrams, I used draw.io to create a diagram, which illustrated the different tables, and the type of relationships. These were the tables I would implement when first designing the system, however, these may be subject to change later on.

  • Books: this would store information about books such as BookId, title, author, string, description. There would also be two foreign keys one for the current library and one for the origin library.
  • User: this would store information about user, such as UserId, first name, last name, email address, password, and library card number. This would also define libraryID as a foreign key.
  • Library: this would store information about the library, such as the ID and the name.
  • Loans: This would store information about the loans, e.g. Loan Id, start date, and end date. This would also contain foreign keys for BookId and UserId.
  • Review: This would store information about the review, e.g. ReviewId, rating, review, status and reason for rejection. I would also have foreign keys for BookId and UserId.

I also defined the relationships between the classes.

  • User- Review: One-to-many relationship (one user can have many reviews).
  • User- Loans: One-to-many relationship (one user can have many reviews).
  • Library- User: One-to-many relationship (one library can have many users).
  • Library- Book: Many-to-many (many libraries can have many books).
  • Book- Loans: Many-to-many (many books can have many loans).
  • Book- Review: One-to-many (one book can have many reviews).

I also started working on designing the database using DB Browser, DB Browser is a SQLite browser and I found a tutorial on how to implement a SQLite into a Xamarin project so I decided that this would be the simplistic way to include the database. I also created some sample data for the libraries, so, I could test that it was getting data correctly.

One problem I had when using DB browser was that there was no date data type. However you can use text for ISO8601 strings, REAL for Julian day numbers and Integer for Unix time [1].

Thursday (28/02/2018)
Creating the database and using it.

On Thursday, I continued following this tutorial which outlined creating a Xamarin application with existing SQLite database. I had already created the tables using DB browser. For this I would need several nuget packages such as sql-net-pcl. Whilst following the tutorial, I installed two other packages: sqlite.net.core and sqllite.net.platform.xamarinandroid. However, sqlite.net.core didn’t work in the shared project so I decided to modify my code to work without that nuget package.

Whilst working on this, I also encounted several instances where it would say ‘file is not a database’. This, would generally occur when I updated my database. Unfortunately there seemed little help on the Internet. I found that I was able to fix it by deleting the app and rebuilding the project. However, this fix didn’t work later on when I realised that it was because one of my views was broken.

I was able to get this tutorial working, and when my application ran I was able to perform a list of queries e.g. get a list of libraries and return data. I then looked and the code and thought about other ways in which it could work, and changed the code to better suit it’s purpose.

Managers.

I then also created managers for the different tables. The tutorial I followed was quite simplistic and created a class in which you’d call the stored procedures. However, I didn’t want this to be all in one class, so I created separate manager classes for each table. One, problem of this was that it generated duplicated code, so I decided that I would try to optimize the code later down the line.

Models.

Whilst following the tutorial I created a model for the library. However, I also created models for the rest of my tables. It was also important to ensure that the attributes in the model matched what was in the database.

Additionally, I also separated the views of my project into a views folder. However, it turned out that this was what was causing the ‘file is not a database error’, so I changed it back for the time-being until I could think of a work-around to that problem.

Friday (01/03/2018)
Login Page.

On Friday I started looking on the screen designs. The first page I created was the splash screen, however this page would link to the login page which would be the first page I would develop. Whilst creating this page I used Xamarin’s NavigationPage which would allow a back button to appear on the second/ third page. This back button would allow the user’s to go back one page, which was something I wanted to implement when creating my app to make it easy to navigate through the app.

I used the tutorials I found in the first week, to create the navigation. When creating the page I followed the screen designs and was able to implement a page similar to the designs. I also, created the ‘create an account’ page and the ‘forgotten password page’. However, for the time-being these pages were empty.

 

Leave a comment