Skip to content

hemchdev/Aura

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

50 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Aura - AI-Powered Personal Assistant

Aura Logo

An intelligent, voice-controlled personal assistant app

Made with Expo React Native TypeScript Supabase

An intelligent mobile assistant app built with React Native and Expo that provides voice-controlled calendar management, reminders, and smart notifications with cross-platform compatibility. Powered by Google Gemini AI for natural language processing and featuring a modern, responsive UI with dark/light mode support.

🌟 Features

πŸŽ™οΈ Voice Assistant

  • Natural Language Processing: Powered by Google Gemini AI for intelligent conversation
  • Cross-Platform Speech Recognition: Works on Android, iOS, and Web
  • Voice Commands: Create, update, and delete events/reminders using voice
  • Speech Feedback: Text-to-speech responses for accessibility

πŸ“… Calendar Management

  • Smart Event Creation: AI-powered event scheduling with natural language
  • Calendar Integration: Seamless integration with device calendar
  • Conflict Detection: Intelligent scheduling to avoid overlapping events
  • Event CRUD Operations: Full create, read, update, delete functionality

πŸ”” Smart Notifications

  • Intelligent Scheduling: Automated reminder notifications
  • Interactive Notifications: Reply and interact directly from notifications
  • Background Processing: Reliable notification delivery
  • Custom Categories: Organized notification types

🎨 User Experience

  • Dark/Light Mode: Automatic theme switching with system preference
  • Responsive Design: Optimized for all screen sizes and orientations
  • Smooth Animations: Polished UI transitions and interactions
  • Error Boundaries: Graceful error handling with user-friendly messages

πŸ” Authentication & Security

  • OTP-Based Authentication: Secure email-based sign-in/sign-up
  • Profile Management: Customizable user profiles with settings
  • Session Management: Secure session handling across devices
  • Privacy-First: No password storage, secure token-based auth

πŸ› οΈ Tech Stack

Category Technology
Framework React Native with Expo SDK 53
Navigation Expo Router with typed routes
Database Supabase (PostgreSQL) with RLS
AI/ML Google Gemini Pro API
Speech @react-native-voice/voice
Notifications expo-notifications
State Management Zustand
Styling React Native StyleSheet + Custom Theme
Development TypeScript, ESLint, Metro
Build/Deploy EAS Build, Expo Dev Client

πŸ“‹ Prerequisites

Before getting started, ensure you have the following installed:

  • Node.js 18+ (Download)
  • Package Manager: npm, yarn, or pnpm
  • Expo CLI: Install globally with npm install -g @expo/cli
  • Git: For version control
  • Code Editor: VS Code recommended with React Native extensions

For Local Development:

  • Android: Android Studio + Android SDK 34+ (for Android builds)
  • iOS: Xcode 15+ and Command Line Tools (macOS only, for iOS builds)
  • EAS Account: Sign up for cloud builds (recommended)

For Testing:

  • Physical Device: Expo Go app for quick testing
  • Emulator/Simulator: Android Virtual Device (AVD) or iOS Simulator

πŸš€ Quick Start

1. Clone and Install

# Clone the repository
git clone <repository-url>
cd Aura

# Install dependencies
npm install
# or
yarn install

2. Environment Setup

Create a .env file in the root directory with the following variables:

# Supabase Configuration
EXPO_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
EXPO_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key

# Google Gemini API
EXPO_PUBLIC_GEMINI_API_KEY=your_gemini_api_key

⚠️ Important: Never commit your .env file to version control. Add it to .gitignore.

Getting Your API Keys:

  • Supabase:

    1. Create account at supabase.com
    2. Create new project
    3. Go to Settings β†’ API to find your URL and anon key
  • Google Gemini:

    1. Visit Google AI Studio
    2. Create API key for Gemini Pro
    3. Enable Generative Language API in Google Cloud Console

