NomadHer

Mobile appplication for women traveling alone

Client

NomadHer

Work type

Head of tech

Dates

April 2022 - November 2023

Technical stack

React Native

Redux

GCP

Firebase

Typescript

Firestore

ElasticSearch

React

Nest.JS

NomadHer is the first mobile application designed for solo women travelers. As the Head of Tech, I managed the entire application independently, ensuring the platform's scalability. Growing the user base from 500 to over 200,000 was an incredible experience.

Challenge

I joined NomadHer shortly after their founding engineer left the company. The team urgently needed an engineer to maintain and continue the development of the application. Taking on this role alone, without any documentation, for an already released application with a small but growing user base was a challenging task. My primary objectives were to continue developing the application, refactor the codebase, resolve security issues, establish a proper CI pipeline, and manage DevOps to scale the system as the community rapidly grew.

Work

As Head of Tech at NomadHer, I single-handedly scaled the app from 500 to 200,000+ users, successfully managing the complexities of a rapidly growing social network. I led all aspects of development, from implementing new React Native mobile features with Firebase to migrating the backend to Nest.js, while adopting TDD and CI/CD workflows. Additionally, I refactored GCP environments, integrated Stripe and ElasticSearch, and redesigned the NoSQL database architecture. My primary mission was to continue mobile application development. Every two weeks, I released a new version with new features and bug fixes. Since the codebase lacked unit tests, I implemented a comprehensive unit testing system. Releasing the application became increasingly challenging because it communicated directly with Firebase via the mobile SDK. To address this, my second primary objective was to build a robust backend with Nest.js to properly manage versioning and shift as much business logic as possible to the server side. The backend was developed using a TDD approach and Clean Architecture principles. As a result, it was deployed to production within two months, achieving nearly 90% code coverage. The main database, Firestore, contained highly denormalized data. One of my key tasks was to refactor the schema, normalize critical frequently-changing data, and implement a proper backup system. Since Firestore lacked full-text search capabilities, I integrated ElasticSearch as a secondary database, enabling new features for users and providing the admin team with an efficient way to monitor KPIs. In addition to these tasks, I developed new features, including: Travel Buddy: This feature allowed users to find and connect with other solo travelers nearby, enabling them to communicate and meet up. ElasticSearch facilitated an efficient solution for users. Travel Camp: The company organized global trips to bring the community together for activities. I implemented a comprehensive ticketing system using GCP Task Scheduler and Stripe. Since spots were limited, I integrated a timer system giving users 10 minutes to complete their payments. Beyond these features, I also: - Refactored the onboarding system. - Enhanced the identity verification system, requiring proof of identity. - Created an admin dashboard for application management. - Reworked the feed feature, integrating ElasticSearch. - Sanitized and optimized the data. Through these efforts, I significantly enhanced the app's scalability, functionality, and user experience.

Result and impact

  • The application grew from 500 users to over 200,000!

  • The new backend was deployed to production seamlessly.

  • Achieved approximately 90% code coverage.

  • Implemented a new search system using ElasticSearch.

  • Developed a ticketing system, providing the company with a new source of revenue.

  • Introduced the widely-used Travel Buddy feature.

  • Created a comprehensive admin dashboard, enabling the admin team to effectively manage the application.

  • Established a CI/CD pipeline to assist the development team with test SDKs and automated releases.

  • Implemented a versioning system for both the mobile app and the backend.

  • Fully sanitized and secured the database, with an automated backup system in place.

Have a Project ?

Let's discuss together!

malt profile pagelinkedin profile pagegithub profile page