LuminaLink is a next-generation, privacy-first family safety application built on Flutter. Born from the open-source Traccar Client, LuminaLink has been completely reimagined to provide families with a beautiful, intuitive, and secure way to stay connected through real-time location sharing.
Unlike traditional tracking apps, LuminaLink puts your privacy first. You control who sees your location, when they see it, and for how long. With Firebase security rules and transparent data practices, LuminaLink ensures your family's safety without compromising your privacy.
Mission: To create a world where families can share their whereabouts confidently, knowing their data is protected and their privacy is respected.
- πΊοΈ Real-Time Location Sharing β See your loved ones' locations on Google Maps with color-coded circle markers
- π¨βπ©βπ§βπ¦ Private Circles β Create secure groups with 6-character invite codes for family, friends, or teams
- π Place Alerts (Geofencing) β Automated notifications when family members arrive at or leave important locations
- π Privacy-First Design β Granular controls over location sharing with privacy dashboard
- π Platform-Native Experience β Beautiful Material Design 3 on Android, seamless Cupertino on iOS
- π Battery Optimized β Smart background location tracking that respects battery life
- π¨ The "Lumina" Theme β Warm amber/teal color scheme with 8-point grid system
- π Smart Notifications β FCM push notifications with 5-minute debouncing to prevent spam
- π Data Security β Comprehensive Firestore security rules with role-based access control
- Location Sharing Toggle: Enable/disable sharing instantly from settings
- Circle-Based Sharing: Location only visible to circles you create or join
- Notification Controls: Choose which places trigger entry/exit notifications
- Privacy Dashboard: See exactly which circles can view your location
- Automatic Cleanup: Old location data (>24hrs) automatically deleted
- No Third-Party Sharing: Your data never sold to advertisers
LuminaLink is built with modern, production-ready technologies:
| Category | Technology |
|---|---|
| Framework | Flutter 3.7.2+ (Cross-platform mobile) |
| Language | Dart ^3.7.2 |
| Backend | Firebase (Auth, Firestore, Messaging, Storage) |
| Maps | Google Maps SDK for Android & iOS |
| Location | flutter_background_geolocation ^4.18.1 |
| Notifications | Firebase Cloud Messaging + flutter_local_notifications |
| Storage | Cloud Firestore (real-time), shared_preferences, flutter_secure_storage |
| UI Patterns | Platform-adaptive widgets, Material 3, Cupertino |
Before you begin, ensure you have the following installed:
- Flutter SDK (^3.7.2): Install Flutter
- Dart SDK (included with Flutter)
- Android Studio or Xcode (for Android/iOS development respectively)
- Firebase Account: Sign up for Firebase
- Google Cloud Account: Sign up for Google Cloud (for Maps API)
- Git: Install Git
git clone https://github.com/Nickalus12/LuminaLink.git
cd LuminaLinkflutter pub getFirebase is required for authentication, real-time database, and push notifications.
A. Create Firebase Project
- Go to Firebase Console
- Click "Add project" and follow the wizard
- Enable Google Analytics (optional but recommended)
B. Add Android App
- In Firebase Console, click "Add app" β Android
- Enter package name:
com.luminalink.app - Download
google-services.json - Place file in
android/app/google-services.json
C. Add iOS App
- In Firebase Console, click "Add app" β iOS
- Enter bundle ID:
com.luminalink.app - Download
GoogleService-Info.plist - Place file in
ios/Runner/GoogleService-Info.plist - Open
ios/Runner.xcworkspacein Xcode - Drag
GoogleService-Info.plistinto Runner folder
D. Enable Firebase Services
In Firebase Console, enable the following:
-
Authentication
- Go to Authentication β Sign-in method
- Enable "Email/Password"
-
Cloud Firestore
- Go to Firestore Database β Create database
- Start in production mode
- Choose a location (preferably close to your users)
- Deploy security rules from
firestore.rules:(Requires Firebase CLI:firebase deploy --only firestore:rules
npm install -g firebase-tools)
-
Cloud Messaging
- Already enabled by default
- No additional configuration needed
-
Storage (Optional - for future profile pictures)
- Go to Storage β Get started
- Start in production mode
Google Maps is required for the map screen and place selection.
A. Enable Maps APIs
- Go to Google Cloud Console
- Select your Firebase project (or create linked project)
- Go to "APIs & Services" β "Library"
- Enable the following APIs:
- Maps SDK for Android
- Maps SDK for iOS
B. Create API Keys
- Go to "APIs & Services" β "Credentials"
- Click "Create Credentials" β "API Key"
- Create two keys (one for Android, one for iOS)
C. Restrict API Keys (Important for security)
For Android key:
- Application restrictions: Android apps
- Add package name:
com.luminalink.app - Add SHA-1 certificate fingerprint (get via
keytoolor Android Studio) - API restrictions: Maps SDK for Android
For iOS key:
- Application restrictions: iOS apps
- Add bundle ID:
com.luminalink.app - API restrictions: Maps SDK for iOS
D. Add API Keys to Project
Android:
Edit android/app/src/main/AndroidManifest.xml:
<manifest>
<application>
<!-- Add this inside <application> tag -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_ANDROID_API_KEY_HERE"/>
</application>
</manifest>iOS:
Edit ios/Runner/AppDelegate.swift:
import UIKit
import Flutter
import GoogleMaps // Add this import
@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GMSServices.provideAPIKey("YOUR_IOS_API_KEY_HERE") // Add this line
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}The app uses flutter_background_geolocation which requires a license for production use.
- Get a license from Transistor Software
- Edit
lib/preferences.dartand add your license key to the config
For development/testing, you can use the free tier with limitations.
For Android:
flutter run -d androidFor iOS (macOS only):
cd ios
pod install
cd ..
flutter run -d iosAndroid:
flutter build apk --release # APK for distribution
flutter build appbundle # App Bundle for Google PlayiOS:
flutter build ios --release
# Then open ios/Runner.xcworkspace in Xcode
# Archive and upload to App Store Connect| Platform | Minimum Version | Status |
|---|---|---|
| Android | 6.0 (API 23) | β Fully Supported |
| iOS | 12.0 | β Fully Supported |
LuminaLink/
βββ android/ # Android-specific code and configuration
βββ ios/ # iOS-specific code and configuration
βββ lib/
β βββ main.dart # Application entry point
β βββ models/ # Data models (User, Circle, Place, Location)
β β βββ app_user.dart
β β βββ circle.dart
β β βββ place.dart
β β βββ user_location.dart
β β βββ models.dart # Barrel export
β βββ services/ # Business logic and backend integration
β β βββ auth_service.dart # Firebase Authentication
β β βββ circle_service.dart # Circle CRUD operations
β β βββ location_service.dart # Location tracking & sharing
β β βββ place_service.dart # Geofencing management
β β βββ notification_service.dart # FCM & local notifications
β β βββ geofence_service.dart # Automated place monitoring
β βββ screens/ # UI screens (organized by feature)
β β βββ auth/ # Login, signup, forgot password
β β βββ onboarding/ # First-time user experience
β β βββ circles/ # Circle list, create, join, details
β β βββ places/ # Place list, create/edit
β β βββ map/ # Real-time location map
β β βββ settings/ # Settings, profile, privacy dashboard
β β βββ home_screen.dart # Bottom navigation hub
β βββ widgets/ # Reusable UI components
β β βββ platform_aware_button.dart
β β βββ platform_aware_dialog.dart
β β βββ platform_aware_loading.dart
β β βββ platform_aware_switch.dart
β β βββ widgets.dart # Barrel export
β βββ theme/ # Design system
β β βββ colors.dart # Lumina color palette
β β βββ typography.dart # Material 3 text styles
β β βββ spacing.dart # 8-point grid system
β β βββ theme.dart # Complete theme configuration
β βββ l10n/ # Localization (inherited from Traccar)
β βββ utils/ # Utility functions
βββ firestore.rules # Firestore security rules
βββ .github/
β βββ PULL_REQUEST_TEMPLATE.md
βββ pubspec.yaml # Project dependencies
User Action (UI)
β
Screen/Widget
β
Service Layer (Business Logic)
β
Firebase/Backend
β
Stream/Future
β
StreamBuilder/FutureBuilder
β
Updated UI
- AuthService: User authentication, profile management, FCM token registration
- CircleService: Circle CRUD, member management, invite code generation
- LocationService: Background geolocation, Firestore sync, privacy controls
- PlaceService: Geofence management, place CRUD, location containment checks
- NotificationService: FCM integration, local notifications, permission handling
- GeofenceService: Automated monitoring, entry/exit detection, notification debouncing
LuminaLink adheres to the highest code quality standards:
- β
Zero linting violations (using
flutter_lints) - β Comprehensive documentation (all public APIs documented)
- β Platform-adaptive UI (Material 3 + Cupertino widgets)
- β Consistent code style (dart format)
- β Privacy-first architecture (security by design)
# Run all tests
flutter test
# Run with coverage
flutter test --coverage
# Run integration tests (when implemented)
flutter test integration_test# Format all Dart files
dart format .
# Analyze code
flutter analyze# Run with verbose logging
flutter run -v
# Run with specific flavor (if configured)
flutter run --flavor dev
flutter run --flavor prod
# Check background geolocation logs
# Android: Use logcat filtering for "TSLocationManager"
# iOS: Use Xcode console filtering for "TSLocationManager"We welcome contributions from the community! LuminaLink is built on the foundation of open-source collaboration.
Please read our Pull Request Template before submitting changes. All contributions must:
- β
Pass all linting checks (
flutter analyze) - β Include tests for new features
- β Follow the established code style
- β Include clear documentation
- β Be tested on both Android and iOS (where applicable)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Privacy is not an afterthoughtβit's built into LuminaLink's DNA.
- π Firestore Security Rules: Production-ready rules enforce role-based access
- π― Minimal Data Collection: Only collect what's necessary for functionality
- π« No Third-Party Tracking: Location never sold or shared with advertisers
- π€ User Control: Granular privacy controls in settings
- π Transparent Practices: Clear, human-readable privacy messaging in-app
- π Firebase Security: Leverages Firebase Auth and Firestore security
- β° Data Expiration: Automatic cleanup of location data older than 24 hours
- All sensitive data stored in Firestore with security rules
- FCM tokens managed securely
- API keys restricted by package/bundle ID and API scope
- No hardcoded secrets in source code
- HTTPS-only communication
For security issues, please create a private security advisory on GitHub or email security@luminalink.app.
LuminaLink is licensed under the Apache License 2.0.
Copyright 2025 LuminaLink Contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
See LICENSE.txt for the full license text.
LuminaLink is built upon the foundation of the Traccar Client, an excellent open-source GPS tracking application created by Anton Tananaev. We are deeply grateful for the Traccar project and the broader open-source community.
Special thanks to:
- Traccar Project for the foundational codebase
- Flutter Team for the incredible framework
- Firebase Team for the backend infrastructure
- Open Source Community for countless packages and libraries
- GitHub Issues: Report bugs or request features
- Discussions: Join the community
- Email: support@luminalink.app (coming soon)
- Professional documentation
- GitHub best practices (PR template)
- Apache 2.0 license
- Rename project to LuminaLink
- Implement "Lumina" design system (warm amber/teal theme)
- Platform-adaptive theming (Material 3 + Cupertino)
- Complete theme system (colors, typography, spacing)
- Platform-aware widgets library
- Firebase Authentication integration
- Email/password signup & login
- Password reset & change
- User profile management
- Onboarding flow (5 screens)
- Circle data model with role-based access
- Circle CRUD operations
- 6-character invite code system
- Circle member management
- Firestore security rules
- Background geolocation integration
- Real-time location sharing via Firestore
- Circle-based location visibility
- Privacy controls (enable/disable sharing)
- Privacy dashboard showing circle access
- Circle management UI (list, create, join, details)
- Home screen with bottom navigation
- Settings screen with profile editing
- Google Maps integration with real-time markers
- Circle filtering on map
- Color-coded member markers
- Member info bottom sheets
- Place model with geofence logic
- Place CRUD operations
- Place management UI (list, create/edit)
- Interactive map picker for places
- Notification service (FCM + local)
- Geofence monitoring service
- Automated place entry/exit notifications
- Notification debouncing (5-minute cooldown)
- Unit tests for all services
- Widget tests for key components
- Integration tests for critical user flows
- Performance optimization
- Battery usage analysis and optimization
- Security audit of Firestore rules
- Accessibility audit (WCAG AA compliance)
- Code coverage >80%
- App icons and splash screens
- Store screenshots and promotional materials
- Privacy policy page
- Terms of service page
- User onboarding improvements
- Crash reporting with Firebase Crashlytics
- Analytics dashboard
- CI/CD pipeline (GitHub Actions)
- Beta testing program
- App Store submission
- Google Play submission
- In-app chat between circle members
- Location history playback
- Battery level indicators on map
- Driving vs walking activity detection
- Offline mode with local storage
- Multi-language support (i18n)
- Dark mode auto-switching
- Custom circle icons
- Emergency SOS button
- Location sharing time limits
- Anonymous mode for temporary hiding
- Lines of Code: ~10,000+
- Screens: 17
- Services: 6
- Models: 4
- Platform Widgets: 4
- Development Time: 2 weeks
- Status: Feature-complete core app
LuminaLink is feature-complete with all core functionality implemented and ready for testing:
β User Authentication - Email/password auth with Firebase β Circle Management - Create, join, invite, manage members β Real-Time Location - Background tracking with Firestore sync β Google Maps Integration - Live member locations with filtering β Place Alerts - Geofencing with automated notifications β Privacy Controls - Granular settings and dashboard β Push Notifications - FCM with local notification display β Platform-Adaptive UI - Native feel on Android and iOS
Next Steps: Testing, refinement, and production polish before store submission.
Made with β€οΈ by developers who believe privacy matters
β Star this repo if you believe in privacy-first family safety!