3. Supabase Database Setup

  1. Create a Supabase project at supabase.com

  2. Set up database schema by running the SQL migrations:

    -- Navigate to Supabase Dashboard β†’ SQL Editor
    -- Copy and execute the SQL from supabase/migrations/ files:
    
    -- 1. First run: 20250629140123_muddy_sound.sql
    -- 2. Then run: fix_delete_policies.sql
  3. Configure Row Level Security (RLS):

    • Tables profiles, events, reminders should have RLS enabled
    • Policies allow users to access only their own data
    • Authentication required for all operations
  4. Test the connection:

    # Verify connection in your app
    npx expo start
    # Check for connection errors in development tools

4. Google Gemini API Setup

  1. Get API Key from Google AI Studio
  2. Enable APIs in Google Cloud Console:
    • Generative Language API
    • (Optional) Cloud Translation API for multi-language support
  3. Set usage quotas to prevent unexpected charges
  4. Test API access:
    curl -X POST \
      -H "Content-Type: application/json" \
      -d '{"contents":[{"parts":[{"text":"Hello"}]}]}' \
      "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=YOUR_API_KEY"

5. Run the App

# Start development server
npx expo start
# or with yarn
yarn expo start

# Run on specific platforms
npx expo start --android     # Android emulator/device
npx expo start --ios         # iOS simulator/device  
npx expo start --web         # Web browser

# Build and run locally (requires native setup)
npx expo run:android         # Local Android build
npx expo run:ios            # Local iOS build (macOS only)

# Clear cache if needed
npx expo start --clear

First Time Setup

  1. Install Expo Go app on your mobile device
  2. Scan QR code from the terminal
  3. Or use emulator/simulator for testing
  4. Enable permissions when prompted (microphone, notifications)

Troubleshooting First Run

  • If you see metro bundler errors, try npx expo install --fix
  • For Android: Ensure USB debugging is enabled
  • For iOS: Trust the developer certificate in Settings
  • For web: Use a modern browser (Chrome, Firefox, Safari)

πŸ—οΈ Project Structure

Aura/
β”œβ”€β”€ πŸ“± app/                          # App screens (Expo Router)
β”‚   β”œβ”€β”€ (auth)/                      # Authentication flow
β”‚   β”‚   β”œβ”€β”€ index.tsx               # Sign-in screen
β”‚   β”‚   └── sign-up.tsx             # Sign-up screen
β”‚   β”œβ”€β”€ (tabs)/                      # Main app tabs
β”‚   β”‚   β”œβ”€β”€ index.tsx               # AI Assistant tab
β”‚   β”‚   β”œβ”€β”€ calendar.tsx            # Calendar management
β”‚   β”‚   β”œβ”€β”€ reminders.tsx           # Reminders list
β”‚   β”‚   └── settings.tsx            # User settings
β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   └── confirm.tsx             # OTP confirmation
β”‚   β”œβ”€β”€ _layout.tsx                 # Root layout with providers
β”‚   β”œβ”€β”€ index.tsx                   # App entry point
β”‚   └── +not-found.tsx              # 404 error page
β”‚
β”œβ”€β”€ 🧩 components/                   # Reusable UI components
β”‚   └── ErrorBoundary.tsx           # Error boundary component
β”‚
β”œβ”€β”€ 🎨 constants/                    # App constants
β”‚   └── Colors.ts                   # Theme color definitions
β”‚
β”œβ”€β”€ πŸͺ hooks/                       # Custom React hooks
β”‚   β”œβ”€β”€ useColors.ts                # Theme color hook
β”‚   β”œβ”€β”€ useFrameworkReady.ts        # Framework initialization
β”‚   └── useResponsiveScreen.ts      # Responsive design utilities
β”‚
β”œβ”€β”€ πŸ“š lib/                         # Core business logic
β”‚   β”œβ”€β”€ assistantCalendarService.ts # AI calendar operations
β”‚   β”œβ”€β”€ gemini.ts                   # Google Gemini integration
β”‚   β”œβ”€β”€ notificationService.ts      # Notification management
β”‚   β”œβ”€β”€ platformUtils.ts            # Platform-specific utilities
β”‚   β”œβ”€β”€ speech.ts                   # Text-to-speech service
β”‚   β”œβ”€β”€ speechRecognition.ts        # Speech-to-text service
β”‚   └── supabase.ts                 # Supabase client
β”‚
β”œβ”€β”€ πŸ”Œ plugins/                     # Expo config plugins
β”‚   └── withAndroidManifestFix.js   # Android build fixes
β”‚
β”œβ”€β”€ πŸͺ stores/                      # State management (Zustand)
β”‚   β”œβ”€β”€ useAuthStore.ts             # Authentication state
β”‚   └── useThemeStore.ts            # Theme state
β”‚
β”œβ”€β”€ πŸ—„οΈ supabase/                    # Database schema
β”‚   └── migrations/                 # SQL migration files
β”‚
β”œβ”€β”€ πŸ“ types/                       # TypeScript definitions
β”‚   β”œβ”€β”€ database.ts                 # Database types
β”‚   └── web-speech.d.ts            # Speech API types
β”‚
β”œβ”€β”€ 🎯 assets/                      # Static assets
β”‚   └── images/                     # App icons and images
β”‚
β”œβ”€β”€ βš™οΈ Configuration Files
β”œβ”€β”€ app.json                        # Expo configuration
β”œβ”€β”€ eas.json                        # EAS Build configuration
β”œβ”€β”€ package.json                    # Dependencies and scripts
β”œβ”€β”€ tsconfig.json                   # TypeScript configuration
└── metro.config.js                 # Metro bundler configuration

