yearbook logo

Yearbook Logo

What is Yearbook?

Yearbook is a contacts app that caters to people who have an easier time remembering someone by face than by name. Yearbook places the emphasis on the contact’s image rather than his name. This way, you can glance at the faces in your app and know at a glance who you need to contact. No more guessing “Is this the Joe I’m supposed to call? I remember what he looks like, but I’m not sure what his last name was…”

Yearbook is for people who can visualize the face of the person they just met or need to call, but can’t remember their name as easily. Yearbook is geared towards people with a medium to large list of contacts which can make memorizing names difficult and time-consuming.

The goal of Yearbook is to help people connect with their contacts more easily because they now have a clear image of who they are contacting. Your default contacts app on Android has a small icon that displays the contact’s profile image next to his name, but this icon is so small recognizing the person depicted in it is a difficult task involving lots of squinting. Yearbook displays the contact images prominently. This can also help jog the user’s memory and prompt communication with a contact. For example, someone using the app might pause on a picture and think “I remember him! He wore that awesome cowboy hat to the company Halloween party. I should ask him how he’s doing.”

Tech Stack:

Java | Java IO | XML | Firebase (Auth, Firestore, & Storage) | GitHub | Adobe XD

Project Pitch:

Show Project Pitch Transcript

[Intro Screen]

Have you ever met someone, had a wonderful conversation and developed a quick connection, exchanged contact information, and then promptly forgot their name? You have their phone number or email address and you want to give them a call and let them know you enjoyed meeting them and talking to them, but what was their name again? How do you find a contact in your phone when you don’t recall their name? Scroll through all your contacts until a name pops out at you and send that person an email with your fingers crossed you got it right?

This is where Yearbook comes in. Yearbook is a contacts app that puts the focus on the profile image, not the name.

[Screen with Image of Profile Pictures]

Lots of people have an easier time remembering faces than names. Most contacts apps display profile images as tiny icons next to each contact’s name if they display a profile image icon at all. Yearbook displays both the image and the name with a focus on the image so that you can find who you’re looking for at a glance. No more squinting at tiny icons or racking your brain to remember if that’s the right Joe.

[Screen with Image of Smiling Person]

Looking at a face, even a picture of one creates a stronger connection to a person. It can also trigger memories of interactions you’ve had with that person. Yearbook’s focus on contact images helps you feel more connected to your contacts and can stir up fond memories you have of some of the people in your contacts list which may prompt a phone call or email to check in with them. This increase in communication can strengthen your connections from acquaintances whose number or email you have to friends who help you find a new job or meet people with similar interests.

[End Screen]

Now that you know some of the benefits of using Yearbook, why wait to try it out? Goodbye default contact apps and tiny profile icons, hello Yearbook.

Thank you.

Milestone 1:

Show Milestone 1 Transcript

[Intro Screen]

This Sunday marks the end of Milestone 1 for Yearbook.

[Milestone Objectives]

I’ve met all the objectives for Milestone 1. Yearbook has a contact list screen, details screen, and add/edit screen. Users can create and edit contacts, share contact details, and create organizations to add and remove from a contact.

[Time Logs]

This past week, I spent most of my time coding the app and refactoring my code to make it more efficient. I also spent a lot time researching various problems and solutions and testing them on the emulator. I spent the beginning of the week working on the prototype in Adobe XD and the rest of the week developing the app in Android Studio.

[App Demo]

At the moment, the user starts in the contact list screen. Here they can click on a contact to view details or add a contact.

A first name is all that is required to create a new contact.

I can view the details of my new contact from the details screen. I can share the contact details or edit the contact details.

I can now click the image to take a new contact image or I can add more contact information. I can also add an organization.

I can create a new organization or add an existing organization.

I can add multiple organizations or remove an organization by long-pressing it.

I can save the contact and click on it again to view the changes. I can also delete the contact from the edit screen.

Thank you!

[Thank you]

Milestone 2:

Show Milestone 2 Transcript

[Intro Screen]

This Sunday marks the end of Milestone 2 for Yearbook.

[Milestone Objectives]

I’ve met all of the objectives for Milestone 2. Yearbook now has a settings screen where you can manage the sort and filter by preferences and a search bar with search functionality on the contact list screen.

[Time Logs]

This past week, I spent most of my time coding the app and refactoring my code and a lot of time researching ways to implement the search functionality. I also spent a bit of time researching various problems and solutions and testing them on the emulator. I spent the beginning of the week working on the sort and filter by functionality, creating the settings screen, and tying it into the rest of the app. The end of the week was spent researching ways to implement searching and then implementing that functionality.

[App Demo]

