Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vitormarcal/chatvault
WhatsApp convo backups.. Features directory import, auto email backup, and a user-friendly frontend. View messages effortlessly.
https://github.com/vitormarcal/chatvault
backup backup-tool java javascript kotlin nuxt nuxt3 self-hosted springboot vue vue3 whatsapp whatsapp-backup whatsapp-chat whatsapp-web
Last synced: 2 days ago
JSON representation
WhatsApp convo backups.. Features directory import, auto email backup, and a user-friendly frontend. View messages effortlessly.
- Host: GitHub
- URL: https://github.com/vitormarcal/chatvault
- Owner: vitormarcal
- License: mit
- Created: 2023-08-21T19:11:26.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-12-14T10:54:33.000Z (11 days ago)
- Last Synced: 2024-12-16T13:28:48.165Z (9 days ago)
- Topics: backup, backup-tool, java, javascript, kotlin, nuxt, nuxt3, self-hosted, springboot, vue, vue3, whatsapp, whatsapp-backup, whatsapp-chat, whatsapp-web
- Language: Kotlin
- Homepage:
- Size: 1.61 MB
- Stars: 114
- Watchers: 1
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# chatvault
Chat Vault is a Kotlin Spring Boot application designed to store backups of WhatsApp conversations from various sources, such as API imports, email, and directory monitoring, and provide easy access to these conversations through a frontend that resembles a chat application, like WhatsApp.
This project is still in development, and some features may not be fully implemented.
## Key Features
* Directory importing: Place files exported from whatsapp in specific directories to be imported into the application.
* Automated Email Backup: Set up an email in ChatVault and export your messages as attachments to that email. Chat Vault identifies this email and archives the messages and attachments automatically.
* Intuitive Frontend: To facilitate access to archived messages and their attachments, Chat Vault also includes a user-friendly frontend. Easily navigate conversations, search messages, and view attachments.## How to export via the Whatsapp app
Please read the [official Whatsapp FAQ](https://faq.whatsapp.com/1180414079177245/?cms_platform=android).
With the imported file, to ingest it into ChatVault you can:
* map a shared folder between the ChatVault import directory and your cell phone;
* send by email for automatic import into ChatVault;
* zip the imported file and upload it to the ChatVault interface.## Repository structure
This repository is divided into two main modules. They are the modules: frontend (javascript, vue, nuxt) and backend (kotlin, java, spring boot, gradle)
### Run Frontend module
The front end module is a Vue/Nuxt application and it serves what will be rendered by the browser: html, css, javascript and static assets.
To run the conventional way, with npm commands, follow the Readme in the frontend directory.You can run it with npm:
`npm run dev`
The frontend application will listen on port 3000 by default, unless you ran the backend application before (the backend listens on 8080), in which case the frontend will pick up a random port.
### Run Backend module
You can run the backend application without an IDE:
`./gradlew run`
The backend application will listen to 8080 port by default.
### Docker
Note that downloading container images might require you to authenticate to the GitHub Container Registry [steps here](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#authenticating-to-the-container-registry).
You can use compose.yml to create a database and build the frontend and backend project locally.`docker-compose -f compose.yml`
There are docker image packages on github. You can download the latest image with:
`docker pull ghcr.io/vitormarcal/chatvault:latest`
### Volumes
The app requires storing chat files in the file system. For Docker usage, please refer to the Environment Variables section.
- `chatvault.bucket.root`: This is the volume used to store your files. Do not delete this!
- `chatvault.bucket.import`: This volume is used temporarily to store chat files that are to be parsed by the app and then moved to bucket.root.
- `chatvault.bucket.export`: This volume is used temporarily to store a chat that is to be downloaded.
### Environment variables
For docker, the variables must be in upper case and where is "." it must be "_":
`some.environment.variable` is like `SOME_ENVIRONMENT_VARIABLE` in docker| Environment variables | obs | example |
|-------------------------------------------|------------------------------|----------------------------------------------------|
| Database | required | |
| spring.datasource.url | required | jdbc:postgresql://database_host:5432/database_name |
| spring.datasource.username | required | user |
| spring.datasource.password | required | secret |
| -------------------------- | -------------------------- | --------- |
| Email import | feat not required | |
| chatvault.email.enabled | not required | true |
| chatvault.email.host | required to feat | imap.server.com |
| chatvault.email.password | required to feat | secret |
| chatvault.email.port | required to feat | 993 |
| chatvault.email.username | required to feat | someuser |
| chatvault.email.debug | not required | true |
| -------------------------- | | -------------------------- |
| File system | not required | |
| chatvault.bucket.root | not required | /opt/chatvault/archive |
| chatvault.bucket.import | not required | /opt/chatvault/import |
| chatvault.bucket.export | not required | /opt/chatvault/export |
| -------------------------- | | -------------------------- |
| chatvault.host | not required | https://somehost.com ,http://localhost:3000 |
| spring.servlet.multipart.max-file-size | not required | 500MB |
| spring.servlet.multipart.max-request-size | not required | 500MB |
| chatvault.msgparser.dateformat | not required but recommended | dd/MM/yyyy HH:mm |
------* If not defined chatvault.msgparser.dateformat, the application will not be able to resolve ambiguities in certain situations