ChatVault

Read, search, and manage WhatsApp archives offline.

ChatVault is an offline-first Android and web app for importing WhatsApp Export Chat files and turning them into a readable, searchable archive. It is designed for people who need to review old conversations, manage multiple backups, and preserve privacy because all parsing, storage, and search happen locally on device.

Business Goals

  • Reach a usable MVP release within 12 weeks with TXT import, ZIP import, chat reading, local search, and local persistence completed.
  • Achieve at least 60% successful first-import completion rate for test archives within the first 30 days of beta.
  • Keep crash-free sessions above 99.5% on supported Android devices and modern browsers for the first release.
  • Reduce average time from file selection to readable conversation preview to under 30 seconds for archives under 50 MB.
  • Support at least 5,000 locally stored archives per installation without noticeable degradation in library browsing or search.

User Goals

  • Import WhatsApp TXT and ZIP exports without uploading data anywhere.
  • Read conversations in a WhatsApp-like layout with dates, senders, media references, and system messages.
  • Correct sender identity manually when the export format is ambiguous.
  • Search messages quickly across one archive or the full library.
  • Keep multiple backups, reopen them later, and export them again in common formats.

Non-Goals

  • Not a live messaging client and not connected to WhatsApp accounts or APIs.
  • Not a cloud sync, collaboration, or multi-device backup product.
  • Not a universal document viewer for every file type.
  • Not an AI-powered chat analyzer or summarizer.

Family Archivist Dina, 38 - Dina has years of family WhatsApp backups exported to her phone and laptop. She wants a private way to revisit old conversations, find specific moments, and keep important chats organized without sending files to any server.

Family Archivist Dina, 38

  • As a family archivist, I want to import a ZIP export and immediately preview the chat, so that I can verify the archive before saving it.
  • As a family archivist, I want to search by sender and phrase, so that I can find a birthday message from years ago.
  • As a family archivist, I want to bookmark important messages with notes, so that I can return to them later.

Legal Assistant Rafi, 31 - Rafi reviews exported WhatsApp conversations as evidence or reference material. He needs accurate timestamps, media references, and a clear audit trail for archive sources.

Legal Assistant Rafi, 31

  • As a legal assistant, I want to view the original message order and timestamps, so that I can trust the chronology.
  • As a legal assistant, I want to see missing media placeholders and import warnings, so that I can assess archive completeness.
  • As a legal assistant, I want to export a filtered subset as PDF-friendly HTML or CSV, so that I can share the relevant record internally.

Power User Mei, 27 - Mei manages several personal and work chat archives across Android and desktop browser sessions. She cares about speed, storage control, and quick navigation in large conversations.

Power User Mei, 27

  • As a power user, I want to manage multiple archives in one library, so that I can switch between chats quickly.
  • As a power user, I want jump-to-date and search-result navigation, so that I can move through huge chats efficiently.
  • As a power user, I want duplicate-aware archive merging, so that I can combine backups without losing source traceability.

Archive Import and Parsing · High priority

  • Import WhatsApp Export Chat TXT and ZIP files locally, parse message content, and produce a validated conversation record with warnings for malformed data.
  • Accept TXT and ZIP input from Android file picker and browser file input.
  • Detect date, time, sender, system messages, multiline messages, and media references using a configurable parser.
  • Read ZIP contents with safe extraction rules that block path traversal, duplicate unsafe filenames, and unreasonable extraction size.
  • Generate a parsing preview before saving and show unreadable lines, missing media, and format ambiguities.
  • Preserve original archive files unchanged and never rewrite them during import.

Local Storage and Multi-Archive Library · High priority

  • Store parsed conversations, message metadata, bookmarks, and media references locally so the user can reopen archives offline at any time.
  • Use SQLite on Android and IndexedDB on web with a shared repository interface.
  • Persist library records with archive name, import date, date range, message count, media count, and storage size.
  • Allow rename, delete with confirmation, and reopen operations from the library screen.
  • Support separate per-archive identity mapping and merge history.
  • Keep local preferences such as theme and text size in lightweight device storage only.

