LookupCafe is an iOS app built with SwiftUI, Firebase, and the Google Maps SDK. It enables users to discover nearby coffee shops based on their current location, browse detailed cafe information, apply advanced filters, navigate with Apple Maps, and manage a personalized list of favorites.
- Location-based discovery using Google Maps and interactive markers
- Detailed cafe information including name, address, phone number, opening hours, rating, reviews, and service availability
- Favorites list for bookmarking cafes with user-specific sync
- Google Sign-In via Firebase Authentication
- Cloud-based storage and sync using Firebase Firestore
- SwiftUI – Declarative user interface framework for iOS
- Firebase Firestore – NoSQL cloud database for metadata and user data
- Firebase Authentication – Google Sign-In and session management
- Google Maps SDK for iOS – Interactive map and location services
- CoreLocation / CLGeocoder – Location awareness and reverse geocoding
- MapKit – Used for deep-linking to Apple Maps for navigation
git clone https://github.com/your-username/lookupCafe.git
cd lookupCafeOpen the project in Xcode, then:
-
Go to File → Add Packages
-
Add the following packages:
Select and include:
FirebaseFirestoreFirebaseAuthGoogleMapsGooglePlaces
Note: Do not use CocoaPods. This project uses Swift Package Manager.
Download your GoogleService-Info.plist from the Firebase Console and add it to the root of your Xcode project (check "Copy items if needed").
Add the following keys to your Info.plist:
<key>Privacy - Location When In Use Usage Description</key>
<string>我們需要您的位置來顯示附近的咖啡店</string>
<key>GoogleSearchApi</key>
<string>YOUR_GOOGLE_SEARCH_API_KEY</string>
<key>GMSApiKey</key>
<string>YOUR_GOOGLE_MAPS_API_KEY</string>Replace the keys with your credentials from the Google Cloud Console.
Open the project in Xcode:
open lookupCafe.xcodeprojSelect a simulator or device, then build and run the project.
- Multiple commands produced output error in
Info.plistRefer to this HackMD note (Mandarin) for a solution.