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.
- Record lectures via the mobile app.
- AI generates structured summaries from captured audio.
- Summaries are accessible across devices.
- Upload existing audio files through the web or mobile interface.
- Summaries auto-generate after processing.
- Automatically suggests relevant YouTube videos based on lecture content.
- 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.
- 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.
- Upload and associate PowerPoint presentations with lecture recordings.
- Enhances summarization and context for lectures.
- View uploaded recordings and summaries.
- Upload audio files for summarization.
- Access AI-generated learning resources.
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)
git clone https://github.com/IT342-G3-AudioScholar/AudioScholar.git
cd AudioScholar
- Navigate to the backend:
cd backend/audioscholar
- Set up environment variables and Firebase configuration:
Create a
.env
file in thebackend/audioscholar
directory for secrets:In# 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
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 thebackend/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.
- Ensure
- Run the backend:
Or run
mvn spring-boot:run
AudioscholarApplication.java
from your IDE. (Spring Boot version3.4.5
)
- Navigate to the web app:
cd frontend_web/audioscholar-app
- Install dependencies:
npm install
- Create a
.env
file infrontend_web/audioscholar-app
:Note: Ensure your React application is configured to use these Firebase environment variables.# 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
- Run the development server:
(Uses Vite
npm run dev
~6.3.4
, React^19.0.0
) Open at:http://localhost:3000
(or the port specified by Vite)
- Open Android Studio β "Open an Existing Project"
- Navigate to:
frontend_mobile/AudioScholar
- Sync Gradle files (Android Studio will prompt).
- 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 thefrontend_mobile/AudioScholar/app/
directory.
- Download your
- Configure API Base URL:
In
frontend_mobile/AudioScholar/local.properties
(create it if it doesn't exist in the project root orapp/
directory). This file is typically ignored by Git.Note: Ensure your Android app (e.g., Ktor client configuration) reads this# 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
API_BASE_URL
. - Run on an emulator or physical device. Ensure the device can reach your
API_BASE_URL
.
- Register or log in using Firebase Authentication (Email/Password or OAuth).
- Record a lecture using the mobile app. Audio is uploaded (typically via the backend) to Nhost Storage.
- Wait for AI processing (backend fetches audio from Nhost, processes, stores results and metadata in Firebase Firestore).
- 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).
- Access recommended YouTube videos for deeper learning.
- Spring Boot 3.4.5
- Nhost Interaction: Via REST APIs to Nhost Storage (using URL configured in
application.properties
andNHOST_ADMIN_SECRET
). - Firebase Admin SDK: For interacting with Firebase Firestore (database).
- See full list in
pom.xml
- 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
- Kotlin + Jetpack Compose
- AndroidX
- Firebase SDKs (e.g.,
firebase-auth-ktx
, potentiallyfirebase-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 ensuregoogle-services.json
is correctly set up.
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 |
-
Use Case & Activity Diagrams: View on Figma
-
Mobile Wireframes: View on Figma
-
Web Wireframes: View on Figma
-
Database Schema & ER Diagrams: View on Figma
Proponents:
- Biacolo, Math Lee L.
- Terence, John Duterte
- Orlanes, John Nathan
Adviser:
- Frederick L. Revilleza
For issues, suggestions, or collaboration inquiries, feel free to open an issue or contact the development team.
β AudioScholar β Empowering learners through intelligent audio insights.