
# ๐ 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
---
**Made with โค๏ธ by Kelompok 3**
**Fakultas Ilmu Komputer - Program Studi Informatika**
**Universitas Bhayangkara Jakarta Raya**
**2025**