Ember Analysis is a cross-platform desktop application for importing, visualizing, and quizzing yourself on your WhatsApp chat data. Built with Vue 3, TypeScript, Tailwind CSS, Vite, and Tauri (Rust).
- Features
- Prerequisites
- Installation
- Configuration
- Development
- Usage
- Project Structure
- Scripts
- Packaging & Distribution
- Data Caching & Storage
- Testing
- Troubleshooting
- Contributing
- License
- Acknowledgments
- Appendix: Installing Rust
- Import WhatsApp chat export JSON files
- Interactive graph visualization of entities and relationships
- Calendar view for timeline analysis
- Recall quiz to test your memory of chat events
- Data caching for faster subsequent loads
- Cross-platform support (Windows, macOS, Linux)
- Node.js v16 or higher
- npm or Yarn
- Rust toolchain (rustc ≥ 1.60, cargo)
- Tauri prerequisites
- Clone the repo:
git clone https://github.com/psygos/ember.git cd ember - Install frontend dependencies:
npm install # or yarn - (Optional) Create a
.envfile in the root to defineVITE_*environment variables:VITE_API_KEY=your_api_key
VITE_*variables control API integrations and feature flags.- Tauri settings in
src-tauri/tauri.conf.json. - GUI theming via Tailwind CSS configuration (
tailwind.config.js).
- Full stack (Tauri + Vue):
npm run tauri-dev
- Frontend only:
Open http://localhost:5173 in your browser.
npm run dev
- Launch the app.
- Navigate to Import Chats and select your WhatsApp JSON exports.
- View or filter imported chats under Chats.
- Explore the Graph to visualize relationships.
- Switch to Calendar for a timeline view.
- Play Recall Quiz to test your memory.
- Export analysis results via Export menu.
ember/
├── src/ # Vue 3 frontend (SFCs)
│ ├── components/ # Reusable Vue components
│ ├── utils/ # Utility functions and API wrappers
│ ├── App.vue # Root component
│ └── main.ts # Entry point
├── public/ # Static assets
├── data/ # Imported chats & cache
│ └── cache/ # Parsed data cache
├── src-tauri/ # Rust backend (Tauri)
│ ├── src/main.rs
│ └── tauri.conf.json
├── package.json # Scripts & dependencies
├── tsconfig.json # TypeScript config
├── vite.config.ts # Vite config
├── tailwind.config.js # Tailwind CSS config
└── README.md # This file
| Command | Description |
|---|---|
npm run dev |
Run frontend in dev mode |
npm run tauri-dev |
Run full Tauri (frontend + backend) in dev |
npm run build |
Build frontend for production |
npm run tauri-build |
Build Tauri app for all platforms |
npm run clean |
Remove frontend build artifacts |
npm run clean:rust |
Remove Rust build artifacts |
npm run lint |
Run linters and format checks |
- Imported chat JSON files are read and stored in
data/. - Parsed and analyzed data is cached under
data/cache/for faster loading. - Clear cache using:
npm run clean:cache
Currently, there are no automated tests. Future plans include unit and integration tests for frontend and backend.
- Missing Rust toolchain: ensure
rustupis installed andcargois on your PATH. - Port conflicts: change dev server port in
vite.config.ts.
We welcome contributions! Please:
- Fork the repo.
- Create a feature branch (
git checkout -b feature/xyz). - Commit your changes (
git commit -m 'Add new feature'). - Push to your branch (
git push origin feature/xyz). - Open a Pull Request.
To install the Rust toolchain:
- Install
rustup:curl https://sh.rustup.rs -sSf | sh - Follow the interactive prompts to install the stable toolchain.
- Ensure your PATH is updated (restart your shell or run
source $HOME/.cargo/env). - Verify installation:
rustc --version cargo --version