Catatan Android
Role: Native Android Developer • Year: 2025
I built Catatan Android as an offline-first note-taking application on Android using Java and SQLite. It features instant search, category filtering via Material ChipGroup, gallery photo attachments using persistent Storage Access Framework permissions, and a soft-delete Recycle Bin to safely restore deleted notes.
Application Screenshots & Gallery



The Problem Context
Many note-taking apps rely on online sync, introducing privacy risks, slow offline performance, and accidental loss of important notes when deleted.
The Engineering Solution
I developed a native Android app using SQLite local storage, persistent Storage Access Framework permissions for image attachments, and a soft-delete mechanism (is_deleted = 1) that lets users recover deleted notes from a dedicated Recycle Bin.
Android Material UI
XML Layouts, RecyclerView & ChipGroupMVC Controllers
Java Activity & Adapter ClassesSQLite Persistence
SQLiteOpenHelper (Database Version 2)Storage Framework
Persistable URI Gallery Media PickerImplementation Highlights
Designed MVC architecture separating Note model entity, SQLite DatabaseHelper, and RecyclerView adapters.
Implemented SQLite database migration from version 1 to 2, adding soft-delete columns without losing data.
Built soft-delete Recycle Bin workflow allowing users to restore deleted notes or permanently purge records.
Utilized Storage Access Framework with takePersistableUriPermission for attached photo persistence.
Applied Android 13+ granular permission checks based on device API level.
Measurable Results
- Achieved 100% offline note creation, live search filtering, and media attachment capability.
- Prevented accidental note loss through the soft-delete Recycle Bin recovery system.
- Delivered fast sub-30ms SQLite query lookup speeds.
Key Lessons Learned
- Soft delete patterns in mobile apps improve user satisfaction by preventing accidental data loss.
- Persistable URI permissions are essential when integrating gallery media into local SQLite databases.