Spotly is an intuitive location-based mobile application designed to help users effortlessly manage their personal places. Developed with Flutter, it leverages the power of Firebase for real-time data storage and robust user authentication, while integrating Google Maps for dynamic location visualization and seamless route navigation. Spotly offers a clean, user-friendly experience, making it simple to add, categorize, and revisit all your cherished spots.
- π― Interactive Map Interface: Visualize all your saved places on a dynamic Google Map.
- π Add & Manage Places: Easily add new locations with custom names, descriptions, and geographical coordinates.
- π·οΈ Category Management: Organize places into user-defined categories for better filtering and management.
- π Place Details & Editing: View comprehensive details for each saved spot and update information as needed.
- πΊοΈ Route Navigation: Get directions to any saved location directly within the app using Google Maps.
- βοΈ Real-time Data Sync: Securely store and synchronize your data across devices with Firebase Firestore.
- π User Authentication: Secure your personal places with Firebase Authentication (email/password, Google Sign-In, etc., if implemented).
- π¨ Responsive & Intuitive UI: Enjoy a modern, user-friendly interface optimized for mobile devices.
Follow these steps to get Spotly up and running on your local development environment.
Before you begin, ensure you have the following installed:
- Flutter SDK: Installation Guide
- Verify installation:
flutter doctor
- Verify installation:
- Dart SDK: Included with Flutter.
- IDE: VS Code with Flutter extension or Android Studio with Flutter/Dart plugins.
- Emulator/Device: An Android emulator, iOS simulator, or a physical device for running the app.
-
Clone the repository
git clone https://github.com/ozdogrumerve/Spotly.git cd Spotly -
Install dependencies Navigate to the project root and fetch Flutter dependencies:
flutter pub get
-
Firebase Project Setup Spotly relies on Firebase for authentication and real-time data storage.
- Go to the Firebase Console and create a new project.
- Add an Android app to your Firebase project:
- Register your app (use
com.example.spotlyor your chosen package name fromandroid/app/src/main/AndroidManifest.xml). - Download the
google-services.jsonfile. - Place
google-services.jsoninto theandroid/app/directory.
- Register your app (use
- Add an iOS app to your Firebase project:
- Register your app (use
com.example.spotlyor your chosen bundle ID fromios/Runner.xcodeproj/project.pbxproj). - Download the
GoogleService-Info.plistfile. - Open your iOS project in Xcode (
ios/Runner.xcworkspace), right-click onRunner, and select "Add Files to 'Runner'..." to addGoogleService-Info.plistto your app.
- Register your app (use
- Enable Cloud Firestore and Authentication (e.g., Email/Password, Google Sign-In) in your Firebase project settings.
-
Google Maps API Key Setup Spotly uses Google Maps for displaying locations.
- Go to the Google Cloud Console and enable the following APIs for your project:
- Maps SDK for Android
- Maps SDK for iOS
- Places API (if place search is implemented)
- Geolocation API (if current location detection is needed)
- Create an API key with appropriate restrictions.
- For Android:
- Open
android/app/src/main/AndroidManifest.xml. - Add your API key within the
<application>tag, replacingYOUR_GOOGLE_MAPS_API_KEY:<meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_GOOGLE_MAPS_API_KEY"/>
- Open
- For iOS:
- Open
ios/Runner/AppDelegate.swift(orAppDelegate.mfor Objective-C). - Add the following to
application:didFinishLaunchingWithOptions:replacingYOUR_GOOGLE_MAPS_API_KEY:(For Objective-C)import GoogleMaps GMSServices.provideAPIKey("YOUR_GOOGLE_MAPS_API_KEY")
#import <GoogleMaps/GoogleMaps.h> [GMSServices provideAPIKey:@"YOUR_GOOGLE_MAPS_API_KEY"];
- Open
- Go to the Google Cloud Console and enable the following APIs for your project:
-
Start the development server Run the application on your connected device or emulator:
flutter run
The app will automatically launch on the selected device.
Spotly/
βββ .github/ # GitHub Actions workflows (if any)
βββ android/ # Android native project files
βββ assets/ # Static assets (images, fonts, etc.)
βββ ios/ # iOS native project files
βββ lib/ # Dart source code for the Flutter application
β βββ main.dart # Main entry point of the application
β βββ models/ # Data models (e.g., Place, Category, User)
β βββ services/ # Abstractions for Firebase (Firestore, Auth) and location services
β βββ providers/ # State management providers (if using Provider, Riverpod, etc.)
β βββ screens/ # UI for different application pages/screens
β βββ widgets/ # Reusable UI components
β βββ utils/ # Utility functions and helpers
βββ linux/ # Linux desktop project files
βββ macos/ # macOS desktop project files
βββ web/ # Web project files (if Flutter web is targeted)
βββ windows/ # Windows desktop project files
βββ test/ # Unit and widget tests
βββ pubspec.yaml # Project dependencies and metadata
βββ pubspec.lock # Specific versions of dependencies
βββ analysis_options.yaml# Dart linter rules
βββ README.md # Project README file
While Firebase configuration files (google-services.json, GoogleService-Info.plist) handle most backend settings, API keys like Google Maps API Key are typically managed as build-time configurations in platform-specific files. For more complex environment management, consider using flutter_dotenv package or similar.
| Variable | Description | Example Location |
|---|---|---|
GOOGLE_MAPS_API_KEY |
Your Google Maps Platform API Key. | android/app/src/main/AndroidManifest.xml, ios/Runner/AppDelegate.swift |
Ensure your Firebase Firestore and Storage security rules are configured to allow appropriate read/write access for authenticated users.
| Command | Description |
|---|---|
flutter run |
Runs the app on a connected device/emulator. |
flutter build |
Builds the app for a specific platform. |
flutter test |
Runs all tests in the test/ directory. |
flutter analyze |
Analyzes the project for potential issues. |
flutter format . |
Formats Dart code according to best practices. |
flutter clean |
Deletes the build/cache directories. |
flutter doctor |
Shows information about the installed toolchains. |
- Make code changes in the
lib/directory. - Use
flutter runto deploy and see changes on your device/emulator. Hot reload (pressrin the terminal) or hot restart (pressR) to quickly update the UI. - Run
flutter analyzeregularly to catch any code quality issues. - Write tests in the
test/directory to ensure functionality.
Spotly uses Flutter's built-in testing framework for unit and widget tests.
# Run all tests
flutter test
# Run tests with coverage report (requires lcov)
flutter test --coverage
# Run a specific test file
flutter test test/widgets/my_widget_test.dartTo prepare Spotly for release to app stores, you'll need to build a release version.
# Build an Android App Bundle (AAB) for Google Play Store
flutter build appbundle
# Build an Android APK
flutter build apk
# Build an iOS app for App Store Connect (requires macOS and Xcode)
flutter build ipa- Configure Signing: Set up app signing for Android and iOS. Refer to the Flutter documentation for Android signing and iOS signing.
- Firebase Release: Ensure your Firebase project is properly configured for production use (e.g., correct API key restrictions, production database rules).
- App Store Submission:
- For Android: Upload the generated
.aabfile to the Google Play Console. - For iOS: Upload the generated
.ipafile to App Store Connect via Xcode orflutter build ipa.
- For Android: Upload the generated
We welcome contributions to Spotly! If you're interested in improving the app, please consider:
- Forking the repository.
- Creating a new branch (
git checkout -b feature/AmazingFeature). - Making your changes.
- Ensuring your code adheres to the project's style and passes tests.
- Committing your changes (
git commit -m 'Add some AmazingFeature'). - Pushing to the branch (
git push origin feature/AmazingFeature). - Opening a Pull Request.
Please see our Contributing Guide for more detailed instructions.
- Flutter for the amazing mobile development framework.
- Firebase for powerful backend services.
- Google Maps Platform for interactive mapping solutions.
- The Flutter community for countless resources and support.
- π§ Email: ozdogrumerve57@gmail.com
- π Issues: Feel free to report bugs or suggest features on GitHub Issues
- π€ Author: Merve ΓzdoΔru
β Star this repo if you find it helpful!
Made with β€οΈ by Merve ΓzdoΔru



