A feature-rich, modern notes application built with Flutter, featuring Clean Architecture, Firebase integration, and advanced note management capabilities.
- Rich Text Editing: Powered by Flutter Quill for advanced text formatting
- Note Management: Create, edit, delete, pin, and favorite notes
- Search & Filter: Advanced search with filtering options (pinned, favorites, locked, recent)
- Staggered Grid Layout: Beautiful masonry-style note display
- Color Coding: Customizable note colors for better organization
- Tags System: Organize notes with custom tags
- Firebase Authentication: Email/password and Google Sign-In
- Cloud Sync: Two-way synchronization between local storage and Firestore
- Offline Support: Full functionality without internet connection
- Auto Sync: Automatic synchronization when connected
- Biometric Authentication: Fingerprint/Face ID for sensitive notes
- Note Locking: Lock individual notes with biometric authentication
- Secure Storage: Local encryption with Hive database
- Local Notifications: Schedule reminders for important notes
- Smart Reminders: Set custom reminder dates for notes
- Notification Management: Full control over notification settings
- Modern UI: Material Design 3 with custom theming
- Dark/Light Theme: System-aware theme switching
- Smooth Animations: Fluid transitions and micro-interactions
- Responsive Design: Optimized for all screen sizes
- Accessibility: Full accessibility support
The app follows Clean Architecture principles with clear separation of concerns:
lib/
├── core/ # Core utilities and constants
│ ├── constants/ # App constants and configuration
│ ├── themes/ # App theming and styling
│ ├── router/ # Navigation routing
│ └── utils/ # Utility functions
├── data/ # Data layer
│ ├── local/ # Local storage (Hive)
│ ├── models/ # Data models
│ └── repositories/ # Repository implementations
├── domain/ # Domain layer
│ ├── entities/ # Business entities
│ ├── repositories/ # Repository interfaces
│ └── usecases/ # Business logic use cases
├── presentation/ # Presentation layer
│ ├── pages/ # UI pages/screens
│ ├── providers/ # Riverpod state management
│ └── widgets/ # Reusable UI components
└── services/ # External services
├── auth_service.dart # Firebase Authentication
├── biometric_service.dart # Biometric authentication
├── notification_service.dart # Local notifications
└── sync_service.dart # Cloud synchronization
- Framework: Flutter 3.x
- State Management: Riverpod 2.x
- Local Database: Hive
- Cloud Database: Firebase Firestore
- Authentication: Firebase Auth
- Rich Text Editor: Flutter Quill
- UI Components: Material Design 3
- Animations: Flutter Animate, Lottie
- Testing: Flutter Test, Mockito
flutter_riverpod: State managementhive&hive_flutter: Local databasefirebase_core,firebase_auth,cloud_firestore: Firebase servicesflutter_quill: Rich text editorgoogle_fonts: Typographylottie: Animations
flutter_staggered_grid_view: Masonry layoutflutter_slidable: Swipe actionsshimmer: Loading animationsflutter_animate: Smooth animations
flutter_local_notifications: Local notificationslocal_auth: Biometric authenticationpermission_handler: Permission managementfile_picker: File selectionshare_plus: Content sharing
uuid: Unique ID generationintl: Internationalizationshared_preferences: Settings storageequatable: Value equalitydartz: Functional programming
- Flutter SDK (3.0 or higher)
- Dart SDK (2.18 or higher)
- Firebase project setup
- Android Studio / VS Code
-
Clone the repository
git clone <repository-url> cd notes_taking_app
-
Install dependencies
flutter pub get
-
Generate code
flutter packages pub run build_runner build
-
Firebase Setup
- Create a Firebase project
- Enable Authentication (Email/Password, Google)
- Enable Firestore Database
- Download
google-services.json(Android) andGoogleService-Info.plist(iOS) - Place them in the appropriate directories
-
Run the app
flutter run
Run tests with:
flutter testGenerate test coverage:
flutter test --coverage- Set up Firebase project
- Enable required services
- Configure authentication methods
- Set up Firestore security rules
- Modify
lib/core/constants/app_constants.dartfor app-wide settings - Update themes in
lib/core/themes/app_theme.dart - Configure notification channels in
lib/services/notification_service.dart
- 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
Built with ❤️ using Flutter