Skip to content
Yinliang Chen
All notes

ROAMY Trip: Crafting a Cross-Platform Social Travel Experience

May 16, 2025
project lapse time: 2025-01-01 - 2025-05-16 ROAMY Trip is a social reviews and travel planning platform envisioned as "the 'Beli' for hotels", designed to run on both iOS and Android from a single codebase. As the lead developer on this project, my focus has been on leveraging React Native and Expo to build a feature-rich, performant, and user-friendly application. Our architectural decisions deliberately mirror native iOS paradigms to ensure a high-quality user experience. The platform aims to revolutionize how users discover, plan, and share their travel experiences. From comparison-based hotel rankings to social interactions and detailed trip planning, ROAMY Trip is being built to be an indispensable travel companion.
ROAMY App Screenshot - List View
ROAMY App Screenshot - Map View
ROAMY Trip is more than just a hotel booking app. Its core functionalities include:
  • Comparison-Based Ranking: A unique system for ranking hotels worldwide.
  • Travel Log: Users can collect a "book" of their past hotel stays and record their experiences.
  • Social Connectivity: See where friends are staying and share your own adventures.
  • Trip Planning: Create detailed itineraries, including hotels and daily remarks.
The Minimum Viable Product (MVP) successfully delivered key features such as user authentication, map-based search functionality, and a real-time activity feed. We adopted a resilient three-tier stack to build ROAMY Trip:
  • Frontend (Mobile): React Native with the Expo framework, utilizing TypeScript for type safety and Axios for handling API requests.
  • Backend (Server): Node.js with the Express.js framework, responsible for the core business logic.
  • Database: PostgreSQL, with Prisma ORM facilitating database operations.
  • Authentication: JWT (JSON Web Tokens) are used for securing user sessions.
  • API & Integration: A RESTful API architecture is in place, integrated with the Google Places API for location data. Swagger is used for API documentation and testing.
  • Development & Project Management: Tools like Nodemon for server auto-reloading, Winston for logging, Jest for testing, Git for version control, and Linear for project management have been integral to our workflow.
Building ROAMY Trip has been a journey of continuous learning and iterative improvement. Here are some key highlights: User experience is paramount, and app performance is a huge part of that. We've implemented several optimizations:
  • An AsyncStorage-backed "like" cache to provide instant feedback.
  • A lazy-write workflow on the "Saved Trips" screen that batches network I/O operations.
  • FlatList render tuning for smoother scrolling in long lists.
  • Image compression and lazy-loading to reduce initial load times and data usage.
One of the recent major updates focused on bolstering social interaction within the app by implementing a comprehensive comments feature, both on the frontend and backend. This includes:
  • Support for replies to comments and nested replies, with expand/collapse functionality for readability.
  • An "@" parser in comment and reply text, laying the groundwork for user profile mentions and navigation.
  • Upvote capabilities for both comments and replies.
  • A long-press gesture on comments/replies that reveals a context menu with options to copy, delete, or report content (the report function is currently a placeholder for future implementation).
  • Smooth animations for comment and reply deletions.
Continuous refactoring and bug fixing are key to a healthy codebase:
  • Like Functionality: Resolved a critical bug affecting the "like" functionality on post detail and feed screens, coupled with improved error handling.
  • Authentication Checks: Implemented stricter authentication checks for various user actions to ensure data integrity and security.
  • API Refactoring: API calls on the post detail screen were refactored for better clarity, consistency, and maintainability.
  • User Profile Data: Restructured user profile data handling to establish a more robust connection between the frontend and backend, and removed a deprecated user service file for cleaner code.
Every project has its hurdles. For ROAMY Trip, these included:
  • React Native Learning Curve: The development team had limited prior experience with client-side coding, particularly React Native, requiring a steep learning curve.
  • Ranking Algorithm Complexity: Replicating a sophisticated comparison-based ranking algorithm proved challenging; we initially adopted a lazy evaluation approach.
  • API Selection: Choosing the most suitable API for comprehensive and accurate hotel data was a significant decision point, with options like TripAdvisor, Expedia, and Google Places being considered.
  • ORM and Database Quirks: We encountered some inconsistencies between the Prisma ORM and PostgreSQL, particularly with auto-incrementing indexes.
ROAMY Trip is an evolving platform, and we're excited about its future. The focus remains on enhancing user experience, adding valuable features, and ensuring robust performance. As the team mentioned in our internal presentations, we hope you'll "support us when Roamy reaches AppStore"! We are committed to addressing reviewer feedback, particularly concerning error handling, the new authentication checks, user interaction enhancements, API clarity, and the updated user profile data handling.
On this page