Chat Reader Experience · High priority

  • Render imported conversations in a WhatsApp-like reader optimized for large archives and clear chronological browsing.
  • Show incoming and outgoing bubbles, sender names, timestamps, date separators, and system messages.
  • Display media attachments with placeholders for missing files and an action to jump back to the source message.
  • Support virtual scrolling or pagination so large archives are not fully loaded into memory.
  • Provide copy message, bookmark message, and open message details actions.
  • Allow jump to a specific date and search result location.

Search, Filter, and Timeline · High priority

  • Enable fast local discovery across one archive or the full library using indexed search and timeline browsing.
  • Support keyword, sender, date range, and attachment-type filters.
  • Index text locally on both platforms; use SQLite indexes on Android and a local web search index or token store on web.
  • Show yearly, monthly, and daily timeline summaries with counts and activity indicators.
  • Open results at the exact message position in the conversation.
  • Maintain search responsiveness on archives containing at least 100,000 messages.

Export, Bookmark, and Merge · Medium priority

  • Let users preserve important content, produce sharable local exports, and merge duplicate archives carefully.
  • Export to TXT, HTML, CSV, JSON, and ZIP with available media only.
  • Let users add bookmarks, labels, and personal notes attached to the original message and archive.
  • Support archive merge with duplicate detection based on timestamp, sender, content, message type, and media fingerprint.
  • Show pre-merge comparison including overlap estimates and date-range differences.
  • Keep source archive references on merged messages so the origin remains auditable.

First-Time Import Flow

  • Open ChatVault and choose between Android import or browser upload.
  • Select a WhatsApp TXT or ZIP export from local storage.
  • See a local validation pass that checks size, format, and parseability in under 30 seconds for small archives.
  • Review a preview of messages, sender guesses, missing media, and import warnings.
  • Confirm the owner name and any sender aliases before saving.
  • Land in the Library with the imported archive ready to open offline.

1. Import and Validate

  • The user chooses a file and the app parses it locally, validates safety constraints, and prepares a readable preview.
  • Reject unsupported files, corrupted ZIPs, and suspicious archive paths with a clear error.
  • Detect multiline messages, system notes, and multiple common date formats.
  • Show a preview count of parsed messages, failed lines, and unresolved media references.

2. Confirm Identity

  • The user tells the app who owns the archive and how ambiguous senders should be mapped.
  • Allow manual owner selection, alias creation, and sender correction before saving.
  • Mark uncertain identities as unverified until the user resolves them.
  • Persist identity mapping only for that archive unless the user explicitly copies it.

3. Read Conversation

  • The user opens the archive in a chat-style reader that feels familiar and fast.
  • Render bubbles with sender, time, date dividers, and attachments.
  • Load messages in chunks with virtual scrolling to keep memory stable.
  • Show missing media placeholders and system message styling distinct from regular chat.

4. Search and Navigate

  • The user finds messages by text, sender, date, or attachment type and jumps directly to the source.
  • Use local indexes for fast response even in large archives.
  • Return exact message anchors, not just result lists.
  • Support jump-to-date and timeline navigation from month or day summaries.

5. Organize and Reuse

  • The user bookmarks important messages, views media, exports subsets, and manages multiple archives.
  • Bookmark messages with notes and labels tied to the source archive.
  • Open media previews or fall back to file metadata when a file is missing.
  • Export filtered subsets while preserving order, time, and source references.

Power User Tools and Edge Cases

  • Merge two backups from the same conversation with duplicate review and source traceability.
  • Cross-archive search from the library view.
  • Archive health report showing parse errors, missing attachments, and suspicious filename warnings.
  • Custom alias lists for personal, group, and renamed contacts.
  • Responsive layouts with sidebar on desktop and bottom navigation on mobile.
  • Offline-only document handling with PDF preview and external handoff for unsupported types.

Design Principles

  • Familiar WhatsApp-inspired layout with clear visual distinction between incoming, outgoing, and system messages.
  • Strong empty, loading, invalid archive, permission denied, and missing media states.
  • Accessible contrast in dark and light mode with adjustable text size.
  • Fast startup and incremental rendering for big archives.
  • Responsive layout that works cleanly on phones, tablets, and desktop browsers.

Dina has years of family WhatsApp backups scattered across phone exports and old ZIP files. She usually avoids opening them because the folders are messy, the file names are inconsistent, and she does not want to upload private chats to a website.

With ChatVault, she selects one ZIP file, sees a preview of the conversation, corrects the owner name, and saves it locally in seconds. Later, she searches for a birthday message, jumps to the exact date, and bookmarks the best reply with a note.

