SPOTS is a mobile-first social travel application designed exclusively for exploring Sri Lanka. Whether you're a local uncovering hidden gems or a tourist navigating a new city, SPOTS connects travelers through shared experiences, real reviews, and an interactive map of the island's most incredible destinations.
Think of it as Instagram meets TripAdvisor — but built entirely around the beauty of Sri Lanka. 🇱🇰
- Email & password registration with form validation
- Google Sign-In integration
- Personalized user profiles with profile pictures
- Edit bio, username, and profile details
- Secure session management with Firebase Auth
- Full Google Maps integration with Sri Lanka district data
- Custom map markers for travel spots across the island
- Real-time current location detection
- Search and filter spots by district or category
- Get directions to any spot directly from the app
- Marker clustering for a clean, fast map experience
- Create posts with photos, captions, and location tags
- Scrollable home feed with infinite scroll pagination
- Multi-image support per post
- Like, share, and interact with other travelers' posts
- Delete and manage your own posts
- Fast image compression and upload via Firebase Storage
- 5-star rating system for each spot
- Write, edit, and delete reviews
- View average ratings on spot detail pages
- Sort reviews by most recent
- Flag inappropriate reviews
- See reviewer profiles and photos
| Layer | Technology |
|---|---|
| Mobile Framework | React Native |
| Backend & Database | Firebase Firestore |
| Authentication | Firebase Auth |
| File Storage | Firebase Storage |
| Maps | Google Maps SDK |
| Language | JavaScript (ES6+) |
| Navigation | React Navigation |
Make sure you have the following installed:
- Node.js (v16 or later)
- npm or yarn
- React Native CLI
- Android Studio (for Android)
- Xcode (for iOS, macOS only)
- A Firebase project
-
Clone the repository
git clone https://github.com/Luveen/SPOTS.git cd SPOTS -
Install dependencies
npm install
-
Set up Firebase
- Go to Firebase Console
- Create a new project (or use an existing one)
- Add an Android/iOS app to your Firebase project
- Download the
google-services.json(Android) orGoogleService-Info.plist(iOS) - Place the file in the appropriate directory:
- Android:
android/app/google-services.json - iOS:
ios/SPOTS/GoogleService-Info.plist
- Android:
-
Set up Google Maps
- Get a Google Maps API key from Google Cloud Console
- Add it to your
android/app/src/main/AndroidManifest.xml:<meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_API_KEY"/>
-
Run the app
For Android:
npx react-native run-android
For iOS:
cd ios && pod install && cd .. npx react-native run-ios
SPOTS/
├── android/ # Android native files
├── ios/ # iOS native files
├── src/
│ ├── components/ # Reusable UI components
│ ├── screens/ # App screens
│ │ ├── Auth/ # Login, Register, Forgot Password
│ │ ├── Home/ # Feed and home screen
│ │ ├── Map/ # Map and spot discovery
│ │ ├── Post/ # Post creation and detail
│ │ ├── Profile/ # User profile screens
│ │ └── Reviews/ # Review and rating screens
│ ├── navigation/ # React Navigation setup
│ ├── firebase/ # Firebase config and helpers
│ ├── hooks/ # Custom React hooks
│ └── utils/ # Helper functions
├── assets/ # Images, icons, fonts
├── App.js # App entry point
└── package.json
SPOTS was built with Sri Lanka at its heart. The app includes:
- Pre-loaded data for all 25 districts of Sri Lanka
- Curated travel spots from Colombo to Jaffna, Kandy to Galle
- Support for both local explorers and international tourists
- A growing community of travelers sharing authentic experiences
Firestore security rules are set to ensure:
- Users can only edit their own profiles and posts
- Reviews are tied to authenticated user accounts
- Public spots and posts are readable by all users
- Admin-only write access to core spot data
Contributions are welcome! If you'd like to improve SPOTS:
- Fork the repository
- Create your feature branch:
git checkout -b feature/AmazingFeature - Commit your changes:
git commit -m 'Add some AmazingFeature' - Push to the branch:
git push origin feature/AmazingFeature - Open a Pull Request
This project is licensed under the MIT License. See the LICENSE file for details.
Luveen — GitHub Profile
Made with ❤️ for Sri Lanka
If you found this project useful, please consider giving it a ⭐ on GitHub!
