# ๐ NotesAI - AI-Powered Note Taking App 1.1.0    **Aplikasi pencatatan cerdas berbasis AI untuk Android dengan fitur organisasi terstruktur dan AI Assistant** [๐ Dokumentasi Lengkap](./docs/Laporan%20Dokumentasi%20Aplikasi%20-%20Kelompok%201.pdf) | [๐งช Test Report](./TEST_SUMMARY_REPORT.md) | [๐ Changelog](./CHANGELOG.md) Unduh [NotesAI.apk](./NotesAI.apk) --- ## ๐ฅ Tim Pengembang **Kelompok 1 - Kelas F5A5** | Nama | NPM | |------|-----| | Dendi Yogia Pratama | 202310715051 | | Raihan Ariq Muzakki | 202310715297 | | Fazri Abdurahman | 202310715082 | **Dosen Pengampu:** Arif Rifai Dwiyanto, ST., MTI **Mata Kuliah:** Pemrograman Perangkat Bergerak **Institusi:** Universitas Bhayangkara Jakarta Raya --- ## ๐ Informasi Proyek - **Nama Aplikasi:** NotesAI - **Repository:** [NotesAI](https://git.lab.ubharajaya.ac.id/202310715297-RAIHAN-ARIQ-MUZAKKI/NotesAI.git) - **Platform:** Android (Minimum API 24 / Android 7.0) - **Bahasa:** Kotlin 100% - **UI Framework:** Jetpack Compose + Material 3 --- ## ๐ฏ Tujuan dan Sasaran Aplikasi ### Masalah yang Dipecahkan 1. **Catatan tidak terorganisir** - Catatan bercampur tanpa struktur yang jelas 2. **Sulit mencari informasi** - Kehilangan waktu mencari catatan penting 3. **Kurang interaktif** - Tidak ada bantuan untuk merangkum atau menganalisis catatan 4. **Risiko kehilangan data** - Catatan terhapus permanen tanpa backup ### Target Pengguna - ๐ **Mahasiswa** (18-25 tahun) - Catatan kuliah, tugas, ringkasan dokumen - ๐ผ **Profesional** (22-40 tahun) - Meeting notes, to-do lists, catatan kerja - ๐ค **Pengguna Umum** (18-40 tahun) - Catatan pribadi, jurnal, daftar belanja ### Keunggulan NotesAI โ **Organisasi Terstruktur** - Sistem kategori dengan visual gradien warna โ **AI Assistant** - Powered by Gemini 2.5 Flash untuk respons kontekstual โ **Rich Text Editor** - WYSIWYG editor dengan drag-and-drop toolbar โ **Smart Search** - Pencarian realtime dengan filter kategori โ **Data Safety** - Soft delete dengan trash & restore functionality โ **Document Parser** - Upload PDF/TXT/DOCX dengan auto-summary --- ## โจ Fitur Utama ### 1๏ธโฃ Note Management System - โ๏ธ **CRUD Operations** - Create, Read, Update, Delete catatan - ๐ **Category Organization** - Pengelompokan visual dengan gradien warna - ๐ **Pin Priority** - Pin notes/kategori untuk akses cepat - ๐๏ธ **Archive & Trash** - Soft delete dengan kemampuan restore - ๐จ **Rich Text Editor** - Bold, italic, underline, heading, bullet list - ๐ **Smart Search** - Realtime search dengan case-insensitive ### 2๏ธโฃ AI Assistant - ๐ค **Contextual AI Chat** - AI memahami konteks dari catatan Anda - ๐ **Document Upload** - Support PDF, TXT, DOCX - ๐ **Auto Summary** - Ringkasan otomatis dari dokumen - ๐ฌ **Chat History** - Penyimpanan percakapan persistent - ๐ฏ **Category Filter** - Filter konteks berdasarkan kategori - โ๏ธ **Markdown Support** - Formatted AI responses ### 3๏ธโฃ Data Management - ๐พ **Local Storage** - DataStore Preferences untuk data persistence - ๐ **Autosave** - Lifecycle-aware autosave dengan debounce 500ms - ๐ **Theme Preference** - Dark/Light mode support - ๐ **Reactive Data** - Flow-based reactive data loading - โก **Fast Performance** - Optimized untuk pengalaman smooth --- ## ๐ Riset dan Analisis ### Analisis Pasar Berdasarkan riset pasar 2025: - **70% responden** percaya AI meningkatkan produktivitas kerja *(Eurobarometer, Feb 2025)* - **Pasar note-taking apps** menunjukkan pertumbuhan dengan tren integrasi AI - **Gemini 2.5 Flash** dipilih sebagai model "price-performance" terbaik untuk low-latency tasks ### Diferensiasi NotesAI ๐ฏ **AI Contextual** - AI dapat membaca semua catatan sebagai konteks ๐ฏ **Document to Summary** - Upload file langsung dapat ringkasan ๐ฏ **Local-First** - Tidak butuh login, data tersimpan lokal ๐ฏ **Free & Open** - Tidak ada paywall untuk fitur utama --- ## ๐จ Desain UI/UX ### Design System - **Material Design 3** - Modern, clean, consistent - **Color Scheme** - Dynamic gradients untuk kategori - **Typography** - Clear hierarchy untuk readability - **Spacing** - Consistent 4dp baseline grid ### User Flow ``` โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ ๐ Main Screen (Home) โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โ โ Category โ โ Category โ โ โ โ Card โ โ Card โ โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ Select Category โผ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ ๐ Notes List Screen โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โ โ Note Card โ โ Note Card โ โ โ โ (Pinned) โ โ (Regular) โ โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ Open Note โผ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ๏ธ Full-Screen Editor โ โ โข Rich Text Toolbar (Draggable) โ โ โข Bold, Italic, Underline โ โ โข Heading, Bullet List โ โ โข Auto-save on background โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ``` ### Wireframe & Mockup ๐ **Wireframe lengkap** tersedia di [Dokumentasi](docs/Laporan%20Dokumentasi%20Aplikasi%20-%20Kelompok%201.pdf) Halaman 15 ๐ธ **Screenshot aplikasi** tersedia di Panduan Pengguna (Halaman 21-28) --- ## ๐ ๏ธ Teknologi dan Alat ### Tech Stack #### Core Technologies ``` // Build Configuration Kotlin 1.9.0 Android Gradle Plugin 8.2.0 Compile SDK 34 Min SDK 24 (Android 7.0) Target SDK 34 ``` #### UI & Architecture - **Jetpack Compose** - Modern declarative UI - **Material 3** - Latest Material Design components - **Navigation Compose** - Type-safe navigation - **Lifecycle** - Lifecycle-aware components #### Data & Storage - **DataStore Preferences** - Key-value storage - **Kotlinx Serialization** - JSON serialization - **Kotlin Coroutines** - Asynchronous programming - **Flow** - Reactive data streams #### AI & Integration - **Gemini API** - Google Generative AI (Gemini 2.5 Flash) - **PDFBox-Android** - PDF text extraction - **Activity Result API** - File picker for document upload #### Development Tools - **Android Studio** - **Git** - Version control (git.lab.ubharajaya.ac.id) - **Gradle** - Build automation - **Claude AI** - AI-assisted development ### Dependencies ```gradle dependencies { // Compose implementation("androidx.compose.ui:ui:1.6.0") implementation("androidx.compose.material3:material3:1.2.0") // DataStore implementation("androidx.datastore:datastore-preferences:1.0.0") // Serialization implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0") // AI implementation("com.google.ai.client.generativeai:generativeai:0.1.2") // PDF Parser implementation("com.tom-roush:pdfbox-android:2.0.27.0") // Testing testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") } ``` --- ## ๐๏ธ Arsitektur Aplikasi ### Architecture Pattern ``` โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ PRESENTATION LAYER โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ Composable Screens โ โ โ โ โข MainScreen โ โ โ โ โข AIHelperScreen โ โ โ โ โข ArchiveScreen, TrashScreen โ โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ Uses โผ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ DATA LAYER โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ DataStoreManager โ โ โ โ โข saveNotes() / notesFlow โ โ โ โ โข saveCategories() / categoriesFlow โ โ โ โ โข saveChatHistory() / chatHistoryFlow โ โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ Stores โผ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ MODEL LAYER โ โ โข Note (id, title, content, isPinned...) โ โ โข Category (id, name, gradients, isPinned...) โ โ โข ChatHistory (messages, timestamp...) โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ``` ### Package Structure ``` com.example.notesai/ โโโ ๐ config/ โ โโโ APIKey.kt โโโ ๐ data/ โ โโโ ๐ local/ โ โ โโโ DataStoreManager.kt โ โโโ ๐ model/ โ โโโ Note.kt โ โโโ Category.kt โ โโโ ChatHistory.kt โ โโโ ChatMessage.kt โโโ ๐ presentation/ โ โโโ ๐ components/ โ โ โโโ DrawerMenu.kt โ โ โโโ ModernTopBar.kt โ โ โโโ ModernBottomBar.kt โ โโโ ๐ screens/ โ โโโ ๐ main/ โ โโโ ๐ ai/ โ โโโ ๐ archive/ โ โโโ ๐ trash/ โ โโโ ๐ note/ โโโ ๐ util/ โโโ FileParser.kt โโโ Constants.kt โโโ AppColors.kt ``` --- ## ๐ Resource yang Digunakan ### Visual Assets - ๐จ **Icons** - Material Icons & Lucide Icons - ๐ **Colors** - Material 3 Dynamic Color - ๐ผ๏ธ **Illustrations** - Custom empty states ### Content & Data - ๐ **Sample Data** - Test categories & notes untuk demo - ๐ **Documents** - Sample PDF/TXT untuk testing parser ### External Services - ๐ค **Gemini API** - Google Generative AI - ๐ **Documentation** - Android Developers, Kotlin Docs ### Learning Resources Referensi utama yang digunakan: - [Android App Architecture Guide](https://developer.android.com/topic/architecture) - [Jetpack Compose Documentation](https://developer.android.com/jetpack/compose) - [Gemini API Documentation](https://ai.google.dev/docs) - [Kotlin Serialization](https://kotlinlang.org/docs/serialization.html) --- ## ๐งช Pengujian Aplikasi ### Metodologi Testing **Primary Method:** Black-Box Functional Testing **Supporting Method:** Automated Unit Testing Pengujian dilakukan menggunakan metode **Black-Box Functional Testing** sebagai pendekatan utama, dimana setiap fitur divalidasi dari perspektif end-user dengan memverifikasi kesesuaian **Expected vs Actual Result**. Didukung oleh **59 automated unit tests** untuk validasi business logic internal. ### Test Coverage Summary | Test Case | Fitur | Tests | Status | |-----------|-------|-------|--------| | **TC-01** | Create Note & Category + Autosave | 8 tests | โ PASSED | | **TC-02** | Pin Note (Priority) | included | โ PASSED | | **TC-03** | Soft Delete & Restore | 11 tests | โ PASSED | | **TC-04** | Search Realtime | 14 tests | โ PASSED | | **TC-05** | AI Chat with Context | 14 tests | โ PASSED | | **TC-06** | Upload PDF โ Summary | 12 tests | โ PASSED | | **TOTAL** | **6 Test Cases** | **59 tests** | **โ 100%** | ### Test Results ``` โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ๐ TEST SUMMARY REPORT โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Total Test Cases: 6 Passed Test Cases: 6 Failed Test Cases: 0 Success Rate: 100% โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Total Unit Tests: 59 Passed Tests: 59 Failed Tests: 0 Execution Time: ~2 minutes โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Status: โ ALL TESTS PASSED Quality: โ PRODUCTION READY โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ ``` ๐ **Laporan lengkap:** [TEST_SUMMARY_REPORT.md](./TEST_SUMMARY_REPORT.md) ### Testing Framework - **JUnit 4** - Unit testing framework - **AndroidX Test** - Android testing utilities - **Kotlin Coroutines Test** - Async testing - **Truth** - Assertion library --- ## ๐ Instalasi dan Penggunaan ### Prasyarat - โ Android 7.0 (API 24) atau lebih tinggi - โ Koneksi internet (untuk fitur AI) - โ Minimal 50MB storage kosong ### Cara Menjalankan dari Source Code #### 1. Clone Repository ```bash git clone https://git.lab.ubharajaya.ac.id/kelompok-3/notesai.git cd notesai ``` #### 2. Setup API Key Buat file `local.properties` di root project: ```properties GEMINI_API_KEY=your_gemini_api_key_here ``` #### 3. Open di Android Studio 1. Buka Android Studio 2. File โ Open โ Pilih folder project 3. Tunggu Gradle sync selesai #### 4. Run Aplikasi 1. Pilih device/emulator 2. Klik Run (โถ๏ธ) atau `Shift + F10` 3. Aplikasi akan terinstall dan berjalan --- ## ๐ฑ Panduan Penggunaan ### Quick Start Guide #### 1๏ธโฃ Membuat Kategori Pertama ``` Main Screen โ Tap (โ) โ Pilih "Kategori Baru" โ Isi nama kategori โ Pilih warna โ Save ``` #### 2๏ธโฃ Membuat Note ``` Main Screen โ Tap kategori โ Tap (โ) floating button โ Isi judul & konten โ Auto-saved โ ``` #### 3๏ธโฃ Menggunakan Rich Text Editor ``` Buka note โ Tap area teks โ Muncul draggable toolbar โ Pilih format (Bold/Italic/Heading/Bullet) โ Type away! ``` #### 4๏ธโฃ Pin untuk Prioritas ``` Long-press note โ Tap โญ Pin icon โ Note akan muncul di urutan teratas ``` #### 5๏ธโฃ Chat dengan AI ``` Drawer Menu โ AI Assistant โ Ketik pertanyaan โ AI akan menjawab berdasarkan catatan Anda ``` #### 6๏ธโฃ Upload & Summarize Document ``` AI Assistant โ Tap ๐ Upload โ Pilih file (PDF/TXT/DOCX) โ AI otomatis generate summary โ Tersimpan di chat history ``` ### User Flow Lengkap ๐ Panduan detail dengan screenshot tersedia di [Dokumentasi](./docs/Laporan%20Dokumentasi%20Aplikasi%20-%20Kelompok%201.pdf) Bab III (Halaman 21-28) --- ## โ ๏ธ Batasan dan Catatan ### Keterbatasan Saat Ini 1. **AI Dependency** - โ ๏ธ Fitur AI memerlukan koneksi internet - โ ๏ธ Menggunakan free tier Gemini API (rate limited) - โน๏ธ Catatan lokal tetap berfungsi offline 2. **Document Format** - โ Support: PDF, TXT, DOCX - โ Tidak support: XLS, PPT, Images 3. **Data Storage** - ๐พ Data tersimpan lokal (DataStore) - โ ๏ธ Tidak ada cloud backup (planned v2.0) - โน๏ธ Risiko data loss jika uninstall app 4. **Performance** - โก Optimal untuk <1000 notes - โ ๏ธ Search dapat melambat pada dataset besar - ๐ Indexing optimization planned ### Privasi & Keamanan - โ Catatan disimpan **100% lokal** - โ ๏ธ Saat menggunakan AI, konten relevan dikirim ke Gemini API - ๐ API key tidak hardcoded (menggunakan BuildConfig) - โน๏ธ Tidak ada tracking atau analytics --- ## ๐ฎ Roadmap & Future Development ### Version 1.2.0 (Q2 2025) ๐ฏ - [ ] **Cloud Sync** - Firebase/Supabase integration - [ ] **Backup & Restore** - Export/import data - [ ] **Widget** - Home screen quick note - [ ] **Reminder** - Notification untuk note penting - [ ] **Templates** - Pre-made note templates ### Version 1.3.0 (Q3 2025) ๐ - [ ] **Collaboration** - Share notes dengan user lain - [ ] **Voice Input** - Speech-to-text untuk note - [ ] **Image Support** - Attach images ke notes - [ ] **Tag System** - Alternative categorization - [ ] **Advanced Search** - Filter by date, tag, etc. ### Version 1.4.0 (Q4 2025) ๐ - [ ] **Multi-device Sync** - Real-time sync - [ ] **Encryption** - End-to-end encryption - [ ] **Premium AI** - Upgrade ke Gemini Pro - [ ] **Offline AI** - On-device AI model - [ ] **iOS Version** - Cross-platform support --- ## ๐ Dokumentasi Tambahan ### File Dokumentasi - ๐ [Laporan Lengkap](./docs/Laporan%20Dokumentasi%20Aplikasi%20-%20Kelompok%201.pdf) - Dokumentasi lengkap 34 halaman - ๐งช [Test Summary Report](./TEST_SUMMARY_REPORT.md) - Laporan pengujian detail - ๐ [Changelog](./CHANGELOG.md) - Riwayat perubahan versi ### API Documentation - ๐ค [Gemini API Docs](https://ai.google.dev/docs) - ๐ [Android Developers](https://developer.android.com) - ๐ [Kotlin Documentation](https://kotlinlang.org/docs) ### Referensi Akademik Semua referensi dan kutipan tercantum di [Daftar Pustaka](./docs/Laporan%20Dokumentasi%20Aplikasi%20-%20Kelompok%201.pdf) halaman 33 --- ## ๐ค Kontribusi & Support ### Cara Berkontribusi 1. Fork repository ini 2. Buat branch fitur (`git checkout -b feature/AmazingFeature`) 3. Commit changes (`git commit -m 'Add some AmazingFeature'`) 4. Push ke branch (`git push origin feature/AmazingFeature`) 5. Buat Pull Request ### Coding Standards - โ Follow Kotlin coding conventions - โ Write descriptive commit messages - โ Add unit tests untuk fitur baru - โ Update documentation ### Laporkan Bug Jika menemukan bug, silakan buat issue dengan: - ๐ Deskripsi bug - ๐ฑ Device & Android version - ๐ Steps to reproduce - ๐ธ Screenshot (jika ada) --- ## ๐ Acknowledgments ### Special Thanks - ๐ **Bapak Arif Rifai Dwiyanto, ST., MTI** - Dosen pembimbing dan pengampu mata kuliah - ๐ซ **Universitas Bhayangkara Jakarta Raya** - Dukungan fasilitas - ๐ค **Claude AI (Anthropic)** - AI assistant untuk pengembangan dan debugging - ๐จ **Material Design Team** - Design system yang digunakan - ๐ **Android Developer Community** - Dokumentasi dan best practices ### Tools & Services - Android Studio - IDE terbaik untuk Android development - Jetpack Compose - Modern UI toolkit - Gemini API - AI capabilities - PDFBox - PDF parsing library - Git Lab UBHARA - Version control hosting --- ## ๐ Kontak **Tim Pengembang Kelompok 3** ๐ง Email: 1. [202310715297@mhs.ubharajaya.ac.id](mailto:202310715297@mhs.ubharajaya.ac.id) 2. [202310715051@mhs.ubharajaya.ac.id](mailto:202310715051@mhs.ubharajaya.ac.id) 3. [202310715082@mhs.ubharajaya.ac.id](mailto:202310715082@mhs.ubharajaya.ac.id) ๐ Repository: [NotesAI](https://git.lab.ubharajaya.ac.id/202310715297-RAIHAN-ARIQ-MUZAKKI/NotesAI.git) ๐ซ Institusi: Universitas Bhayangkara Jakarta Raya ---