Skip to content

Latest commit

Β 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎀 VOYA - Your Voice-Controlled Productivity Companion

VOYA Logo

One voice. Total control.

Flutter Dart Firebase Google Cloud License

Features β€’ Screenshots β€’ Installation β€’ Architecture β€’ Documentation β€’ Contributing


πŸ“– About VOYA

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.

🎯 Mission

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.

πŸ’‘ Key Highlights

  • 🎀 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

✨ Features

πŸ” Authentication & User Management

  • 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

🎀 Voice Recording & Transcription

  • 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

πŸ€– AI-Powered Processing

  • 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

πŸ“ Notes Management

  • 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

πŸ’° Payment Tracking

  • 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

πŸ“… Event Management

  • 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

πŸ’Ύ Local Storage

  • 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

🎨 Beautiful UI/UX

  • 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

πŸ“± Screenshots

Splash Screen Onboarding Sign In
Splash Screen Onboarding Sign In
Sign Up Forgot Password Home Screen
Sign Up Forgot Password Home
Notes Screen Note Detail Recording Screen
Notes Note Detail Recording
Payments Screen Payment Detail Events Screen
Payments Payment Detail Events
Event Detail Profile Screen
Event Detail Profile

πŸ› οΈ Tech Stack

Frontend

  • 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

Backend & Services

  • 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

Local Storage

  • Hive 2.2.3 - Fast NoSQL database
  • Hive Flutter 1.1.0 - Flutter integration
  • SharedPreferences 2.5.3 - Simple key-value storage

Architecture & Patterns

  • 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

Audio & Permissions

  • 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

Utilities

  • 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

πŸ“ Project Structure

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

πŸš€ Getting Started

Prerequisites

  • 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)

Installation

  1. Clone the repository

    git clone <repository-url>
    cd vnote
  2. Install dependencies

    flutter pub get
  3. 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
  4. 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
  5. 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';
    }
  6. Update Assets

    Ensure pubspec.yaml includes:

    flutter:
      assets:
        - assets/splash_screen/
        - assets/google_credentials.json
  7. Run code generation

    flutter pub run build_runner build --delete-conflicting-outputs
  8. Run the app

    flutter run

Platform-Specific Setup

Android

  • Minimum SDK: 21
  • Add microphone permission to AndroidManifest.xml:
    <uses-permission android:name="android.permission.RECORD_AUDIO" />

iOS

  • Minimum iOS: 12.0
  • Add microphone permission to Info.plist:
    <key>NSMicrophoneUsageDescription</key>
    <string>VOYA needs microphone access to record voice notes</string>

πŸ—οΈ Architecture

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)                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Design Patterns

  • 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

Data Flow Example: Voice Note Creation

  1. User Records Audio

    • RecordingCubit.startRecording()
    • StartRecordingUseCase
    • AudioRepository.startRecording()
    • Audio saved locally
  2. User Stops Recording

    • RecordingCubit.stopRecording()
    • StopRecordingUseCase
    • Creates Recording entity
  3. Transcribe Audio

    • TranscribeAudioUseCase
    • GoogleSpeechService.transcribeAudio()
    • Google Speech-to-Text API
    • Returns transcription text
  4. Process with AI

    • ProcessTranscriptionUseCase
    • LLMDataSource.processTranscription()
    • Google Gemini API
    • Returns ProcessedNote (title, bullets, tags, summary)
  5. Create Note

    • CreateNoteUseCase
    • NotesRepository.createNote()
    • Saved to Hive database

πŸ“¦ Dependencies

Core Dependencies

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.0

πŸ“š Documentation

Comprehensive documentation is available in the docs/ directory:

Firebase Services

Google API Services

Additional Documentation

Each documentation file includes:

  • Detailed code walkthrough
  • Design decisions and rationale
  • Error handling strategies
  • Configuration requirements
  • Testing considerations
  • Future improvements

πŸ§ͺ Testing

# Run all tests
flutter test

# Run tests with coverage
flutter test --coverage

# Run specific test file
flutter test test/unit/auth_cubit_test.dart

Testing Strategy

  • 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

🀝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Commit your changes
    git commit -m 'Add some amazing feature'
  4. Push to the branch
    git push origin feature/amazing-feature
  5. Open a Pull Request

Code Style

  • 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

πŸ“ Roadmap

  • 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

πŸ› Known Issues

  • 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.


πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘¨β€πŸ’» Author

Marwan


πŸ™ Acknowledgments

  • 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

πŸ“ž Support

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

⬆ Back to Top

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages