2025-12-25 23:45:24 +07:00
2025-12-25 11:45:09 +07:00
2025-12-25 22:52:22 +07:00
2025-12-25 23:39:40 +07:00
2025-12-25 11:45:09 +07:00
2025-12-25 23:43:54 +07:00
2025-12-25 23:45:24 +07:00
2025-12-25 23:39:40 +07:00

📝 NotesAI - AI-Powered Note Taking App 1.1.0

NotesAI Banner Platform Kotlin License

Aplikasi pencatatan cerdas berbasis AI untuk Android dengan fitur organisasi terstruktur dan AI Assistant

📖 Dokumentasi Lengkap | 🧪 Test Report | 📋 Changelog


👥 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

  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 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:


🧪 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

  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 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

API Documentation

Referensi Akademik

Semua referensi dan kutipan tercantum di Daftar Pustaka 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
🌐 Repository: NotesAI
🏫 Institusi: Universitas Bhayangkara Jakarta Raya


Made with ❤️ by Kelompok 3

Fakultas Ilmu Komputer - Program Studi Informatika
Universitas Bhayangkara Jakarta Raya

2025

⬆️ Back to Top

Description
No description provided
Readme 45 MiB
Languages
Kotlin 100%