A location-based social discovery app that lets you pin meaningful moments to places, share your experience through photos and ratings, and discover what others felt about the same locations.
Atlas transforms how you experience and share places. Instead of just photos on a map, you capture the full moment: the mood you felt, how you'd rate it, and what made it special. Discover recommendations through our AI chatbot and see what your community cherishes about the places you visit.
Built for UF Hackathon as an iOS mobile application using React Native and Expo.
- Map-Based Discovery: Explore an interactive 2D map of your surroundings with real-time pin display
- Pin Creation: Capture moments with photos, descriptions, star ratings, and mood tags
- AI Recommendations: Chat with an intelligent assistant that suggests places based on your preferences and history
- Real-Time Sync: Firebase powers instant data synchronization across all users
- Geolocation: Automatic location detection when creating and discovering pins
- Photo Upload: Seamless camera and photo library integration with cloud storage
- User Authentication: Secure login with Firebase Auth
- Frontend: React Native with Expo SDK 54
- Navigation: Expo Router v6
- State Management: Zustand v5.0.10
- Styling: NativeWind v4.2.1
- Maps: react-native-maps v1.26.20 with Google Maps API
- Backend: Firebase v12.8.0 (Firestore, Storage, Auth)
- AI: Google Gemini API
- Language: TypeScript
- Platform: iOS
Clone the repository:
git clone https://github.com/yourusername/atlas.git
cd atlas/mobileInstall dependencies:
npm installCreate a .env.local file in the mobile directory with your Firebase and Google Maps credentials:
EXPO_PUBLIC_GOOGLE_MAPS_API_KEY=your_google_maps_api_key
EXPO_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
EXPO_PUBLIC_FIREBASE_PROJECT_ID=your_firebase_project_id
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_firebase_sender_id
EXPO_PUBLIC_FIREBASE_APP_ID=your_firebase_app_id
Start the development server:
npm start -- -cPress i for iOS in the Expo CLI, then scan the QR code with Expo Go on your iPhone.
atlas/
├── mobile/
│ ├── app/
│ │ ├── _layout.tsx Root layout with auth logic
│ │ ├── discover.tsx Main app entry point
│ │ └── auth/
│ │ └── login.tsx Login screen
│ ├── components/
│ │ ├── AppContainer.tsx Main navigation hub
│ │ ├── BottomNavigation.tsx Nav bar with 5 tabs
│ │ ├── MapOnlyScreen.tsx Interactive map
│ │ ├── CreatePinScreen.tsx Pin creation form
│ │ ├── AIRecommender.tsx AI chatbot interface
│ │ ├── FriendsScreen.tsx Friends list placeholder
│ │ └── ProfileScreen.tsx User profile placeholder
│ ├── services/
│ │ └── firebase.ts Firebase configuration
│ ├── store/
│ │ └── userStore.ts Zustand state management
│ ├── App.tsx App entry point
│ └── app.json Expo configuration
├── ai/
│ ├── agent.py AI recommendation agent
│ ├── routes.py Backend API routes
│ ├── firebase.py Firebase integration
│ ├── tools.py AI tools and utilities
│ └── requirements.txt Python dependencies
└── README.md
- Sign in or create an account
- Allow location permissions when prompted
- Tap the map icon to explore pins around you
- Tap the middle button to create a pin at your current location
- Select a photo, add a name and description, rate the experience, and choose a mood
- Chat with the AI chatbot to get personalized recommendations
- Explore what others have pinned in your area
- Create a Firebase project at firebase.google.com
- Enable these services:
- Firestore Database
- Cloud Storage
- Authentication
- Realtime Database
- Create API keys in Google Cloud Console for Google Maps
- Add your credentials to
.env.local
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable Maps SDK for iOS
- Create an API key (no app restrictions for development)
- Add the key to your
.env.localfile
- AI recommendations are currently placeholder functionality pending full backend integration
- Friends and Profile screens are under development
- Offline support not yet implemented
- Dependency conflicts with Expo SDK 54 and react-native-maps
- Environment inconsistencies across team members with different Node.js versions
- React Native and Expo Go instability requiring frequent cache clearing
- Merge conflicts from multiple team members modifying core files simultaneously
- Map performance optimization and real-time Firebase synchronization
- React Native requires careful attention to performance optimization and state management
- Dependency version consistency across teams is critical from day one
- Firebase real-time capabilities require thoughtful architecture to avoid duplicate updates
- Clear communication and file ownership prevent merge conflicts in collaborative development
- Expo and React Native often require unintuitive debugging solutions like clearing caches and reinstalling dependencies
- Platform-specific features like iOS geolocation handling have their own quirks
- Advanced AI recommendations based on user behavior patterns
- Social features and friend connections
- Spotify song integration with pins
- Advanced search and filtering by mood, rating, and location
- Offline pin creation with sync when reconnected
- Android support
- Performance optimization for large pin datasets
- User activity analytics and insights
We welcome contributions. Please follow these guidelines:
- Create a branch for your feature
- Keep commit messages clear and descriptive
- Test your changes before submitting a pull request
- Ensure dependencies are locked and documented
- Coordinate with team members on file changes to avoid merge conflicts