I already showed the create and edit functionality of the app in the previous milestone’s app demo and nothing has changed there so I won’t show that part again. Viewing a contact’s details has also remained the same. The user still starts off in the contact list screen, but not there is a search button and the settings button has been implemented.

Clicking the settings button takes the user to the settings screen where they can choose to sort contacts by either their first or last name with the default being the first name. If I click the last name option then save or back I would see that the contacts are now sorted by their last name and their full name is displayed with the last name first.

Back in the settings screen, I can also choose to filter the contacts based on organization. The default filter is none which displays all of the contacts, but watch what happens if I click on WWE and go back to the contact list.

You can see that only Drew McIntyre who has WWE listed as one of his organizations is shown.

Let me reset the filter to none so I can properly demo the search feature.

Clicking the search icon opens up the search bar. At the moment, you do have to click the icon again, but that will be fixed by the end of the next milestone. I can type in anything and if a contact has what I typed as part of their name or part of one of their organizations, they will be displayed.

I can click on one of the search results, or in this case, the only search result or click clear search results to view all of the contacts once again.

Thank you!

[Thank you]


Show Postmortem Transcript

This Sunday marks the end of the course, and the end of Milestone 3, the last milestone for Yearbook.


I met all of the Milestone 3 objectives this week. I added a login screen and multiple login functionality using Firebase Authentication. I refactored some of the other code to ensure the login screen integrated well with the rest of the app.

[Time Logs]

I spent most of my time this week adding login functionality, refactoring code, and fixing minor issues in Android Studio. I also spent a lot of time researching how to implement login functionality and problems and solutions. I spent a bit of time testing the app as well.


I tested the app on a Pixel 3a emulator and a physical device Pixel 3a. The experiences were pretty much the same, although the app did run a bit faster on the physical device.

I didn’t conduct any user testing.

[Time Management]

I believe I managed my time very well this month. I followed pretty much the same pattern of time management each week. At the beginning of the week I did most of the research for new features, and began coding them in. I gave myself a small break in the middle of the week, and then finished implementing the required features, testing, and making any fixes needed at the end of the week.


I definitely accomplished everything I wanted to accomplish this month. I learned about how SearchViews and implemented it, first in the action bar and then later refactored into the layout element. I learned about Firebase Authentication and implemented a login screen with multiple login options. I also learned more about Firebase Firestore and Firebase Storage and implemented both in the app. However, my greatest accomplishment this month is Yearbook itself. The final product is everything I had envisioned at the beginning of the month and the knowledge gained throughout the month makes the completion of Yearbook worth even more.

[Lessons Learned]

I learned a lot this month. I learned that SearchView makes adding search functionality fairly easy, that using Firebase Authentication UI simplifies adding login capabilities exponentially while still giving you a good amount of control, and that one of the differences between Firebase Firestore and Firebase Storage is that Firestore cannot/should not be used to store media files, while Firebase Storage is a great place to store media files. Just to name a few of the things I’ve learned this month.

[Thank you]

I’ve greatly enjoyed more journey creating Yearbook from idea to final product. I’m looking forward to the next month of learning and creating.

Thank you!

Full App Demo:

Show Full App Demo Transcript

[Login Screen]

The first screen of Yearbook upon initial launch is the login screen. Here, users have the option of logging in with their email, their phone, or their Google account. I’m going to use a test number to login.

[Contact List Screen]

The contact list screen is the first screen users see once they’ve logged in. It displays a grid of all that user’s contacts. As you can see, the contact image is the prominent element of each contact followed by a label of their name. On this screen, I can click on any contact to view it’s details or search for a contact by name or organization.

Clearing the search bar resets the results.

[Click Settings]

In the settings screen, I can change the sort order of the contacts to sort them by either their first or last name. I can also filter the contacts by organization, or I can sign out.

[Contact List Screen]

Now that I am filtering the contacts, you can see that there is a label at the top of the screen telling the user what organization the contacts are being filtered by.

[Click Contact]

In the contact details screen, I can view all the details of the contact, share the contact information, or edit the contact.

[Edit Contact]

In the edit contact screen, I can edit any of the contact’s details from the profile image, to the organizations. I can easily add an organization or create a new one. I can also remove an organization.

[Contact List Screen]

Back in the contact list screen, I can click the add contact button to add a contact.

[Add Contact Screen]

The only thing required to save a new contact is a first name.

[Contact List Screen]

I can also delete a contact by going to the details screen,

[Details Screen]

Clicking edit,

[Edit Screen]

And then clicking delete. Users are then presented with an alert to ensure they really want to delete the contact. Clicking delete again will delete the contact and return the user to the contact list screen.

[Contact List Screen]

Once the user is done, they can close the app which will leave them signed in for next time, or they can go to settings

[Settings Screen]

And click sign out to sign them out.

Thank you.