# ๐Ÿ“ NotesAI - AI-Powered Note Taking App 1.1.0 ![NotesAI Banner](https://img.shields.io/badge/NotesAI-v1.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) ![License](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge) **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) --- ## ๐Ÿ‘ฅ 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 35 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) --- ## ๐Ÿ“œ License ``` MIT License Copyright (c) 2025 Kelompok 1 - NotesAI Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` --- ## ๐Ÿ™ 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: [kelompok3.notesai@ubharajaya.ac.id](mailto:kelompok3.notesai@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** [โฌ†๏ธ Back to Top](#-notesai---ai-powered-note-taking-app)