One voice. Total control.
Features β’ Screenshots β’ Installation β’ Architecture β’ Documentation β’ Contributing
VOYA is a comprehensive voice-controlled productivity application that empowers users to manage their notes, payments, and events through natural voice commands. Leveraging cutting-edge AI technology, VOYA transforms spoken words into structured, organized data, making productivity effortless and intuitive.
To revolutionize productivity by enabling users to capture, organize, and manage their information through the most natural interfaceβtheir voice. VOYA combines the power of Google's Speech-to-Text and Gemini AI to deliver a seamless, intelligent voice-first experience.
- π€ Voice-First Design - Record, transcribe, and process everything through voice
- π€ AI-Powered Intelligence - Automatic structuring and extraction of information
- π Multi-Language Support - Works with English, Arabic, German, and more
- π± Offline-First Architecture - Local storage with Hive database
- π Secure & Private - Firebase Authentication with user-specific data isolation
- β¨ Beautiful UI/UX - Modern Material Design with dark/light theme support
- Secure Sign In/Sign Up with email and password
- Firebase Authentication integration
- Email Verification for account security
- Password Recovery via email
- Profile Management with account details
- User-Specific Data - Complete data isolation per user
- High-Quality Audio Recording with microphone support
- Google Speech-to-Text API integration for accurate transcription
- Multi-Language Support - English, Arabic, German, French, Spanish, and more
- Real-Time Transcription - See your words transcribed instantly
- Language Detection - Automatic language identification
- Alternative Language Codes - Better accuracy for multilingual speakers
- Google Gemini API integration for intelligent processing
- Automatic Note Structuring:
- Smart title generation
- Bullet point extraction
- Relevant tag suggestions
- Concise summary creation
- Payment Extraction from voice:
- Amount and currency detection
- Due date parsing (supports relative and absolute dates)
- Category classification (Utilities, Housing, Food, etc.)
- Recurring payment detection
- Multi-payment support (extract multiple payments from one recording)
- Event Extraction from voice:
- Title and description
- Date and time parsing (with time support)
- Location extraction
- Attendee count detection
- Recurring event support
- Multi-event support
- Language Preservation - Maintains original language throughout processing
- Create Notes from Voice - Record and automatically structure notes
- View, Edit, and Delete notes with intuitive interface
- Search Functionality - Find notes quickly
- Filter Options:
- All notes
- Recent (last 7 days)
- Favorites
- Favorite System - Mark important notes for quick access
- Note Detail View - Full content with audio playback
- Word Count - Track note length
- Tags & Categories - Organize notes efficiently
- Voice-Controlled Payment Entry - Speak your payments naturally
- Automatic Detail Extraction:
- Amount and currency (USD, EUR, EGP, SAR, AED, JPY, CNY, INR)
- Due date with intelligent parsing
- Payment type (toPay/toReceive)
- Category classification
- Recurring payment detection
- Payment Management:
- View all payments
- Filter by type (toPay/toReceive)
- Filter by status (due, upcoming, overdue, paid)
- Monthly summaries
- Payment detail view
- Recurring Payments - Automatic next occurrence calculation
- Multi-Currency Support - Track payments in different currencies
- Voice-Controlled Event Creation - Speak your events naturally
- Calendar View - Visual calendar with event markers
- Event Details:
- Title and description
- Date and time (with time parsing)
- Location (optional)
- Attendee count (optional)
- Recurring Events - Support for daily, weekly, monthly, yearly
- Event Views:
- Calendar view
- Upcoming events
- Filter by month
- Filter by status
- Event Status - Track completed, cancelled, and upcoming events
- Hive Database - Fast, lightweight NoSQL database
- Offline-First Architecture - Works without internet connection
- User-Specific Storage - Complete data isolation per authenticated user
- Persistent Storage - Data survives app restarts
- Efficient Queries - Fast search and filtering
- Modern Material Design with custom color scheme
- Dark/Light Theme support with system preference detection
- Smooth Animations - Polished user experience
- Responsive Layout - Adapts to all screen sizes
- Intuitive Navigation - Easy-to-use interface
- Color-Coded Features:
- Purple for Notes
- Red for Payments
- Green for Events
- Empty States - Helpful guidance when no data exists
- Loading States - Clear feedback during processing
| Splash Screen | Onboarding | Sign In |
|---|---|---|
![]() |
![]() |
![]() |
| Sign Up | Forgot Password | Home Screen |
|---|---|---|
![]() |
![]() |
![]() |
| Notes Screen | Note Detail | Recording Screen |
|---|---|---|
![]() |
![]() |
![]() |
| Payments Screen | Payment Detail | Events Screen |
|---|---|---|
![]() |
![]() |
![]() |
| Event Detail | Profile Screen |
|---|---|
![]() |
![]() |
- Flutter 3.9+ - Cross-platform UI framework
- Dart 3.9+ - Programming language
- flutter_bloc 9.1.1 - State management (BLoC pattern)
- provider 6.1.5+1 - State management for theme
- lottie 3.3.2 - Animations
- table_calendar 3.1.2 - Calendar widget
- Firebase - Backend as a Service
- Firebase Authentication - Email/password authentication
- Cloud Firestore - Cloud database (optional, primarily uses local storage)
- Google Cloud APIs:
- Google Speech-to-Text API - Audio transcription
- Google Gemini API - AI-powered text processing
- Service Account Authentication - Secure API access
- Hive 2.2.3 - Fast NoSQL database
- Hive Flutter 1.1.0 - Flutter integration
- SharedPreferences 2.5.3 - Simple key-value storage
- BLoC Pattern - Business Logic Component for state management
- Clean Architecture - Separation of concerns (Domain, Data, Presentation)
- Repository Pattern - Data abstraction layer
- Dependency Injection - Injectable & GetIt
- Use Case Pattern - Business logic encapsulation
- record 5.2.1 - Audio recording
- speech_to_text 7.0.0 - Local speech recognition (for language detection)
- permission_handler 11.3.1 - Runtime permissions
- just_audio 0.9.40 - Audio playback
- injectable 2.7.0 - Dependency injection code generation
- get_it 9.1.1 - Service locator
- equatable 2.0.7 - Value equality
- dartz 0.10.1 - Functional programming (Either type)
- uuid 4.5.2 - Unique ID generation
- intl 0.19.0 - Internationalization
- http 1.6.0 - HTTP client
- googleapis 15.0.0 - Google APIs client
- googleapis_auth 2.0.0 - Google API authentication
- google_generative_ai 0.4.0 - Gemini AI SDK
vnote/
βββ lib/
β βββ core/
β β βββ auth/ # Authentication logic
β β β βββ entities/ # User entity
β β β βββ exceptions/ # Auth exceptions
β β β βββ repositories/ # Auth repository contract
β β β βββ usecases/ # Auth use cases
β β βββ constants/ # App constants
β β β βββ app_colors.dart # Color definitions
β β β βββ app_strings.dart # String constants
β β β βββ app_typography.dart # Typography styles
β β β βββ currencies.dart # Currency definitions
β β β βββ payment_categories.dart
β β βββ di/ # Dependency Injection
β β β βββ di.dart # DI configuration
β β β βββ di.config.dart # Generated DI code
β β β βββ register_module.dart # External dependencies
β β βββ errors/ # Error handling
β β β βββ exceptions.dart # Custom exceptions
β β β βββ failures.dart # Domain failures
β β βββ services/ # Core services
β β β βββ auth_service.dart
β β β βββ data_migration_service.dart
β β β βββ onboarding_service.dart
β β βββ theme/ # Theme configuration
β β β βββ app_theme.dart # Theme definitions
β β β βββ theme_provider.dart # Theme state management
β β βββ utils/ # Utilities
β β βββ page_transitions.dart
β β
β βββ data/
β β βββ auth/ # Auth data layer
β β β βββ datasources/ # Auth data sources
β β β βββ models/ # Auth models
β β β βββ repositories/ # Auth repository implementation
β β βββ datasources_contracts/ # Data source interfaces
β β β βββ google_speech_service.dart
β β β βββ llm_datasource.dart
β β β βββ transcription_datasource.dart
β β β βββ payment_llm_datasource.dart
β β β βββ event_llm_datasource.dart
β β βββ datasource_impl/ # Data source implementations
β β β βββ google_speech_service_impl.dart
β β β βββ transcription_datasource_impl.dart
β β β βββ llm_datasource_impl.dart
β β β βββ payment_llm_datasource_impl.dart
β β β βββ event_llm_datasource_impl.dart
β β βββ models/ # Data models (Hive adapters)
β β β βββ note_model.dart
β β β βββ payment_model.dart
β β β βββ event_model.dart
β β βββ repositories/ # Repository implementations
β β βββ notes_repository_impl.dart
β β βββ payments_repository_impl.dart
β β βββ events_repository_impl.dart
β β βββ audio_repository_impl.dart
β β
β βββ domain/
β β βββ entities/ # Domain entities
β β β βββ note.dart
β β β βββ payment.dart
β β β βββ event.dart
β β β βββ recording.dart
β β β βββ processed_note.dart
β β β βββ processed_payment.dart
β β β βββ processed_event.dart
β β βββ repositories/ # Repository contracts
β β β βββ notes_repository.dart
β β β βββ payments_repository.dart
β β β βββ events_repository.dart
β β β βββ audio_repository.dart
β β βββ usecases/ # Use cases
β β βββ notes/
β β βββ payments/
β β βββ events/
β β βββ recording/
β β
β βββ presentation/
β β βββ auth/ # Authentication UI
β β β βββ cubit/ # Auth state management
β β β βββ screens/ # Auth screens
β β β βββ widgets/ # Auth widgets
β β βββ cubit/ # State management
β β β βββ notes/
β β β βββ payments/
β β β βββ events/
β β β βββ recording/
β β βββ screens/ # UI screens
β β β βββ home_screen/
β β β βββ notes/
β β β βββ payments/
β β β βββ events/
β β β βββ recording/
β β β βββ onboarding_screens/
β β β βββ splash_screen/
β β β βββ permission/
β β βββ widgets/ # Reusable widgets
β β
β βββ firebase_options.dart # Firebase configuration
β βββ main.dart # App entry point
β
βββ assets/
β βββ ScreenShots/ # App screenshots
β β βββ Splash_Screen.png
β β βββ OnBoarding_Screen.png
β β βββ SignIn_Screen.png
β β βββ SignUp_Screen.png
β β βββ Forget_Password_Screen.png
β β βββ Home_Screen.png
β β βββ Notes_Screen.png
β β βββ Notes_Details_Screen.png
β β βββ Recording_Screen.png
β β βββ Payment_Screen.png
β β βββ Payment_Details_Screen.png
β β βββ Events_Screen.png
β β βββ Events_Details_Screen.png
β β βββ Profile_Screen.png
β βββ splash_screen/ # Splash screen animations
β βββ mic.json
β βββ voice.json
β
βββ docs/ # Comprehensive documentation
β βββ auth_remote_datasource_impl.md
β βββ auth_repository_impl.md
β βββ firebase_options.md
β βββ google_speech_service_impl.md
β βββ transcription_datasource_impl.md
β βββ llm_datasource_impl.md
β βββ payment_llm_datasource_impl.md
β βββ event_llm_datasource_impl.md
β
βββ assets/
β βββ ScreenShots/ # App screenshots
β β βββ Splash_Screen.png
β β βββ OnBoarding_Screen.png
β β βββ SignIn_Screen.png
β β βββ SignUp_Screen.png
β β βββ Forget_Password_Screen.png
β β βββ Home_Screen.png
β β βββ Notes_Screen.png
β β βββ Notes_Details_Screen.png
β β βββ Recording_Screen.png
β β βββ Payment_Screen.png
β β βββ Payment_Details_Screen.png
β β βββ Events_Screen.png
β β βββ Events_Details_Screen.png
β β βββ Profile_Screen.png
β βββ splash_screen/ # Splash screen animations
β
βββ test/ # Unit & Widget Tests
βββ pubspec.yaml # Dependencies
βββ GOOGLE_APIS_DOCUMENTATION.md # Google APIs guide
βββ README.md # This file
- Flutter SDK (3.9.2 or higher)
- Dart SDK (3.9.2 or higher)
- Android Studio / VS Code with Flutter extensions
- Firebase Account (free tier available)
- Google Cloud Account (for Speech-to-Text and Gemini APIs)
-
Clone the repository
git clone <repository-url> cd vnote
-
Install dependencies
flutter pub get
-
Setup Firebase
- Create a new project on Firebase Console
- Enable Authentication with Email/Password provider
- Enable Cloud Firestore (optional, app primarily uses local storage)
- Add your app (Android/iOS/Web) and download configuration files
- Run FlutterFire CLI to generate
firebase_options.dart:flutterfire configure
-
Setup Google Cloud APIs
- Create a project on Google Cloud Console
- Enable Cloud Speech-to-Text API
- Enable Generative AI API (for Gemini)
- Create a Service Account:
- Go to IAM & Admin > Service Accounts
- Create new service account
- Grant "Cloud Speech-to-Text API User" and "Generative AI User" roles
- Create JSON key and download
- Place the JSON key in
assets/google_credentials.json - Get your Gemini API Key from Google AI Studio
-
Configure API Keys
Update
lib/core/config/app_config.dart:class AppConfig { static const String geminiApiKey = 'YOUR_GEMINI_API_KEY'; static const String geminiModel = 'gemini-2.5-flash'; }
-
Update Assets
Ensure
pubspec.yamlincludes:flutter: assets: - assets/splash_screen/ - assets/google_credentials.json
-
Run code generation
flutter pub run build_runner build --delete-conflicting-outputs
-
Run the app
flutter run
- Minimum SDK: 21
- Add microphone permission to
AndroidManifest.xml:<uses-permission android:name="android.permission.RECORD_AUDIO" />
- Minimum iOS: 12.0
- Add microphone permission to
Info.plist:<key>NSMicrophoneUsageDescription</key> <string>VOYA needs microphone access to record voice notes</string>
VOYA follows Clean Architecture principles with BLoC pattern for state management:
βββββββββββββββββββββββββββββββββββββββββββ
β Presentation Layer β
β (UI, Widgets, BLoC/Cubit) β
β - Screens, Widgets β
β - State Management (BLoC) β
β - User Interactions β
ββββββββββββββββ¬βββββββββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββββββββββββββ
β Domain Layer β
β (Business Logic) β
β - Entities β
β - Use Cases β
β - Repository Contracts β
ββββββββββββββββ¬βββββββββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββββββββββββββ
β Data Layer β
β (Data Sources & Repositories) β
β - Repository Implementations β
β - Data Sources (APIs, Local Storage) β
β - Models (Hive Adapters) β
ββββββββββββββββ¬βββββββββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββββββββββββββ
β External Services β
β - Firebase (Auth, Firestore) β
β - Google Speech-to-Text API β
β - Google Gemini API β
β - Hive (Local Database) β
βββββββββββββββββββββββββββββββββββββββββββ
- BLoC Pattern - Separates business logic from UI
- Repository Pattern - Abstracts data sources
- Dependency Injection - Loose coupling, easy testing
- Use Case Pattern - Encapsulates business logic
- Clean Architecture - Separation of concerns across layers
-
User Records Audio
RecordingCubit.startRecording()StartRecordingUseCaseAudioRepository.startRecording()- Audio saved locally
-
User Stops Recording
RecordingCubit.stopRecording()StopRecordingUseCase- Creates
Recordingentity
-
Transcribe Audio
TranscribeAudioUseCaseGoogleSpeechService.transcribeAudio()- Google Speech-to-Text API
- Returns transcription text
-
Process with AI
ProcessTranscriptionUseCaseLLMDataSource.processTranscription()- Google Gemini API
- Returns
ProcessedNote(title, bullets, tags, summary)
-
Create Note
CreateNoteUseCaseNotesRepository.createNote()- Saved to Hive database
dependencies:
flutter:
sdk: flutter
# State Management
flutter_bloc: ^9.1.1
provider: ^6.1.5+1
# Firebase
firebase_core: ^3.6.0
firebase_auth: ^5.3.1
cloud_firestore: ^5.4.4
# Google APIs
googleapis: ^15.0.0
googleapis_auth: ^2.0.0
google_generative_ai: ^0.4.0
# Local Storage
hive: ^2.2.3
hive_flutter: ^1.1.0
shared_preferences: ^2.5.3
# Dependency Injection
injectable: ^2.7.0
get_it: ^9.1.1
# Audio
record: ^5.2.1
speech_to_text: ^7.0.0
just_audio: ^0.9.40
# Utilities
equatable: ^2.0.7
dartz: ^0.10.1
uuid: ^4.5.2
intl: ^0.19.0
permission_handler: ^11.3.1
table_calendar: ^3.1.2
lottie: ^3.3.2
animated_splash_screen: ^1.3.0
smooth_page_indicator: ^1.2.1
font_awesome_flutter: ^10.12.0
http: ^1.6.0
dev_dependencies:
flutter_test:
sdk: flutter
build_runner: ^2.4.7
injectable_generator: ^2.6.2
hive_generator: ^2.0.1
flutter_lints: ^5.0.0Comprehensive documentation is available in the docs/ directory:
- Firebase Authentication Data Source - Complete guide to Firebase Auth implementation
- Auth Repository - Clean Architecture pattern for authentication
- Firebase Options - Platform-specific Firebase configuration
- Google Speech-to-Text Service - Audio transcription implementation
- Transcription Data Source - Multi-language transcription wrapper
- LLM Data Source (Notes) - AI-powered note processing
- Payment LLM Data Source - Payment extraction from voice
- Event LLM Data Source - Event extraction from voice
- Google APIs Documentation - Complete guide to Google Cloud APIs integration
Each documentation file includes:
- Detailed code walkthrough
- Design decisions and rationale
- Error handling strategies
- Configuration requirements
- Testing considerations
- Future improvements
# Run all tests
flutter test
# Run tests with coverage
flutter test --coverage
# Run specific test file
flutter test test/unit/auth_cubit_test.dart- Unit Tests - Test business logic (Use Cases, Repositories)
- Widget Tests - Test UI components
- Integration Tests - Test complete user flows
- Mock Services - Mock external APIs for testing
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add some amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow Effective Dart guidelines
- Use meaningful variable and function names
- Add comments for complex logic
- Write tests for new features
- Follow Clean Architecture principles
- Use BLoC pattern for state management
- Offline AI Processing - Local LLM for complete offline functionality
- Voice Commands - Natural language commands for app navigation
- Export Features - Export notes, payments, events to PDF/CSV
- Cloud Sync - Optional cloud backup with Firestore
- Multi-Account Support - Switch between multiple accounts
- Advanced Search - Full-text search with filters
- Reminders & Notifications - Push notifications for payments and events
- Statistics & Analytics - Spending trends, note frequency, etc.
- Voice Templates - Custom voice command templates
- Collaboration - Share notes and events with others
- Dark Mode Enhancements - More theme customization
- Accessibility - Screen reader support and accessibility features
- Google OAuth requires additional setup for iOS
- Some long transcriptions may take time to process
- Recurring payment/event calculations may need refinement for edge cases
- Large audio files (>10MB) require asynchronous processing
Please report issues on our GitHub Issues page.
This project is licensed under the MIT License - see the LICENSE file for details.
Marwan
- GitHub: @Marwan1137
- Email: marwan.hakil79@gmail.com
- Flutter Team - For the amazing cross-platform framework
- Firebase Team - For the powerful backend platform
- Google Cloud Team - For Speech-to-Text and Gemini APIs
- BLoC Community - For excellent state management patterns
- Open Source Contributors - For their invaluable packages
- Clean Architecture Community - For architectural best practices
If you like this project, please consider:
- β Starring the repository
- π Reporting bugs
- π‘ Suggesting new features
- π€ Contributing to the codebase
- π’ Sharing with others
Made with π€ and β€οΈ for Productivity Enthusiasts