The result is simple but valuable: her archives are finally usable, private, and organized. She saves time every time she needs to find a memory, confirm a detail, or compare multiple backups without risking the original files.

User-Centric Metrics

  • At least 80% of beta users complete their first import successfully.
  • Median time from file selection to first readable preview under 30 seconds for archives under 50 MB.
  • Search result open latency under 2 seconds for archives up to 100,000 messages.
  • At least 40% of active users create one or more bookmarks within the first week.
  • Fewer than 5% of imports end in unresolved fatal parsing errors for supported export formats.

Business Metrics

  • 30-day retention above 35% for beta users who import at least one archive.
  • At least 25% of imported archives are reopened within 14 days.
  • At least 15% of users try a second archive import after first success.
  • At least 10% of active users use export or merge features by the end of the first quarter.

Technical Metrics

  • Crash-free session rate above 99.5%.
  • Local search response under 500 ms for indexed queries on typical archives.
  • Import pipeline handles 100 MB archives without exhausting device memory.
  • Zero known cases of archive mutation during import or export validation.

Tracking Plan

  • Track archive_selected with file type, size bucket, and platform.
  • Track import_started and import_completed with parse success, warning count, and duration.
  • Track import_failed with failure class such as invalid format, corrupted ZIP, or missing permissions.
  • Track search_performed with scope, filter type, and result count.
  • Track message_opened with source archive, message type, and navigation origin.
  • Track bookmark_created with label presence and archive id.
  • Track export_completed with format and filter settings.

Technical Needs

  • Capacitor-based Android shell with local SQLite persistence.
  • Web implementation with IndexedDB, File API, and optional Web Worker parsing.
  • Shared domain model and repository interface to abstract Android and web storage backends.
  • Local parser module for TXT and ZIP handling using JSZip and robust line parsing utilities.
  • Virtualized chat list and media gallery to prevent full in-memory rendering.
  • Full-text or token-based local search indexing strategy for both platforms.
  • Safe file handling utilities for archive validation, filename sanitization, and extraction limits.

Integration Points

  • Android Storage Access Framework and file picker for import.
  • Capacitor SQLite plugin for persistent local data.
  • Capacitor Filesystem for media storage on Android.
  • Browser File API and IndexedDB on web.
  • Local PDF viewer component or native handoff for supported document viewing.

Data Storage & Privacy

  • Store all archive content locally with no backend sync or telemetry containing message bodies.
  • Do not log chat contents, attachment bytes, or sensitive filenames in debug logs.
  • Provide clear delete flows for archive data, media files, bookmarks, and derived indexes.
  • Minimize requested permissions and use file access only when the user initiates import.
  • Keep identity mappings, bookmarks, and notes scoped to the local device unless explicitly exported by the user.

Scalability & Performance

  • Process ZIP contents incrementally and avoid loading all files into RAM.
  • Use pagination or virtualization for chat, media, and search result lists.
  • Create indexes during import so repeated search stays fast.
  • Delay thumbnail generation until visible and cache previews locally.

Potential Challenges

  • WhatsApp export formats vary across locales and app versions; mitigate with a parser ruleset, sample corpus, and versioned format detection.
  • Large ZIPs and media sets can overwhelm memory; mitigate with streaming extraction, chunked parsing, and strict size limits.
  • Sender identity can be ambiguous in exports; mitigate with manual mapping, aliasing, and unverified labels.
  • Duplicate detection during merge can be error-prone; mitigate with a review screen and conservative deduplication rules.
  • Cross-platform storage behavior differs between Android and web; mitigate with an adapter layer and shared repository contracts.

Team & resourcing - Small cross-functional team - 2 full-stack engineers, 1 product designer, and part-time PM/QA.

Phase 1: Foundation and Data Model · Weeks 1-2

  • Project scaffold for web and Android-ready architecture.
  • Shared conversation, message, archive, bookmark, and identity mapping data model.
  • Local storage abstraction for SQLite and IndexedDB.
  • Basic library shell and empty state UI.
  • Architecture, schema, parser, and storage documentation.

Phase 2: Import, Parse, and Read · Weeks 3-6

  • TXT parser with multiline, system message, and sender detection.
  • ZIP import with safe extraction and media mapping.
  • Import preview and warning report.
  • Chat reader with virtualized rendering and date separators.
  • Manual owner and sender mapping flow.

