Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

StudyGenieAI

An AI‑powered study assistant that automates your exam prep: scan notes, summarize, generate questions, and build study plans — all stored locally for offline access.

✨ Highlights

  • Vibrant, modern UI with gradient backgrounds and iconography (Material Icons)
  • Sticky bottom action bars keep primary actions visible while scrolling
  • Grid layouts for notes and plans with detail pages and full back stack support
  • Gemini (Firebase AI) integration for OCR, summarization, question generation, and planning
  • Local storage via Room (Notes, Questions, Study Plans)
  • MVVM + Coroutines + Jetpack Compose Navigation

🚀 Features

  1. Scan Notes (Image → Study Notes)

    • Pick an image (Photo Picker) and convert to structured study notes using Gemini
    • Preview image, generate notes, save locally, and generate questions
  2. Notes Summarization (Text → Exam Notes)

    • Paste long notes, get exam‑focused bullet summaries
  3. Question Generator (Notes → MCQs + Short Answers)

    • MCQs with options A–D, correct answer, and explanation
    • Short answers with concise ideal answers
    • Notes-first browsing in Question Bank → then per-note question lists → question detail with Next/Previous
  4. Syllabus → Study Plan

    • Paste syllabus; optionally set an exam date
    • Generates topic-wise plan with weekly breakdown and revision days
  5. Weekly Revision Planner

    • Generates week-wise revision checklist from topics/plans
  6. Local Data Storage (Room)

    • Entities: NoteEntity, QuestionEntity, StudyPlanEntity
    • CRUD operations via repositories

🧩 Tech Stack

  • Kotlin, Jetpack Compose (Material 3)
  • Architecture: MVVM
  • Navigation: Compose Navigation
  • Database: Room + KSP
  • Async: Coroutines/Flow
  • AI: Firebase AI (Google Gemini)

📱 UI Overview

  • HomeScreen: motivational gradient and large CTA buttons
  • ScanNotesScreen: bold gradient, preview card, sticky actions (Save, Generate Questions)
  • MyNotesScreen: 2‑column grid cards with created date (calendar icon) and delete icon; tap to open NoteDetail
  • NoteDetailScreen: full notes with sticky actions (Back, Generate Questions, Delete)
  • QuestionBankScreen: grid of notes → tap to see questions
  • QuestionsByNoteScreen: sections (MCQs / Short Answers), empty‑state with Generate button
  • QuestionDetailScreen: vibrant MCQ layout with highlighted answer, Next/Previous navigation
  • StudyPlanScreen: creation‑focused screen with gradient background, icon action to view past plans, sticky actions to Generate Plan/Weekly Revision
  • PastPlansScreen: 2‑column grid; tap to open PlanDetail
  • PlanDetailScreen: full plan with sticky actions (Back, Delete)

🔧 Setup

  1. Android Studio Jellyfish+ recommended
  2. Kotlin 2.0.21, AGP 8.13.2
  3. Firebase AI setup
    • Enable Firebase AI in your Firebase project
    • Place app/google-services.json (already present in project structure)
  4. Gradle sync

📦 Dependencies (key)

  • Compose BOM, Material3, Foundation
  • Navigation-Compose, ViewModel-Compose
  • Room (runtime/ktx + KSP)
  • Coroutines (core/android)
  • Firebase AI: com.google.firebase:firebase-ai:17.7.0
  • Material Icons Extended: androidx.compose.material:material-icons-extended

🤖 Gemini usage (as in code)

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel("gemini-2.5-flash")

val text = model.generateContent("Write a story about a magic backpack.").text

val prompt = content {
  image(bitmap)
  text("OCR and summarize to study notes")
}
val imageResult = model.generateContent(prompt).text

🗂️ Code Map

  • ai/GeminiService.kt – wraps Gemini calls and prompt builders
  • data/* – Room entities, DAOs, database
  • repo/* – repositories for Notes, Questions, Plans
  • ui/AppNav.kt – navigation graph
  • ui/components/ScaffoldKit.kt – Top bar + sticky bottom bar scaffold
  • ui/screens/* – all screens
  • ui/theme/* – theming

🧭 Navigation routes

  • home, scan, my_notes, note_detail/{noteId}
  • question_bank, questions_by_note/{noteId}, question_detail/{noteId}/{index}
  • study_plan, past_plans, plan_detail/{planId}

✅ Recent UI fixes

  • Redesigned StudyPlanScreen to match the vibrant visual style; added history icon action and sticky actions
  • MyNotesScreen uses a delete icon and calendar icon; improved grids and spacing
  • Back button in top bar now uses an icon (Material ArrowBack)
  • Ensured long content scrolls without hiding primary actions

📝 Markdown Rendering

  • AI responses are often formatted in Markdown. The app now renders Markdown on key screens:
    • ScanNotesScreen: the generated notes preview uses Markdown
    • NoteDetailScreen: full note content uses Markdown
    • PlanDetailScreen: full study plan content uses Markdown
    • QuestionDetailScreen: question text and explanation support Markdown (MCQ options keep chip styling)
  • Supported subset: headings (#, ##, ###), bullet/numbered lists, bold (text), italic (text), inline code (code), fenced code blocks (```), and horizontal rules (---).
  • Implemented via a lightweight in-app renderer (ui/components/MarkdownText.kt) optimized for performance and readability over gradient backgrounds.

🎨 App Icon & Splash Screen

  • Custom vector app icon: @drawable/ic_studygenie_logo with adaptive icons @mipmap/ic_studygenie and @mipmap/ic_studygenie_round
  • Android 12+ system splash configured in res/values-v31/themes.xml using the adaptive icon
  • Compose SplashScreen with animated logo and title (ui/screens/SplashScreen.kt) shown before the main app

▶️ Run

  • Connect a device/emulator (minSdk 24)
  • Build and run from Android Studio

📝 Notes

  • For live camera capture, integrate CameraX (currently using system Photo Picker)
  • If Gemini output format varies, adjust parsing in QuestionsRepository

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages