Findr is a community-driven lost and found platform built with Flutter and Firebase. The application allows users to report lost items, found items, and search through existing reports to help reunite people with their belongings.
- User Authentication: Secure login and registration using Firebase Auth
- Report Management: Create, edit, delete, and resolve lost/found item reports
- Real-time Updates: Live data synchronization using Firebase Firestore
- Image Upload: Photo attachments for better item identification
- Search & Filter: Find items by type (lost/found), keywords, and tags
- Contact System: Connect with reporters to resolve cases
- Responsive Design: Works across mobile and web platforms
- Frontend: Flutter (Dart)
- Backend: Firebase
- Authentication: Firebase Auth
- Database: Cloud Firestore
- Storage: Firebase Storage (for images)
- Platforms: Android, iOS, Web
lib/
├── main.dart # Application entry point
├── firebase_options.dart # Firebase configuration
├── models/
│ └── report.dart # Data model for reports
├── services/
│ ├── auth_service.dart # Authentication operations
│ └── firestore_service.dart # Database operations
├── screens/
│ ├── home_screen.dart # Main dashboard
│ ├── login_screen.dart # User login
│ ├── signup_screen.dart # User registration
│ ├── report_form_screen.dart # Report creation/editing
│ └── report_detail_screen.dart # Report detail view
└── widgets/
├── report_card.dart # Report display card
├── confirmation_dialog.dart # Confirmation dialogs
└── success_dialog.dart # Success feedback dialogs
The core data structure representing lost and found items:
class Report {
final String id; // Unique identifier
final String title; // Item title
final String type; // 'lost' or 'found'
final String description; // Detailed description
final List<String> tags; // Searchable keywords
final String colour; // Item color
final DateTime timeFoundLost; // When item was lost/found
final String location; // Where item was lost/found
final String reporterName; // Reporter's name
final String reporterEmail; // Reporter's email
final String? imageUrl; // Optional photo URL
final bool resolved; // Resolution status
final DateTime createdAt; // Report creation timestamp
}- User registration with email/password
- Secure login with error handling
- Automatic session management
- Logout functionality
- Creation: Comprehensive form with all required fields
- Editing: Modify existing reports (owner only)
- Deletion: Remove reports with confirmation (owner only)
- Resolution: Mark items as found/claimed
- Viewing: Detailed report information display
- Filter by type (lost/found)
- Search across titles, descriptions, and tags
- Real-time search results
- Client-side filtering for performance
- Gallery image selection
- Visual placeholder for missing images
- Color-coded backgrounds based on item color
- Error handling for failed image loads
- Consistency: Purple theme throughout the application
- Accessibility: Clear typography and contrast
- Responsiveness: Adapts to different screen sizes
- Feedback: Loading states and success messages
- Authentication: Login/Signup screens
- Dashboard: Home screen with report grid
- Report Creation: Form screen for new reports
- Report Details: Detailed view with actions
- Report Editing: Form screen for modifications
- Flutter SDK (latest stable version)
- Dart SDK
- Firebase project setup
- Android Studio / VS Code
- Clone the repository
- Install dependencies:
flutter pub get - Configure Firebase:
- Add
google-services.json(Android) - Add
GoogleService-Info.plist(iOS) - Update Firebase configuration
- Add
- Run the application:
flutter run
- Widget tests for UI components
- Integration tests for user flows
- Unit tests for business logic
- Firebase emulator for local development
- Android: Build APK or AAB for Google Play Store
- iOS: Archive for App Store
- Web: Deploy to Firebase Hosting
All code follows comprehensive documentation standards including:
- Header Comments: File description, author, dates
- Class Documentation: Purpose, functionality, usage
- Method Documentation: Parameters, returns, behavior
- Inline Comments: Complex logic explanations
- Data Type Documentation: Field descriptions and constraints
- Functionality Explanation: How each component works
- Data Flow Documentation: Information flow through the application
- User Interaction Details: How users interact with features
- Error Handling: How errors are managed and displayed
- Testing Information: How to test various features
- Push Notifications: Real-time alerts for matching items
- Location Services: GPS-based item location
- Advanced Search: More sophisticated filtering options
- Social Features: Sharing and community features
- Analytics: Usage statistics and insights
- Performance Optimization: Caching and lazy loading
- Offline Support: Local data storage
- Multi-language Support: Internationalization
- Accessibility: Enhanced accessibility features
- Security: Additional security measures
- Follow Flutter best practices
- Maintain comprehensive documentation
- Write unit tests for new features
- Use consistent code formatting
- Follow the established architecture patterns
- All changes require documentation updates
- Test coverage for new functionality
- Performance impact assessment
- Security review for sensitive operations
This project is licensed under the MIT License - see the LICENSE file for details.
For technical support or feature requests, please contact the development team or create an issue in the project repository.
Author: Siddak Bath
Created: [Date]
Last Modified: [Date]
Version: v1