Phase 3: Library, Search, and Media · Weeks 7-9

  • Multi-archive library with rename, delete, and archive detail views.
  • Local search and filters across archive and library scopes.
  • Timeline navigation.
  • Media gallery with thumbnails, placeholders, and jump-to-message actions.
  • Bookmark creation and list view.

Phase 4: Export, Merge, and Android Release · Weeks 10-12

  • Export to TXT, HTML, CSV, JSON, and ZIP.
  • Duplicate-aware archive merge flow with source traceability.
  • Android Capacitor integration, file picker, and filesystem persistence.
  • Performance hardening, test coverage, and APK build for release candidate.

Paste this into Cursor, Bolt, Lovable, or v0 to start building.

Build ChatVault, an offline-first WhatsApp archive viewer for web and Android.

Product requirements:
Users import WhatsApp Export Chat files in TXT or ZIP format from local storage. The app parses chats locally, shows a WhatsApp-like conversation UI, supports manual sender identity mapping, saves archives offline, and allows local search, filtering, bookmarking, media browsing, export, and archive management. No backend, no cloud sync, no external AI APIs, and no uploading chat content.

Core screens:
Library with archive cards and stats
Import flow with file picker, validation, parse preview, identity confirmation, and save
Chat reader with bubbles, sender names, timestamps, date separators, system messages, missing-media placeholders, bookmark and copy actions
Search panel with full-text, sender, date range, and attachment filters
Timeline view by year, month, and day
Media gallery with thumbnails and jump-to-message actions
Archive detail, merge comparison, bookmark list, settings, and export dialog

Data model:
Archive: id, name, sourceType, importDate, dateRangeStart, dateRangeEnd, messageCount, mediaCount, storageSize, status
Message: id, archiveId, sourceFile, timestamp, senderRaw, senderResolved, isOwner, messageType, text, mediaId, systemType, fingerprint, sourceLine, originalOrder
Media: id, archiveId, messageId, fileName, mimeType, size, localPath, thumbnailPath, isMissing
Bookmark: id, archiveId, messageId, label, note, createdAt
IdentityMapping: archiveId, ownerName, aliases, senderMap

Tech stack:
Use Vite, plain JavaScript modules or React if needed, HTML, CSS, and a component-based UI. Use IndexedDB for web storage and Capacitor SQLite plus Capacitor Filesystem for Android storage. Use JSZip for ZIP handling, a robust local TXT parser, and Web Workers for heavy parsing if needed. Build a storage adapter interface so web and Android share the same repository API.

Implementation details:
Create a modular folder structure separating ui, components, services, parser, storage, data, utils, and platform adapters. Implement safe ZIP validation, path traversal protection, size limits, incremental parsing, virtual scrolling or pagination, local search indexing, and export to TXT, HTML, CSV, JSON, and ZIP. Support dark mode, light mode, responsive layout for phone/tablet/desktop, accessible contrast, and adjustable text size. Include thorough empty, error, invalid archive, permission denied, and missing media states.

Deliver a production-ready scaffold with sample mocked data, routing or view state management, reusable components, local persistence, and clean documentation stubs for architecture overview, database schema, parser spec, import flow, storage strategy, and testing strategy.

Business Idea

