Skip to content

AudioScholar is an intelligent application that supports both mobile and web platforms. The mobile app (developed using Android Kotlin) allows users to record audio in real-time, while the web platform (developed with ReactJS) provides users the ability to upload pre-recorded audio files for summarization and content recommendations.

License

Notifications You must be signed in to change notification settings

MasuRii/IT342-G3-AudioScholar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ“ AudioScholar: Transforming Audio into Actionable Insights for Learners

AudioScholar is an intelligent, multi-user platform designed to enhance lecture note-taking and content comprehension for students. It records lecture audio and uses AI-driven summarization, cloud sync with Nhost, and video recommendation features to produce structured, actionable insights and personalized learning experiences β€” all accessible via web and mobile apps.

CITU Logo


πŸš€ Key Features

πŸ”Š Lecture Recording & Summarization

  • Record lectures via the mobile app.
  • AI generates structured summaries from captured audio.
  • Summaries are accessible across devices.

πŸ“€ Audio Upload

  • Upload existing audio files through the web or mobile interface.
  • Summaries auto-generate after processing.

πŸ“š AI-Powered Learning Recommendations

  • Automatically suggests relevant YouTube videos based on lecture content.

πŸ” User Authentication & Account Management

  • Register/Login via Firebase Authentication (Email/Password, Google OAuth, or GitHub OAuth).
  • Manage profiles and change passwords securely.
  • Feature access is controlled via a freemium model.

☁️ Cloud Synchronization

  • Sync recordings, summaries, and associated files to Nhost Storage (audio files) and Firebase Firestore (metadata, summaries).
  • Choose between manual or automatic syncing where applicable.
  • Data is accessible across authorized devices.

πŸ“Š PowerPoint Integration

  • Upload and associate PowerPoint presentations with lecture recordings.
  • Enhances summarization and context for lectures.

🌐 Web Interface

  • View uploaded recordings and summaries.
  • Upload audio files for summarization.
  • Access AI-generated learning resources.

βš™οΈ Setup Instructions

πŸ“Œ Prerequisites

Ensure the following tools are installed on your system:

  • Java Development Kit (JDK) 21
  • Node.js (v16+)
  • npm or yarn
  • Git
  • Maven (for backend)
  • Android Studio (Latest version)
  • Nhost Account (for cloud file storage - Nhost Cloud)
  • Firebase Account (for authentication and Firestore database - Firebase Console)

πŸ“ Cloning the Repository

git clone https://github.com/IT342-G3-AudioScholar/AudioScholar.git
cd AudioScholar

πŸ”§ Backend Setup (Spring Boot)

  1. Navigate to the backend:
    cd backend/audioscholar
  2. Set up environment variables and Firebase configuration: Create a .env file in the backend/audioscholar directory for secrets:
    # Nhost Storage Configuration
    NHOST_ADMIN_SECRET=your-nhost-admin-secret # Used by Spring Boot to access Nhost Storage
    
    # API Keys
    GEMINI_API_KEY=your-gemini-api-key
    YOUTUBE_API_KEY=your-youtube-api-key
    # Other secrets like JWT_SECRET, GOOGLE_CLIENT_ID/SECRET, GITHUB_CLIENT_ID/SECRET etc.
    # CONVERTAPI_SECRET=your-convertapi-secret
    # UPTIME_ROBOT_API=your-uptime-robot-api-key
    In backend/audioscholar/src/main/resources/application.properties:
    • Ensure nhost.storage.url is correctly set to your Nhost project's storage URL.
      # Example:
      # nhost.storage.url=https://your-nhost-project-subdomain.storage.your-nhost-region.nhost.run/v1/files
    • Configure Firebase Admin SDK by placing your firebase-service-account.json (downloaded from Firebase Console > Project settings > Service accounts) into the backend/audioscholar/src/main/resources/ directory.
    • The application.properties should have the following configured:
      spring.cloud.gcp.project-id=your-firebase-project-id
      firebase.service-account.file=firebase-service-account.json
      # Ensure other Firebase related properties like firebase.database.url (if using Realtime DB alongside Firestore, though Firestore is primary)
      # and collection names are correctly set.
    Note: Replace placeholders with your actual details.
  3. Run the backend:
    mvn spring-boot:run
    Or run AudioscholarApplication.java from your IDE. (Spring Boot version 3.4.5)

