Marco

Marco iOS App

This project is a location-based iOS application that enables users to discover and interact with geospatial content through an interactive map interface. Users can create accounts, build personalized profiles, and contribute location-pinned content complete with images, descriptions, categorization, pricing information, and custom tags. The map experience features custom-styled annotations that visually distinguish content by category, with intuitive gestures for placing new markers and tapping existing ones to view detailed information in full-screen modal presentations. The application includes a social layer where users can join and participate in communities centered around shared interests, browse community-specific content, and connect with other users through dedicated profile pages. Content discovery is powered by a sophisticated filtering system that allows users to refine visible map markers by distance radius, date ranges, categories, price ranges, and tags—all computed client-side for responsive performance. The interface features a collapsible bottom sheet that presents nearby content in a scrollable list format, a vertical control bar for map style switching and profile access, and a search bar for location-based queries. This project is currently a work in progress, and I have chosen not to disclose the specific use case or problem being solved at this time; however, I am happy to provide a more detailed preview of functionality or implementation upon request.


Technology Utilized

Swift SwiftUI iOS 17+ Mapbox SDK Firebase Auth Firestore Node.js Express MongoDB Railway Geocoding API Combine PhotosUI SF Symbols

This location-based application is built as a native iOS app using Swift and SwiftUI targeting iOS 17+, with a Node.js and Express.js backend deployed on Railway and MongoDB as the primary database. The frontend leverages modern SwiftUI patterns including property wrappers (@State, @Binding, @Published, @EnvironmentObject), the Combine framework for reactive keyboard handling and state propagation, and the MVVM architecture for clean separation between views and business logic. Map functionality is implemented through the Mapbox Maps iOS SDK, integrated into SwiftUI via a custom UIViewRepresentable wrapper that bridges UIKit's imperative patterns with SwiftUI's declarative paradigm, featuring programmatic annotation management, custom point annotation images, gesture recognizers for long-press marker placement, and dynamic content padding that responds to UI state changes. User authentication is handled through Firebase Auth, with Firebase Storage managing user-uploaded images through a multi-image upload pipeline built on PhotosUI, and Firestore providing supplementary data storage. The MongoDB database utilizes 2dsphere geospatial indexing to enable efficient location-based queries, allowing the backend to fetch content within specified coordinate boundaries and distance radii. Address resolution is performed server-side through the Google Cloud Geocoding API, converting coordinates to human-readable addresses without exposing API keys to the client. The filtering architecture implements a hybrid approach where the server returns geospatially-bounded results and the client applies additional filters (time-based expiration, category, price range, tags) locally to minimize network requests while maintaining responsive UI updates. The backend REST API is structured with dedicated endpoints for content creation, retrieval, and filtered queries, deployed alongside the MongoDB database as separate Railway services.


Build Context

Build context coming soon.