523 lines
33 KiB
Markdown
523 lines
33 KiB
Markdown
# Nama Proyek Anda
|
||
# Nama Proyek Anda
|
||
Logo
|
||
Issues
|
||
Pull Requests
|
||
Milestones
|
||
Explore
|
||
202310715297-RAIHAN-ARIQ-MUZAKKI
|
||
/
|
||
NotesAI
|
||
Code
|
||
Issues
|
||
Pull Requests
|
||
Actions
|
||
Packages
|
||
Projects
|
||
Releases
|
||
Wiki
|
||
Activity
|
||
89
|
||
Commits
|
||
4
|
||
Branches
|
||
0
|
||
Tags
|
||
202310715297 RAIHAN ARIQ MUZAKKI
|
||
Raihan Ariq
|
||
e309009b54
|
||
FINAL'2
|
||
4 days ago
|
||
.idea
|
||
Functional Testing
|
||
2 weeks ago
|
||
.kotlin/errors
|
||
Menambahkan Dark/Light theme toggle
|
||
3 weeks ago
|
||
app
|
||
Merge branch '1.1.0'
|
||
4 days ago
|
||
docs
|
||
Dokumentasi
|
||
4 days ago
|
||
gradle
|
||
Functional Testing
|
||
2 weeks ago
|
||
.gitignore
|
||
Sprint 1: Setup Proyek & Struktur Dasar
|
||
last month
|
||
build.gradle.kts
|
||
Sprint 1: Setup Proyek & Struktur Dasar
|
||
last month
|
||
CHANGELOG.md
|
||
Dokumentasi CHANGELOG.md
|
||
2 weeks ago
|
||
gradle.properties
|
||
Sprint 1: Setup Proyek & Struktur Dasar
|
||
last month
|
||
gradlew
|
||
Sprint 1: Setup Proyek & Struktur Dasar
|
||
last month
|
||
gradlew.bat
|
||
Sprint 1: Setup Proyek & Struktur Dasar
|
||
last month
|
||
NotesAI.apk
|
||
Dokumentasi
|
||
4 days ago
|
||
README.md
|
||
FINAL'2
|
||
4 days ago
|
||
settings.gradle.kts
|
||
Sprint 1: Setup Proyek & Struktur Dasar
|
||
last month
|
||
TEST_SUMMARY_REPORT.md
|
||
Dokumentasi README.md
|
||
2 weeks ago
|
||
README.md
|
||
Logo NotesAI
|
||
NotesAI - AI-Powered Note Taking App 1.1.0
|
||
NotesAI Banner Platform Kotlin
|
||
|
||
Aplikasi pencatatan cerdas berbasis AI untuk Android dengan fitur organisasi terstruktur dan AI Assistant
|
||
|
||
📖 Dokumentasi Lengkap | 🧪 Test Report | 📋 Changelog
|
||
|
||
Unduh 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
|
||
Platform: Android (Minimum API 24 / Android 7.0)
|
||
Bahasa: Kotlin 100%
|
||
UI Framework: Jetpack Compose + Material 3
|
||
🎯 Tujuan dan Sasaran Aplikasi
|
||
Masalah yang Dipecahkan
|
||
Catatan tidak terorganisir - Catatan bercampur tanpa struktur yang jelas
|
||
Sulit mencari informasi - Kehilangan waktu mencari catatan penting
|
||
Kurang interaktif - Tidak ada bantuan untuk merangkum atau menganalisis catatan
|
||
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 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
|
||
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
|
||
Jetpack Compose Documentation
|
||
Gemini API Documentation
|
||
Kotlin Serialization
|
||
🧪 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
|
||
|
||
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
|
||
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:
|
||
|
||
GEMINI_API_KEY=your_gemini_api_key_here
|
||
3. Open di Android Studio
|
||
Buka Android Studio
|
||
File → Open → Pilih folder project
|
||
Tunggu Gradle sync selesai
|
||
4. Run Aplikasi
|
||
Pilih device/emulator
|
||
Klik Run (▶️) atau Shift + F10
|
||
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 Bab III (Halaman 21-28)
|
||
|
||
⚠️ Batasan dan Catatan
|
||
Keterbatasan Saat Ini
|
||
AI Dependency
|
||
|
||
⚠️ Fitur AI memerlukan koneksi internet
|
||
⚠️ Menggunakan free tier Gemini API (rate limited)
|
||
ℹ️ Catatan lokal tetap berfungsi offline
|
||
Document Format
|
||
|
||
✅ Support: PDF, TXT, DOCX
|
||
❌ Tidak support: XLS, PPT, Images
|
||
Data Storage
|
||
|
||
💾 Data tersimpan lokal (DataStore)
|
||
⚠️ Tidak ada cloud backup (planned v2.0)
|
||
ℹ️ Risiko data loss jika uninstall app
|
||
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 - Dokumentasi lengkap 34 halaman
|
||
🧪 Test Summary Report - Laporan pengujian detail
|
||
📋 Changelog - Riwayat perubahan versi
|
||
API Documentation
|
||
🤖 Gemini API Docs
|
||
📚 Android Developers
|
||
📝 Kotlin Documentation
|
||
Referensi Akademik
|
||
Semua referensi dan kutipan tercantum di Daftar Pustaka halaman 33
|
||
|
||
🤝 Kontribusi & Support
|
||
Cara Berkontribusi
|
||
Fork repository ini
|
||
Buat branch fitur (git checkout -b feature/AmazingFeature)
|
||
Commit changes (git commit -m 'Add some AmazingFeature')
|
||
Push ke branch (git push origin feature/AmazingFeature)
|
||
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 1
|
||
|
||
📧 Email:
|
||
|
||
202310715297@mhs.ubharajaya.ac.id (Raihan Ariq Muzakki)
|
||
202310715051@mhs.ubharajaya.ac.id (Dendi Yogia Pratama)
|
||
202310715082@mhs.ubharajaya.ac.id (Fazri Abdurrahman)
|
||
🌐 Repository: NotesAI
|
||
🏫 Institusi: Universitas Bhayangkara Jakarta Raya
|
||
|
||
Made with ❤️ by Kelompok 1
|
||
|
||
Fakultas Ilmu Komputer - Program Studi Informatika
|
||
Universitas Bhayangkara Jakarta Raya
|
||
|
||
2025
|
||
|
||
Search code...
|
||
Description
|
||
No description provided
|
||
Readme
|
||
45
|
||
MiB
|
||
Languages
|
||
Kotlin
|
||
100%
|
||
Powered by Gitea
|
||
Version: 1.23.6 Page:
|
||
156ms
|
||
Template:
|
||
4ms
|
||
Licenses
|
||
API |