An experimental app that preserve your WA contact status updates (videos and images) to your local storage. Optionally, you can build a bot that respond to certain keywords on top of it.
This repository has been archived on 2026-06-08. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • Go 78.5%
  • HTML 18.3%
  • JavaScript 1.1%
  • CSS 1.1%
  • Makefile 1%
Find a file
2024-03-10 09:38:47 +07:00
.github/assets Add how to execute initial run 2024-03-04 05:12:21 +07:00
cmd Change variable name cli to client 2024-03-10 08:28:59 +07:00
data/media Use pure tailwind 2024-03-01 22:57:01 +07:00
handler Change fiber response func name 2024-03-10 09:06:46 +07:00
internal Add copyright notice to ParseJID func 2024-03-10 07:33:09 +07:00
views Embed the static files 2024-03-03 22:33:29 +07:00
.air.toml Embed the static files 2024-03-03 22:33:29 +07:00
.editorconfig Remove unused .editorconfig configuration 2024-03-10 09:24:31 +07:00
.env.example docs: Adding how to run this app 2024-03-04 02:20:03 +07:00
.gitignore Embed the static files 2024-03-03 22:33:29 +07:00
go.mod Simplyfying event handler 2024-03-04 00:48:47 +07:00
go.sum Simplyfying event handler 2024-03-04 00:48:47 +07:00
LICENSE Add license 2024-03-10 08:04:46 +07:00
main.go Change repository name 2024-03-03 02:47:47 +07:00
Makefile fix: Makefile clean files 2024-03-10 09:38:47 +07:00
package-lock.json Adding HTMX to NPM dev dependency 2024-03-02 01:51:50 +07:00
package.json Embed the static files 2024-03-03 22:33:29 +07:00
README.md Reply to messages is not enabled by default 2024-03-05 17:25:57 +07:00
tailwind.config.js Change repository name 2024-03-03 02:47:47 +07:00

WA Status Archiver

This is experimental, use at your own risk. And DO NOT (I repeat, DO NOT) expose the WEB UI to the public!

This is a simple app that preserve your WA contact status updates (videos and images) to your local storage. Optionally, you can build a bot that respond to certain keywords on top of it.

A little background about this project: I want to learn and write my first HTMX app. Instead of usual “To-Do's” app, I want to start with something different using go.mau.fi/whatsmeow.

1. Attribution

Attribution comes first, this project is build on top of these following awesome open source projects:

And many indirect dependencies can be found in go.mod, go.sum, package.json and package-lock.json.

2. Trying this app

Screenshot: Initial run, Device Paired, Login Page, Contact Page, Status Page

2.1 Requirements (tested on)

  • Node.js >=20.x
  • Go 1.22.x
  • PostgreSQL >=15.x

2.2 Prepare the assets

Only run these steps once.

  1. Clone this repository
  2. Copy .env.example to .env and modify as needed (especially SECRET_KEY and DB config)
  3. run npm ci
  4. run make static

2.3 Running the “bot”

  1. Run go run . run
  2. On initial setup, it will display QR code. Scan it by linking device with your phone.

2.4 Running the web UI

To access Web UI, you need to create an admin account. This can be done by running go run . admin create and fill your username and password.

After that, you can run go run . serve and access the UI from the browser. (default: http://127.0.0.1:18088)

3. Build the binary file

make build

The binary file will be placed in the bin directory.

4. Development

If you want to develop or modify UI:

npm install
make static
npm run dev
go run . serve

Thanks to cosmtrek/air, you can run air serve to live reload the HTTP server (Do not use air when running run command).

5. To-Do's

  • Write the To-Do's (LMAO)

6. FAQ

6.1 Is this project stable?

Definitely NO.

6.2 What database is supported?

Although whatsmeow support SQLite and PostgreSQL, I only create this project on top of PostgreSQL. Feel free to adapt and implement the database driver to fit with your needs.

6.3 Is this project support for multiple WA account?

No, this project only support one account.

6.4 Can this app send or response to messages?

Yes, you can search for ParseCmd function call in ./cmd/run.go (commented out) and botSendMsg() that use protobuf to reply to specific message.