# ๐Ÿ“ NotesAI - AI-Powered Note Taking App 1.1.0 ![NotesAI Banner](https://img.shields.io/badge/NotesAI-v1.1.0-blue?style=for-the-badge) ![Platform](https://img.shields.io/badge/Platform-Android-green?style=for-the-badge&logo=android) ![Kotlin](https://img.shields.io/badge/Kotlin-100%25-purple?style=for-the-badge&logo=kotlin) **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 ---
**Made with โค๏ธ by Kelompok 3** **Fakultas Ilmu Komputer - Program Studi Informatika** **Universitas Bhayangkara Jakarta Raya** **2025**