YH Logo

WhatsThat

July 2023

Overview

WhatsThat? is messaging platform which allows users to communicate with each other. Users sign up for an account with WhatsThat where they can then search for, add contacts and create chats with individuals or groups of contacts.

This was developed while studying Mobile App Development during university, where I was tasked with interacting with a comprehensive API to build full user, contact, and chat management functionality.

Technology Stack

  • JavaScript

  • React Native

  • Expo

  • Axios

  • RESTful API

Features

  • User Authentication: Secure user sign-up, login, and logout.
  • Contact Management: Add, view, block, and unblock contacts.
  • Chat Management: Create/edit chats, send/edit messages, and manage group members.
  • Search Functionality: Search for users and contacts effieciently with paginated results.
  • Profile Customization: View and update user details.

Wireframing to Development

Before diving into development, I created detailed wireframes in Figma to map out the main user interfaces and interactions. This ensured a solid foundation for the app’s structure and flow.

WhatsThat Wireframing - Navigation Structure & Screens

Having never used Figma before this project, I quickly adapted to the tool, which became essential for designing key screens like the authentication pages, chat view, and user profile.

Seeing the transformation from initial wireframes to the final app highlights how the design evolved and improved over time. This process allowed me to refine the user experience and make thoughtful adjustments with attention to detail.

Registration ScreenContacts ScreenSearch ScreenChat ScreenProfile Screen
Key screens showcasing the seamless UI of the final product.

Technical Details

For this project, I worked with an API server that provided endpoints covering user, contact, and chat management. This setup allowed users to sign up, log in, and handle their profiles while supporting features like searching for other users, managing contacts, and creating chat groups.

I set up API requests for each endpoint and used useState and useEffect hooks to manage state and keep the data flowing smoothly between components, updating dynamically as users interacted with the app.

WhatsThat API Endpoints checklist
WhatsThat API Endpoints

To manage navigation, I used React Native’s tab navigation, which provided an intuitive layout for users to switch between different sections like chat, contacts, and profile. The tab-based structure kept the UI clean and simple to navigate.

Each component was styled with React Native’s StyleSheet where I created dedicated stylesheets and applied them to components, keeping styles modular and easy to maintain.

Challenges & Thought Process

Developing WhatsThat introduced several challenges, especially with API interaction and error handling. One recurring issue was unexpected server and unauthorised errors, especially when interacting with DELETE or PATCH endpoints, like editing a message or unblocking a user.

Server error when trying to edit a message
Server error when trying to edit a message
Unauthorised error when trying to block a user

Initially, these errors weren’t well-documented, so I had to debug by inspecting API responses and tweaking the request headers and body format. Through persistent trial and error, I was able to identify and resolve these issues by adapting the request structure to match API requirements more precisely.

I also resolved issues with Axios after realizing that I had been using the incorrect syntax for some of the request methods, which contributed to the unauthorized errors I was facing.

To see how the app all comes together, explore the complete project on GitHub and delve into the code.

Learnings

Ultimately, this project not only deepened my understanding of React Native and API integration but also highlighted the importance of resilience and thorough testing in app development. These experiences have sharpened my ability to troubleshoot and adapt, making me more confident in tackling complex mobile app features.

My first experience with Figma highlighted the importance of wireframing in designing user-friendly interfaces, helping me visualize app structure and streamline the design process.

Overall, I enjoyed developing this app and would love to explore more Mobile App Development in future.

Get in touch!

Need more details, or interested in working together? Reach out to me at any of my links. I'd be happy to connect!