- Analyze your WhatsApp Chat in Seconds
- Reveal insights & get statistics, while all data stays on your device.
- No chat data is sent to a server it runs only locally in your browser.
This is an open-source tool to analyze your WhatsApp Chat and create pdfs from your chat. You can run the code locally on your device or visit whatsanalyze.com to see the hosted "main" branch. The website is hosted on github pages and all code is visible.
No data about your chat is transferred to any server at all.
Dev deployment: https://whatsanalyze-80665.web.app
Read docs/modernization-runbook.md before
upgrading dependencies or changing the frontend, PDF, localization, Firebase,
or PayPal integrations. It records the current architecture, migration
decisions, deployment procedure, verification commands, and known follow-up
work.
Please report bugs in the github issues.
We use Node.js 22 and pnpm 8.15.8. The project also needs Python 3.11 because some legacy build dependencies compile native modules.
A Nix flake is provided with all dependencies pre-configured:
# Enter development shell
$ nix develop
# Install dependencies
$ pnpm install --frozen-lockfile# install dependencies
$ pnpm install
# serve with hot reload at localhost:3000
$ pnpm dev
# build for production and launch server (recommended for low-memory environments)
$ pnpm build
$ pnpm start
# generate static project
$ pnpm generateIf running on a remote server or VM, expose the instance to your tailnet:
# For production preview (HTTP on port 3000):
$ tailscale serve --bg 3000
# For dev server (HTTPS on port 3000):
$ tailscale serve --bg https+insecure://localhost:3000Search for prettier and eslint in pycharm to set it up on saving a file. You can also add .vue there for running stuff on Vue files as well.
For detailed explanation on how things work, check out Nuxt.js docs.
https://letsencrypt.org/docs/certificates-for-localhost/
openssl req -x509 -out 0.0.0.0.crt -keyout 0.0.0.0.key -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' -extensions EXT -config <( printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")Also need to install the .crt file and trust it in your system settings
Code to generate certificate installable on android:
openssl pkcs12 -export -legacy -in localhost.pem -inkey localhost-key.pem -out 0.0.0.0.p12Rename it to .txt and then send per bluetooth. (somehow .p12 is rejected as file format). On phone need to accept, and then find the file in file app as most recent in downloads section. Rename again to .p12 and tap to install.
brew install mkcert
mkcert localhost
to install on your mac: mkcert -install
on android we have to install the root CA to trust the certificate:
- find root ca with mkcert -CAROOT
- transfer the rootCA.pem file to android device
- might need to rename to .txt for bluetooth transfer
- go to settings > security > encryption and credentials > install certificate > CA certificate
- yes
- select the copied rootCA.pem file
forward port 3000 to android device with chrome on chrome://inspect/#devices
on android go to https://localhost:3000