πŸ’» Web Frontend Setup (React + Vite)

  1. Navigate to the web app:
    cd frontend_web/audioscholar-app
  2. Install dependencies:
    npm install
  3. Create a .env file in frontend_web/audioscholar-app:
    # Backend API URL
    VITE_API_URL=http://localhost:8080
    
    # Firebase Frontend Configuration (Find these in your Firebase project dashboard > Project settings > General > Your apps)
    VITE_FIREBASE_API_KEY=your-firebase-api-key
    VITE_FIREBASE_AUTH_DOMAIN=your-firebase-auth-domain
    VITE_FIREBASE_PROJECT_ID=your-firebase-project-id
    VITE_FIREBASE_STORAGE_BUCKET=your-firebase-storage-bucket # Optional, if using Firebase Storage directly from frontend
    VITE_FIREBASE_MESSAGING_SENDER_ID=your-firebase-messaging-sender-id
    VITE_FIREBASE_APP_ID=your-firebase-app-id
    # VITE_FIREBASE_MEASUREMENT_ID=your-firebase-measurement-id # Optional
    Note: Ensure your React application is configured to use these Firebase environment variables.
  4. Run the development server:
    npm run dev
    (Uses Vite ~6.3.4, React ^19.0.0) Open at: http://localhost:3000 (or the port specified by Vite)

πŸ“± Mobile Frontend Setup (Kotlin + Android)

  1. Open Android Studio β†’ "Open an Existing Project"
  2. Navigate to:
    frontend_mobile/AudioScholar
    
  3. Sync Gradle files (Android Studio will prompt).
  4. Configure Firebase:
    • Download your google-services.json file from the Firebase Console (Project settings > General > Your apps > Android app).
    • Place the google-services.json file in the frontend_mobile/AudioScholar/app/ directory.
  5. Configure API Base URL: In frontend_mobile/AudioScholar/local.properties (create it if it doesn't exist in the project root or app/ directory). This file is typically ignored by Git.
    # Backend API URL (Use your machine's local network IP, not localhost, if running on a physical device)
    API_BASE_URL=http://your-local-network-ip:8080
    Note: Ensure your Android app (e.g., Ktor client configuration) reads this API_BASE_URL.
  6. Run on an emulator or physical device. Ensure the device can reach your API_BASE_URL.

🧭 Example Workflow

  1. Register or log in using Firebase Authentication (Email/Password or OAuth).
  2. Record a lecture using the mobile app. Audio is uploaded (typically via the backend) to Nhost Storage.
  3. Wait for AI processing (backend fetches audio from Nhost, processes, stores results and metadata in Firebase Firestore).
  4. View the summary on web or mobile under My Lectures (data fetched from your backend, which interacts with Firebase Firestore for metadata/summaries and Nhost for audio files).
  5. Access recommended YouTube videos for deeper learning.

🧩 Dependencies

Backend

  • Spring Boot 3.4.5
  • Nhost Interaction: Via REST APIs to Nhost Storage (using URL configured in application.properties and NHOST_ADMIN_SECRET).
  • Firebase Admin SDK: For interacting with Firebase Firestore (database).
  • See full list in pom.xml

Web Frontend

  • React 19
  • Vite ~6.3.4
  • Firebase SDK (firebase package) for authentication and Firestore database access.
  • Interaction with Nhost Storage is likely handled via the backend.
  • See full list in package.json

Mobile Frontend

  • Kotlin + Jetpack Compose
  • AndroidX
  • Firebase SDKs (e.g., firebase-auth-ktx, potentially firebase-firestore-ktx or using the BOM for Firestore) for authentication and database access.
  • Ktor client: For network requests to the backend. The backend then interacts with Nhost Storage.
  • See configurations in build.gradle.kts (app level) and ensure google-services.json is correctly set up.

πŸ§ͺ Features Outside Initial Scope (Planned for Future Releases)

Feature Status
Real-time Transcription 🚫 Not yet implemented
iOS Mobile Support 🚫 Not yet supported
Web Audio Recording 🚫 Not yet supported
Multi-language Support 🚫 English only for v1.0
Background Recording (Free Users) 🚫 Not supported
Recommendation Engine beyond YouTube 🚫 Future feature
Premium Subscription Management 🚫 Planned

🎨 Design & Documentation


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

Proponents:

  • Biacolo, Math Lee L.
  • Terence, John Duterte
  • Orlanes, John Nathan

Adviser:

  • Frederick L. Revilleza

πŸ“¬ Contact

For issues, suggestions, or collaboration inquiries, feel free to open an issue or contact the development team.


βœ… AudioScholar β€” Empowering learners through intelligent audio insights.

About

AudioScholar is an intelligent application that supports both mobile and web platforms. The mobile app (developed using Android Kotlin) allows users to record audio in real-time, while the web platform (developed with ReactJS) provides users the ability to upload pre-recorded audio files for summarization and content recommendations.

Resources

License

Stars

Watchers

Forks

Contributors 5