CityGem Go! is an interactive treasure hunt app designed to deliver unique and fun adventures. Players can explore real-world locations, solve riddles, and complete challenges through an intuitive interface.
Firebase Authentication
and optional credential saving using AsyncStorage
.Firebase Firestore
for cloud storage and SQLite
for local caching, optimizing user session and data management.React Native (Expo)
Firebase Authentication
and Firestore
expo-notifications
expo-location
SQLite
and AsyncStorage
You can download the complete documentation here, including detailed reports of each analysis section. The repository is available here for browsing all the project resources.
npm install -g expo-cli
Clone the repository:
git clone https://github.com/ngljcb/px-city-gem-go.git
cd px-city-gem-go/city-gem-go
Install dependencies:
npm install
Configure Firebase:
google-services.json
file (for Android) or GoogleService-Info.plist
file (for iOS).android/app
ios/
Update Firebase configuration:
Edit the FirebaseConfig.js
file:
import { initializeApp } from 'firebase/app';
const firebaseConfig = {
apiKey: 'YOUR_API_KEY',
authDomain: 'YOUR_PROJECT_ID.firebaseapp.com',
projectId: 'YOUR_PROJECT_ID',
storageBucket: 'YOUR_PROJECT_ID.appspot.com',
messagingSenderId: 'YOUR_SENDER_ID',
appId: 'YOUR_APP_ID',
};
export const FIREBASE_APP = initializeApp(firebaseConfig);
Start the app:
expo start
├── app/ # Main app screens and routes
├── assets/ # Static assets like images and icons
├── components/ # Reusable UI components
├── constants/ # App-wide constants (e.g., colors)
├── models/ # Data models (business logic)
├── services/ # Core services like notifications & database handlers
├── styles/ # Styling files
└── viewmodels/ # Logic to bridge views and models
Managed through the NotificationHandler
class:
expo-location
for geolocation checks and saves verified photos to the gallery.Firestore
and caches them in SQLite
for offline performance.This project is released under the MIT License. For more details, see the LICENSE
file.