LostLink is a comprehensive Android application designed to help users report and find lost items in their community. The app provides a platform where users can report lost items, find items that others have found, and communicate through an integrated chat system to facilitate the reunion of lost items with their owners.
- Lost Item Reporting: Users can report items they have lost with detailed descriptions, images, and location data
- Found Item Reporting: Users can report items they have found to help reunite them with their owners
- Interactive Map Integration: Google Maps integration showing locations of lost and found items
- Real-time Chat System: Built-in messaging system for users to communicate about lost/found items
- User Authentication: Secure Firebase Authentication system
- Profile Management: Complete user profile management with edit capabilities
- Notification System: Push notifications for new messages and relevant updates
- Location-based Search: Radius-based search functionality (100m, 200m, 500m)
- Image Upload: Photo upload capability for better item identification
- Report Management: Users can view, edit, and manage their own reports
- Swipe-to-Refresh: Modern UI with pull-to-refresh functionality
- Onboarding Experience: Guided introduction for new users
- Settings & Support: Comprehensive settings and support system
- Platform: Android (Java)
- Minimum SDK: API 24 (Android 7.0)
- Target SDK: API 35 (Android 15)
- Backend: Firebase (Authentication, Firestore, Storage, Messaging)
- Maps: Google Maps API
- Build System: Gradle with Kotlin DSL
- Architecture Pattern: Fragment-based with ViewBinding
app/
βββ src/main/
β βββ java/com/nihap/lostlink/
β β βββ onboarding/ # Onboarding flow
β β βββ fragments/ # UI fragments
β β βββ adapters/ # RecyclerView adapters
β β βββ models/ # Data models
β β βββ services/ # Background services
β β βββ utils/ # Utility classes
β βββ res/
β β βββ layout/ # XML layouts
β β βββ drawable/ # Vector drawables and images
β β βββ values/ # Colors, strings, styles
β β βββ menu/ # Navigation menus
β β βββ anim/ # Animations
β βββ AndroidManifest.xml
βββ build.gradle.kts
- SplashScreen: App launch screen with 2-second delay
- OnboardActivity: User onboarding with ViewPager2
- Login: Firebase Authentication login
- Register: User registration with validation
- Home: Main activity with bottom navigation
- ChatRoomActivity: Individual chat conversations
- HomeFragment: Main dashboard with map and reports tabs
- ReportFragment: Report management (Lost/Found tabs)
- ChatFragment: Chat room listing
- ProfileFragment: User profile display and management
- SettingsFragment: App settings and logout
- LostFragment: Lost items display
- FoundFragment: Found items display
- MyReportsFragment: User's own reports
- EditProfileFragment: Profile editing
- SupportFragment: Help and support
- ReportDataClass: Core data structure for lost/found reports
- Message: Chat message data structure
- ChatRoom: Chat room information
- User: User profile data
- ChatNotificationService: Firebase Cloud Messaging for chat notifications
- NotificationManager: Local notification management
- ChatManager: Chat functionality management
implementation("androidx.appcompat:appcompat:1.7.0")
implementation("com.google.android.material:material:1.12.0")
implementation("androidx.activity:activity:1.10.1")
implementation("androidx.constraintlayout:constraintlayout:2.2.1")
implementation("androidx.navigation:navigation-fragment:2.6.0")
implementation("androidx.navigation:navigation-ui:2.6.0")implementation("com.google.firebase:firebase-auth:23.2.1")
implementation("com.google.firebase:firebase-firestore:25.1.4")
implementation("com.google.firebase:firebase-storage:21.0.2")
implementation("com.google.firebase:firebase-messaging:23.4.0")implementation("com.google.android.gms:play-services-maps:19.0.0")
implementation("com.google.android.libraries.places:places:3.3.0")implementation("com.github.bumptech.glide:glide:4.16.0")
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01")
implementation("com.google.android.flexbox:flexbox:3.0.0")
implementation("de.hdodenhof:circleimageview:3.1.0")
implementation("androidx.recyclerview:recyclerview:1.3.2")
implementation("androidx.work:work-runtime:2.9.0")The app requires the following permissions:
ACCESS_COARSE_LOCATION: For approximate locationACCESS_FINE_LOCATION: For precise location
INTERNET: For Firebase and API communicationACCESS_NETWORK_STATE: For network status monitoringREAD_EXTERNAL_STORAGE: For image selection
POST_NOTIFICATIONS: For push notifications (Android 13+)VIBRATE: For notification vibration
- Custom Fonts: Agency FB font family for branding
- Material Design: Following Material Design 3 guidelines
- Responsive Layout: Adaptive layouts for different screen sizes
- Dark Mode Support: Theme-aware UI components
- Animation Support: Smooth transitions and animations
- Bottom Navigation: 5-tab navigation (Home, Reports, Chat, Profile, Settings)
- TabLayout: Swipe-able tabs for Lost/Found reports
- Fragment Navigation: Seamless fragment transitions
- SwipeRefreshLayout: Pull-to-refresh functionality
- FloatingActionButton: Quick access to add reports
- Bottom Sheets: Modal dialogs for detailed views
- Map Integration: Interactive Google Maps with markers
- Email/Password authentication
- Automatic login persistence
- Secure user session management
users/
βββ {userId}/
β βββ name: string
β βββ email: string
β βββ phone: string
β βββ profileImageUrl: string
reports/
βββ {reportId}/
β βββ reportType: "Lost" | "Found"
β βββ itemName: string
β βββ location: string
β βββ geoPoint: GeoPoint
β βββ radius: integer
β βββ description: string
β βββ imageUrl: string
β βββ userId: string
β βββ userName: string
β βββ timestamp: Timestamp
chatRooms/
βββ {chatRoomId}/
β βββ participants: [userId1, userId2]
β βββ lastMessage: string
β βββ lastMessageTime: Timestamp
β βββ messages/
β βββ {messageId}/
β βββ senderId: string
β βββ senderName: string
β βββ message: string
β βββ messageType: string
β βββ timestamp: Timestamp
β βββ isRead: boolean
- User profile images
- Report item images
- Automatic image compression and optimization
- Real-time chat notifications
- Report update notifications
- Background message handling
- Interactive map display on home screen
- Location picker for reports
- Marker display for lost/found items
- Radius-based search visualization
- Current location detection
- Google Maps Android API
- Places API for location search
- Geocoding for address conversion
- Real-time Messaging: Instant message delivery
- Chat Rooms: Organized conversations between users
- Message Types: Text messages with future support for images
- Read Status: Message read indicators
- Notifications: Push notifications for new messages
- User Interface: Modern chat UI with sent/received message layouts
- Firebase Firestore for message storage
- Real-time listeners for instant updates
- Efficient pagination for message history
- Automatic chat room creation between users
- Complete profile management
- Profile image upload and display
- Editable user information (name, phone, email)
- User report history
- Settings and preferences
- Splash screen (2-second delay)
- Onboarding (for new users)
- Login/Register
- Main application
- Lost Items: Items that users have lost
- Found Items: Items that users have found
- Detailed Information: Name, description, location, image
- Location Services: GPS coordinates and address
- Search Radius: Configurable search area (100m, 200m, 500m)
- Image Upload: Photo attachment for better identification
- Edit/Delete: Full CRUD operations on user's own reports
- Time Tracking: Automatic timestamp recording
- Map View: Visual representation on Google Maps
- List View: Scrollable list with detailed information
- Filter Options: Lost/Found categorization
- Search Functionality: Text-based search capabilities
- Chat Notifications: New message alerts
- Report Notifications: Relevant lost/found item alerts
- System Notifications: App updates and information
- Push Notifications: Firebase Cloud Messaging
- Notification Badge: Unread message counter
- Sound & Vibration: Customizable notification alerts
- Background Processing: Notifications work when app is closed
- Android Studio Arctic Fox or later
- JDK 11 or higher
- Android SDK API 24+
- Firebase project setup
-
Clone the Repository
git clone <repository-url> cd LostLink
-
Firebase Configuration
- Create a new Firebase project
- Add Android app to Firebase project
- Download
google-services.json - Place in
app/directory - Enable Authentication, Firestore, Storage, and Cloud Messaging
-
Google Maps Setup
- Enable Maps SDK for Android
- Enable Places API
- Create API key
- Add to
strings.xml:<string name="map_api_key">YOUR_API_KEY_HERE</string>
-
Build Configuration
./gradlew clean ./gradlew build
-
Run the Application
- Connect Android device or start emulator
- Run from Android Studio or:
./gradlew installDebug
- Ensure all dependencies are properly synced
- Configure Firebase project with proper security rules
- Test Google Maps API key functionality
- Verify push notification setup
- Open project in Android Studio
- Sync Gradle files
- Run on emulator or physical device
- Test all features including location and notifications
./gradlew assembleRelease- Unit tests:
./gradlew test - Instrumentation tests:
./gradlew connectedAndroidTest
- Firebase security rules for data access control
- User authentication required for all operations
- Input validation and sanitization
- Secure image upload with Firebase Storage
- Location data encrypted and secured
- User data accessible only to authenticated users
- No sensitive information stored locally
- Compliance with Android privacy guidelines
- Splash Screen β Brief app loading
- Onboarding β Feature introduction (3 screens)
- Registration β Account creation
- Home Screen β Main application interface
- Splash Screen β Auto-login check
- Home Screen β Direct access (if logged in)
- Navigate to Reports tab
- Tap "Add Report" FAB
- Select "Lost" type
- Fill in item details
- Select location on map
- Upload optional image
- Submit report
- Navigate to Home tab
- View map with markers
- Browse Lost/Found tabs
- Tap on relevant item
- View details in bottom sheet
- Contact item owner via chat
- Tap "Contact" on item
- Auto-create chat room
- Send messages
- Receive real-time responses
- Coordinate item return
- Colors defined in
values/colors.xml - Styles in
values/styles.xml - Support for day/night themes
- Notification settings in preferences
- Location accuracy settings
- Chat notification preferences
- Search radius options
-
Location Not Working
- Ensure location permissions granted
- Check GPS is enabled
- Verify Google Maps API key
-
Firebase Connection Issues
- Verify
google-services.jsonis present - Check internet connectivity
- Ensure Firebase project is active
- Verify
-
Push Notifications Not Working
- Check notification permissions (Android 13+)
- Verify FCM token generation
- Test on physical device
-
Map Not Loading
- Verify Maps API key
- Check API quotas and billing
- Ensure Maps SDK is enabled
- Image compression for uploads
- Efficient RecyclerView implementations
- Proper lifecycle management
- Memory leak prevention
- Advanced Search: Filter by item category, date range
- Image Recognition: AI-powered item matching
- Social Features: User ratings and reviews
- Offline Mode: Cached data for offline viewing
- Multi-language Support: Internationalization
- Analytics Dashboard: Usage statistics and insights
- Kotlin Migration: Convert from Java to Kotlin
- Architecture Components: ViewModel, LiveData integration
- Dependency Injection: Dagger/Hilt implementation
- Testing: Comprehensive test coverage
- CI/CD Pipeline: Automated build and deployment
- Follow Android coding standards
- Use meaningful commit messages
- Write comprehensive documentation
- Include unit tests for new features
- Follow Material Design principles
- Java 11+ features where applicable
- Consistent naming conventions
- Proper commenting and documentation
- Error handling and edge cases
This project is licensed under the MIT License - see the LICENSE file for details.
- Developer: Nihap
- Email: nihapmrm@gmail.com
- Package: com.nihap.lostlink
- Version: 1.0 (Version Code: 1)
- Firebase for backend services
- Google Maps for location services
- Material Design for UI guidelines
- Open source community for libraries and tools
For support, bug reports, or feature requests:
- Create an issue in the repository
- Contact: nihapmrm@gmail.com
- Use the in-app Support feature
LostLink - Connecting lost items with their owners through technology and community collaboration.