πŸ”§ Development

Available Scripts

# Development
yarn dev                    # Start Expo dev server (alias for expo start)
yarn expo start            # Start development server
yarn android               # Run on Android device/emulator
yarn ios                   # Run on iOS device/simulator

# Building & Deployment
yarn build:web             # Build optimized web bundle
yarn lint                  # Run ESLint code analysis

# EAS Build (Cloud Building)
eas build --platform android    # Build Android APK/AAB
eas build --platform ios        # Build iOS IPA
eas build --platform all        # Build for both platforms
eas submit                       # Submit to app stores

# Development Tools
expo doctor                      # Check development environment
expo install --fix              # Fix dependency compatibility
npx expo start --clear          # Clear Metro cache and restart

EAS Build Configuration

The project includes optimized EAS build profiles in eas.json:

{
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal",
      "android": { "buildType": "apk" }
    },
    "production": {
      "android": { "buildType": "aab" }
    }
  }
}

Key Development Features

  • Hot Reloading: Instant code updates during development
  • TypeScript: Full type safety and IntelliSense
  • Error Boundaries: Graceful error handling in production
  • Cross-Platform: Single codebase for Android, iOS, and Web
  • EAS Build: Cloud-based building and deployment

πŸ›οΈ Architecture

System Overview

graph TB
    A[React Native App] --> B[Expo Router]
    B --> C[Authentication Layer]
    C --> D[Main App Tabs]
    
    D --> E[AI Assistant]
    D --> F[Calendar]
    D --> G[Reminders]
    D --> H[Settings]
    
    E --> I[Speech Recognition]
    E --> J[Gemini AI]
    E --> K[Text-to-Speech]
    
    F --> L[Calendar Service]
    G --> M[Notification Service]
    
    I --> N[Voice Processing]
    J --> O[Natural Language Understanding]
    K --> P[Audio Output]
    
    L --> Q[Supabase Database]
    M --> Q
    C --> Q
    
    Q --> R[Row Level Security]
    Q --> S[Real-time Subscriptions]
Loading

Data Flow

  1. User Input β†’ Voice or text input received
  2. Speech Processing β†’ Convert speech to text (if voice)
  3. AI Processing β†’ Gemini AI analyzes intent and entities
  4. Action Execution β†’ Perform calendar/reminder operations
  5. Database Update β†’ Store changes in Supabase
  6. UI Update β†’ Reflect changes in real-time
  7. Notification β†’ Schedule relevant reminders
  8. Voice Feedback β†’ Provide audio confirmation

Security Architecture

  • Authentication: OTP-based, passwordless authentication
  • Authorization: Row Level Security (RLS) in Supabase
  • Data Encryption: HTTPS for all communications
  • Local Storage: Expo SecureStore for sensitive data
  • API Security: Environment variables for API keys
  • Input Validation: Client and server-side validation

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors