Project Overview:
NoteMind is a Flutter application that allows users to take notes, both typed and handwritten, visually organize their thoughts using mind maps, and collaborate with other users to work together. This application is designed for students, professionals, and anyone looking to improve their productivity and organization.
- Flutter: Framework for building the application.
- Dart: Programming language used in Flutter.
- Provider: State management solution.
- SQLite: Local storage for notes.
- TensorFlow Lite: For handwriting recognition.
- Flutter SDK (>=2.0.0): Ensure you have the Flutter SDK installed. You can download it from Flutter's official website.
- Dart SDK: Comes bundled with Flutter.
- IDE: Install Android Studio or VS Code with Flutter and Dart plugins.
- Clone the repository:
git clone https://github.com/MLSAKIIT/NoteMind.git cd note_mind
- Install dependencies:
flutter pub get
- Run the application:
flutter run
- Project Structure:
/note_mind │ ├── android ├── ios ├── lib │ ├── models │ │ ├── note.dart │ │ └── mind_map.dart │ ├── providers │ │ └── note_provider.dart │ ├── views │ │ ├── home_screen.dart │ │ ├── note_screen.dart │ │ ├── login_screen.dart │ │ ├── signup_screen.dart │ │ └── profile_screen.dart │ ├── widgets │ │ ├── note_card.dart │ │ ├── mind_map_widget.dart │ │ └── custom_text_field.dart │ ├── services │ │ └── handwriting_recognition_service.dart │ ├── main.dart │ └── utils │ └── database_helper.dart └── test
- Provider: For state management
- Repository Pattern: To manage data operations.
Core Features
- Note Creation: Users can create, edit, and delete notes.
- Handwritten Input: Capture handwritten notes using a stylus or finger, which are converted to text using handwriting recognition.
- Mind Mapping: Visual representation of thoughts linked to notes.
- Search Functionality: Quickly find notes by keywords.
- Collaborative Functionality: Users can collaborate with others in real-time to create, edit, and organize notes together.
User Interface
- Home Screen: Displays a list of notes and buttons for creating new notes or mind maps.
- Note Screen: Interface for creating/editing notes, including options for handwriting input.
- Mind Map Screen: Visual layout of related notes in a mind map format.
Models
- note.dart: Defines the Note class with properties like title, content, and timestamp.
- mind_map.dart: Defines the MindMap class with connections between notes.
Handwriting Recognition
- handwriting_recognition_service.dart: Contains logic to handle the conversion of handwritten notes to text using TensorFlow Lite.
Example of Note Model class Note { final int id; final String title; final String content; // This will store converted text final DateTime timestamp;
Note({ required this.id, required this.title, required this.content, required this.timestamp, }); }
Testing Frameworks
- Flutter Test for unit and widget tests. Running Tests
- To run unit tests:
flutter test
Build Instructions
- To build the application for Android:
flutter build apk
- For iOS, ensure you have a valid provisioning profile and run:
flutter build ios
App Store Submission Refer to the official documentation for guidelines on submitting to the App Store and Google Play.
Common Issues Error: "Unable to locate package": Ensure all dependencies are correctly listed in pubspec.yaml. Database Issues: Verify that SQLite is properly configured. Handwriting Recognition Issues: Ensure TensorFlow Lite models are correctly integrated. FAQs How do I back up my notes? Use the export feature in the app to save notes as text files.
Contribution Guidelines
- Fork the repository.
- Create a new branch (git checkout -b feature/YourFeature).
- Make your changes and commit them (git commit -m 'Add some feature').
- Push to the branch (git push origin feature/YourFeature).
- Open a pull request.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Additional Resources
- Flutter Documentation
- SQLite Flutter Plugin
- TensorFlow Lite Flutter Plugin
-
Light theme
-
Password obscure and verification
-
Backend + Frontend Integration (Connect API for data sync).
-
Backend Issues :
- Create routes and controllers for update user profile. Include roll number and name.
- Create search route for finding notes using keywords using the notes model.
- Create a model of mind maps including CRUD operations for creating new mind maps. Make sure keep track of related note ids.
- Implement rate limiters and cors for the server
- Implement Collaborative functionality using websockets for sending changes realtime.