WA Chat Viewer Offline WhatsApp Archive Viewer 1. Deskripsi Produk WA Chat Viewer adalah aplikasi Android dan Web untuk membaca, mencari, mengelola, dan melihat kembali riwayat percakapan WhatsApp dari file hasil Export Chat. Aplikasi mengubah arsip WhatsApp berformat ZIP atau TXT menjadi tampilan percakapan yang mudah dibaca, menyerupai antarmuka WhatsApp. Aplikasi ini bukan aplikasi chatting dan tidak terhubung ke akun WhatsApp. Fungsinya hanya membaca serta mengelola arsip percakapan yang sebelumnya diekspor oleh pengguna. Prinsip utama: - Offline-first. - Local processing. - Privacy-focused. - No cloud dependency. - Modular architecture. 2. Target Platform Aplikasi memiliki dua target penggunaan: Android - Aplikasi utama berbentuk APK. - Menggunakan Capacitor untuk integrasi fitur native Android. - Menggunakan SQLite lokal untuk database. - Menggunakan filesystem aplikasi untuk menyimpan media. - Dapat mengakses file melalui Android Storage Access Framework atau mekanisme pemilih file yang kompatibel. Web - Dapat dijalankan melalui browser modern. - Tidak memerlukan backend. - Menggunakan IndexedDB untuk penyimpanan lokal jika tersedia. - Menggunakan File API untuk membaca file yang dipilih pengguna. - Media dan database web tidak boleh bergantung pada server cloud. Arsitektur harus memiliki lapisan penyimpanan terpisah agar implementasi Android dan Web dapat menggunakan antarmuka layanan yang sama tanpa memaksakan satu teknologi penyimpanan pada kedua platform. 3. Teknologi Frontend: - HTML. - CSS. - JavaScript. - React tidak wajib; gunakan JavaScript modular jika dipilih dalam implementasi. - Vite sebagai build tool jika diperlukan. Android: - Capacitor. - SQLite melalui plugin Capacitor yang kompatibel dan aktif dipelihara. - Capacitor Filesystem. - Android file picker. Web: - IndexedDB. - File API. - Browser local storage hanya untuk preferensi kecil, bukan penyimpanan arsip utama. File processing: - JSZip untuk membaca ZIP. - Parser JavaScript lokal untuk membaca TXT. - Web Worker jika dibutuhkan untuk pekerjaan parsing yang berat. Tidak boleh ada: - Backend server. - Cloud database. - Cloud storage. - External API untuk pemrosesan chat. - Upload arsip ke layanan pihak ketiga. 4. Sistem Import Arsip Format yang didukung: - ZIP hasil WhatsApp Export Chat. - TXT hasil WhatsApp Export Chat. Alur import: 1. Pengguna memilih file ZIP atau TXT. 2. Aplikasi memeriksa format dan ukuran file. 3. Jika ZIP, aplikasi membaca TXT dan daftar media di dalamnya. 4. Parser mendeteksi format tanggal, jam, pengirim, isi pesan, dan pesan sistem. 5. Aplikasi mencocokkan referensi media pada TXT dengan file yang tersedia. 6. Aplikasi menampilkan preview hasil parsing. 7. Pengguna mengonfirmasi nama pemilik arsip dan identitas pengirim. 8. Data disimpan ke database lokal. 9. Media disimpan di direktori lokal aplikasi. 10. Arsip muncul di Library. Persyaratan: - Mendukung variasi format tanggal dan waktu. - Mendukung pesan multiline. - Mendukung pesan sistem. - Mendukung nama pengirim yang mengandung spasi dan tanda baca. - Menangani pesan tanpa media. - Menangani media yang hilang. - Menangani file rusak atau tidak valid. - Menampilkan laporan import jika ada pesan atau media yang gagal dibaca. - Tidak menganggap semua format TXT WhatsApp identik. Arsip asli tidak boleh dimodifikasi atau dihapus selama proses import. 5. Identifikasi Pengirim Aplikasi tidak boleh menganggap bahwa pengirim pertama atau nama tertentu otomatis merupakan pemilik perangkat. Sediakan fitur manual: - Menentukan nama pemilik arsip. - Menambahkan variasi nama atau alias. - Menentukan pesan yang berasal dari pemilik. - Mengoreksi identitas pengirim jika salah. - Menyimpan pemetaan identitas per arsip. Untuk grup: - Tampilkan nama setiap pengirim. - Bedakan pesan setiap anggota. - Pertahankan informasi peserta jika tersedia. Jika identitas belum diketahui, aplikasi harus memberikan status belum teridentifikasi. 6. Chat Reader Tampilan percakapan menyerupai aplikasi WhatsApp. Komponen: - Bubble pesan masuk dan keluar. - Nama pengirim. - Tanggal dan waktu. - Pemisah tanggal. - Pesan teks. - Pesan multiline. - Pesan sistem. - Lampiran media. - Informasi media yang hilang. - Navigasi ke pesan sebelumnya dan berikutnya. Fitur: - Scroll percakapan. - Lompat ke tanggal tertentu. - Lompat ke pesan hasil pencarian. - Bookmark pesan. - Salin isi pesan. - Lihat detail pesan. Gunakan virtual scrolling atau pagination agar percakapan besar tidak dimuat sekaligus. 7. Library dan Multi-Archive Manager Halaman Library menampilkan semua arsip yang telah diimpor. Informasi setiap arsip: - Nama arsip. - Nama kontak atau grup. - Tanggal import. - Rentang tanggal percakapan. - Jumlah pesan. - Jumlah media. - Ukuran penyimpanan. - Status import. Fitur: - Import arsip baru. - Buka arsip. - Ubah nama arsip. - Lihat detail arsip. - Hapus arsip. - Export arsip. - Mengelola beberapa backup. 8. Penggabungan Arsip dan Duplikasi Sediakan fitur untuk menggabungkan arsip yang berasal dari percakapan yang sama. Sebelum penggabungan: - Tampilkan ringkasan kedua arsip. - Tampilkan perkiraan pesan duplikat. - Tampilkan perbedaan rentang tanggal. - Minta konfirmasi pengguna. Deteksi duplikasi harus mempertimbangkan: - Timestamp. - Pengirim. - Isi pesan. - Jenis pesan. - Informasi lampiran. Fingerprint digunakan sebagai bantuan identifikasi, bukan satu-satunya dasar penghapusan pesan. Jangan menghapus pesan yang hanya mirip tanpa verifikasi yang cukup. Pertahankan informasi sumber setiap pesan agar pengguna dapat mengetahui arsip asalnya. 9. Search dan Filter Pencarian: - Kata atau kalimat. - Nama pengirim. - Rentang tanggal. - Pencarian dalam satu arsip. - Pencarian seluruh Library. Filter: - Pengirim. - Tahun. - Bulan. - Rentang tanggal. - Pesan teks. - Foto. - Video. - Audio. - Dokumen. - Pesan sistem. Hasil pencarian harus dapat membuka pesan pada posisi aslinya dalam percakapan. Gunakan indeks SQLite pada Android dan mekanisme pencarian lokal yang sesuai pada Web. 10. Timeline Tampilkan aktivitas percakapan berdasarkan: - Tahun. - Bulan. - Hari. Fitur: - Jumlah pesan per periode. - Indikator aktivitas. - Navigasi langsung ke tanggal. - Navigasi ke pesan pertama pada periode yang dipilih. 11. Media Gallery Kategori: - Foto. - Video. - Audio. - Voice notes. - Dokumen. Fitur: - Thumbnail. - Preview media yang kompatibel. - Filter berdasarkan tanggal dan pengirim. - Informasi nama file. - Informasi ukuran file. - Tombol menuju pesan asli. Jika media tidak tersedia, tampilkan placeholder dan informasi bahwa file tidak ditemukan. Jangan mengubah file media asli. 12. Document Viewer Dukungan: - PDF menggunakan viewer lokal yang kompatibel. - Format dokumen lain dapat dibuka melalui aplikasi Android yang sesuai. - Format yang tidak didukung harus menawarkan informasi file dan opsi berbagi atau membuka dengan aplikasi lain. Jangan menjanjikan semua format dokumen dapat ditampilkan langsung di aplikasi. 13. Bookmark Fitur: - Menyimpan pesan penting. - Menambahkan catatan pribadi. - Memberikan label. - Melihat seluruh bookmark. - Membuka pesan dari bookmark. Bookmark harus tetap terhubung dengan pesan dan arsip asalnya. 14. Statistik Statistik per arsip: - Total pesan. - Pesan pemilik. - Pesan orang lain. - Jumlah pesan per pengirim. - Jumlah media. - Aktivitas per hari. - Aktivitas per bulan. - Rentang tanggal percakapan. Statistik hanya dihitung dari data lokal. 15. Export Format: - TXT. - HTML. - CSV. - JSON. - ZIP dengan media yang tersedia. Filter export: - Rentang tanggal. - Pengirim. - Jenis pesan. - Seluruh percakapan atau bagian tertentu. Hasil export harus mempertahankan urutan pesan dan informasi waktu. Export ZIP harus menyertakan referensi yang jelas antara pesan dan media. 16. UI/UX Gaya desain: - Modern. - Minimalis. - Profesional. - Ringan. - Mudah digunakan. Komponen: - Library cards. - Chat bubbles. - Bottom navigation untuk layar kecil. - Sidebar untuk layar besar. - Search panel. - Media gallery. - Settings panel. - Dialog konfirmasi. Tema: - Dark mode. - Light mode. - Ukuran teks yang dapat diatur. Status antarmuka: - Loading. - Empty. - Error. - Import progress. - Permission denied. - Missing media. - Invalid archive. Desain harus responsif pada Android phone, tablet, dan desktop. 17. Privasi dan Keamanan Ketentuan wajib: - Seluruh parsing dilakukan secara lokal. - Seluruh pencarian dilakukan secara lokal. - Tidak mengirim isi chat ke server. - Tidak mengirim media ke server. - Tidak menggunakan cloud storage. - Tidak menggunakan AI API untuk membaca percakapan. - Tidak mencatat isi pesan dalam log debugging. - Tidak meminta izin perangkat yang tidak diperlukan. - Penghapusan data harus melalui konfirmasi. - Arsip asli tidak boleh diubah saat import. Validasi file ZIP harus menangani nama file berbahaya, path traversal, file duplikat, dan ukuran ekstraksi yang tidak wajar. SQLite tidak otomatis terenkripsi. Jika enkripsi database diperlukan, evaluasi solusi enkripsi lokal yang kompatibel dengan Android dan Web. 18. Performa Persyaratan: - Pagination. - Virtual scrolling. - Lazy loading thumbnail. - Pemrosesan ZIP secara bertahap. - Indeks database. - Pemrosesan berat menggunakan Web Worker jika diperlukan. - Pengelolaan memori. - Pengelolaan penyimpanan. - Penanganan arsip berukuran besar. Aplikasi tidak boleh memuat semua pesan dan media ke RAM sekaligus. 19. Arsitektur dan Struktur Folder Sebelum coding: - Buat struktur folder modular. - Pisahkan UI, services, database, parser, storage, dan utilities. - Pisahkan implementasi penyimpanan Android dan Web. - Gunakan interface atau adapter untuk layanan lintas platform. - Pisahkan komponen tampilan dari logika parsing. - Gunakan pengelolaan state yang konsisten. Buat dokumentasi: - Architecture overview. - Database schema. - Parser specification. - Import flow. - Storage strategy. - Testing strategy. 20. Tahapan Pengembangan Tahap 1: Project foundation. Tahap 2: Database dan storage. Tahap 3: TXT parser. Tahap 4: ZIP import dan media matching. Tahap 5: Chat reader. Tahap 6: Library dan multi-archive. Tahap 7: Search dan filter. Tahap 8: Media gallery dan document viewer. Tahap 9: Bookmark dan statistik. Tahap 10: Export. Tahap 11: Capacitor Android integration. Tahap 12: Testing, optimasi, dan APK release. Setiap tahap harus memiliki: - Tujuan. - Daftar pekerjaan. - File atau modul yang dibuat. - Kriteria keberhasilan. - Test case. - Daftar masalah yang diketahui. Jangan melanjutkan ke tahap berikutnya jika tahap sebelumnya belum lulus pengujian. 21. Kriteria Keberhasilan Aplikasi dianggap memenuhi MVP jika: 1. Dapat mengimpor TXT dan ZIP. 2. Dapat membaca pesan dengan benar. 3. Dapat membedakan pengirim setelah pemetaan manual. 4. Dapat menampilkan percakapan dalam chat bubbles. 5. Dapat menyimpan arsip secara lokal. 6. Dapat membuka kembali arsip setelah aplikasi ditutup. 7. Dapat mencari pesan. 8. Dapat berjalan tanpa internet. 9. Tidak mengubah arsip asli. 10. Tidak mengirim data percakapan ke layanan eksternal. Fitur tambahan baru dinyatakan selesai setelah diuji menggunakan arsip pengujian yang tidak berisi data pribadi. 22. Target Akhir Menghasilkan WA Chat Viewer yang dapat membaca dan mengelola banyak arsip WhatsApp secara offline, memiliki antarmuka percakapan yang nyaman, mendukung media, memiliki pencarian yang cepat, serta dapat dipasang sebagai aplikasi Android APK. Prioritaskan MVP yang stabil dan dapat diuji sebelum menambahkan fitur lanjutan.

Make My PRD

Design by The Resonance | Powered by GPC – The AI Transformation Company

    PRD: WA Chat Viewer Offline WhatsApp Archive Viewer 1