<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: MrAdex77</title>
    <description>The latest articles on DEV Community by MrAdex77 (@mradex77).</description>
    <link>https://dev.to/mradex77</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F556704%2Fd6491d6a-dcaf-41f9-8dc9-30094461c175.jpg</url>
      <title>DEV Community: MrAdex77</title>
      <link>https://dev.to/mradex77</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mradex77"/>
    <language>en</language>
    <item>
      <title>Building "Where Am I?": A GeoGuessr Alternative for Mobile</title>
      <dc:creator>MrAdex77</dc:creator>
      <pubDate>Wed, 08 Jan 2025 18:34:46 +0000</pubDate>
      <link>https://dev.to/mradex77/building-where-am-i-a-geoguessr-alternative-for-mobile-5gbj</link>
      <guid>https://dev.to/mradex77/building-where-am-i-a-geoguessr-alternative-for-mobile-5gbj</guid>
      <description>&lt;p&gt;Hi Dev Community! 👋&lt;/p&gt;

&lt;p&gt;I’m thrilled to share with you the journey of building &lt;em&gt;Where Am I?&lt;/em&gt;, a mobile app designed as a free alternative to GeoGuessr and CityGuessr. It’s a location-guessing game that immerses players in street walk videos from around the globe. As a solo developer, this project has been a labor of love, and I wanted to give you a behind-the-scenes look at how it all came together from a tech perspective.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;The inspiration for &lt;em&gt;Where Am I?&lt;/em&gt; started during the COVID-19 pandemic. With everyone stuck indoors, I wanted to create a game that offered a sense of exploration and adventure. Initially, the app was a simple prototype with basic features. It gained traction with over &lt;strong&gt;50,000 downloads&lt;/strong&gt; and amazing user feedback. Encouraged by the positive response, I decided to rewrite the app from scratch, making it more robust, feature-rich, and scalable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;p&gt;To bring this project to life, I chose the following technologies:&lt;/p&gt;

&lt;h3&gt;
  
  
  Frontend: React Native
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Where Am I?&lt;/em&gt; is a cross-platform mobile app built with &lt;strong&gt;React Native&lt;/strong&gt;. This allowed me to deliver a seamless experience for both Android and iOS users using a single codebase. The frontend was developed with a combination of &lt;strong&gt;JavaScript&lt;/strong&gt; and &lt;strong&gt;TypeScript&lt;/strong&gt; to ensure type safety and scalability.&lt;/p&gt;

&lt;p&gt;Key libraries and tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Expo&lt;/strong&gt;: Simplified the development process and provided access to native APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React Navigation&lt;/strong&gt;: For smooth navigation between screens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reanimated&lt;/strong&gt;: For fluid animations and transitions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redux&lt;/strong&gt;: To manage the global state, including user progress, leaderboards, and campaign data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Backend: NestJS (Node.js Framework)
&lt;/h3&gt;

&lt;p&gt;The backend is powered by &lt;strong&gt;NestJS&lt;/strong&gt;, a progressive Node.js framework built with &lt;strong&gt;TypeScript&lt;/strong&gt;. NestJS provided a modular structure, making the backend easier to maintain and scale.&lt;/p&gt;

&lt;p&gt;Backend highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RESTful APIs&lt;/strong&gt;: Exposed endpoints for user authentication, leaderboard management, and campaign data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PostgreSQL&lt;/strong&gt;: The relational database for storing user data, scores, and game content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redis&lt;/strong&gt;: For caching frequently accessed data like leaderboards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JWT Authentication&lt;/strong&gt;: Secured user sessions with JSON Web Tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud &amp;amp; Hosting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AWS (Amazon Web Services)&lt;/strong&gt;: Hosted the backend and database for scalability and reliability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare&lt;/strong&gt;: Handled CDN and DDoS protection to ensure fast and secure gameplay.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Immersive Gameplay&lt;/strong&gt;: Watch high-quality street walk videos and guess the location.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Campaigns&lt;/strong&gt;: Explore themed challenges like "Southern Europe's Sunlit Secrets" or "Unlock the UK's Royal Secrets."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiplayer Modes&lt;/strong&gt;: Compete with friends in duels or join global tournaments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leaderboards&lt;/strong&gt;: Track your progress and aim to become the "King/Queen of the World."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collectibles&lt;/strong&gt;: Earn badges and unlock monuments as you play.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Challenges &amp;amp; Lessons Learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cross-Platform Compatibility&lt;/strong&gt;: React Native made cross-platform development easier, but handling platform-specific quirks required extra attention.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video Optimization&lt;/strong&gt;: Ensuring smooth playback of street walk videos on both high-end and low-end devices was challenging. I used adaptive bitrate streaming to address this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: With an ever-growing user base, designing a backend that scales while maintaining fast response times was crucial. Redis caching was a game-changer here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Localization&lt;/strong&gt;: Adding support for languages like Spanish (ES) and Portuguese (PT) helped make the app accessible to a broader audience.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Why "Where Am I?" Stands Out
&lt;/h2&gt;

&lt;p&gt;While GeoGuessr and CityGuessr are fantastic games, &lt;em&gt;Where Am I?&lt;/em&gt; offers a unique twist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Completely Free&lt;/strong&gt;: No paywalls or subscriptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile-First&lt;/strong&gt;: Designed specifically for Android and iOS devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Immersive Campaigns&lt;/strong&gt;: Themed challenges that take players on curated adventures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community-Centric&lt;/strong&gt;: Player feedback drives new updates and features.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;The journey doesn’t stop here! I’m actively working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Custom Multiplayer Modes&lt;/strong&gt;: Letting players create their own rules and challenges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New Campaigns&lt;/strong&gt;: Expanding the game with more countries and themes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Augmented Reality (AR)&lt;/strong&gt;: Exploring ways to integrate AR for an even more immersive experience.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try It Out!
&lt;/h2&gt;

&lt;p&gt;If you’re looking for a fun, educational, and &lt;a href="https://whereamigame.app/" rel="noopener noreferrer"&gt;free GeoGuessr alternative&lt;/a&gt;, give &lt;em&gt;Where Am I?&lt;/em&gt; a try. I’d love to hear your feedback and ideas for future updates.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://whereamigame.app" rel="noopener noreferrer"&gt;whereamigame.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.adex77.WhereAmI" rel="noopener noreferrer"&gt;Download on Android&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;App Store: &lt;a href="https://apps.apple.com/us/app/where-am-i-explore-the-world/id6657987209" rel="noopener noreferrer"&gt;Download on iOS&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for reading! If you have any questions about the tech stack or the development process, feel free to drop them in the comments below. 🙌&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>nestjs</category>
      <category>mobile</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
