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.
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.
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.
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.
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.
Team & resourcing - Small cross-functional team - 2 full-stack engineers, 1 product designer, and part-time PM/QA.
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.
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.
Design by The Resonance | Powered by GPC – The AI Transformation Company