No description
  • Dart 62%
  • JavaScript 35.2%
  • Shell 1.2%
  • Dockerfile 0.4%
  • Python 0.3%
  • Other 0.8%
Find a file
zigzag 925c9f4ec3
All checks were successful
ci / commits (push) Successful in 11s
ci / test (push) Successful in 15s
ci / build-web (push) Successful in 8m27s
feat(shell): back and forward through channels, DMs and pages
2026-11-07 16:48:44 -05:00
.forgejo ci(release): build and publish native clients on a v* tag 2026-11-07 04:27:54 -05:00
android fix(android): let url_launcher see browsers on Android 11+ 2026-11-06 21:20:03 -05:00
assets/fonts feat(ui): light and dark themes, and a less generic look 2026-10-17 08:03:15 -04:00
desktop-tauri feat(update): download releases from the client repo 2026-11-07 04:27:54 -05:00
docker feat(web): serve under /app/ and default to the page's own origin 2026-10-17 17:38:13 -04:00
docs feat(release): publish Android APKs alongside the desktop tarball 2026-09-25 21:53:07 -04:00
integration_test feat(dm): voice calls in direct messages with a caller-held key 2026-11-07 00:27:13 -05:00
ios feat(android): build the client as an APK 2026-09-25 21:51:38 -04:00
lib feat(shell): back and forward through channels, DMs and pages 2026-11-07 16:48:44 -05:00
linux build(linux): ship the app icon in the bundle for the install script 2026-11-07 15:07:30 -05:00
spikes chore: RNNoise works natively, and the desktop hook exists but is not exposed 2026-09-12 18:23:12 -04:00
test feat(auth): verify-email banner, forgot password, and an honest pin reset warning 2026-11-07 07:19:11 -05:00
test_driver test(client): drive the real app in a real browser 2026-09-04 21:53:41 -04:00
third_party/flutter_webrtc feat(voice): share other apps' audio with a screen on Linux desktop 2026-11-03 17:48:13 -05:00
tool build(linux): ship the app icon in the bundle for the install script 2026-11-07 15:07:30 -05:00
web Merge branch 'feat/unread-notifications' into integration 2026-11-06 21:23:36 -05:00
.dockerignore feat(docker): containerize the web client + add CI/CD 2026-08-31 18:18:21 -04:00
.gitignore fix(release): drop the test tarball that was committed by accident 2026-09-15 12:33:02 -04:00
.metadata feat(android): build the client as an APK 2026-09-25 21:51:38 -04:00
analysis_options.yaml feat(voice): fork flutter_webrtc to run RNNoise on the desktop capture path 2026-09-12 20:22:49 -04:00
CHANGELOG.md feat(shell): back and forward through channels, DMs and pages 2026-11-07 16:48:44 -05:00
Dockerfile Merge branch 'feat/update-notifications' into integration 2026-11-06 21:33:25 -05:00
LICENSE chore: license under AGPL-3.0 2026-11-06 17:36:07 -05:00
pubspec.lock feat(2fa): QR code for authenticator apps and password managers 2026-11-07 06:05:16 -05:00
pubspec.yaml feat(2fa): QR code for authenticator apps and password managers 2026-11-07 06:05:16 -05:00
README.md Update README.md 2026-11-07 00:17:41 +01:00

ZippChat client

The client for ZippChat: Discord features with Signal security. Servers, channels, voice and DMs, end-to-end encrypted on your device.

One Flutter codebase for the web, Linux and Android. It signs in to the main service or to any self-hosted instance.

Building

Everything builds in Docker, so nothing needs installing besides Docker.

DOCKER_BUILDKIT=0 docker build -t zippchat-web .   # web client, served by nginx
tool/build-linux.sh                                 # Linux desktop
tool/build-android.sh                               # Android APKs
tool/test.sh                                        # tests

Backend addresses are build-time settings, e.g. --dart-define=API_BASE=https://www.zippchat.app. The web build defaults to the origin it is served from.

Protocol

The encryption and API specs the client implements are published at www.zippchat.app/docs.

License

AGPL-3.0. The ZippChat name and logo are not covered by it: if you publish a modified client, give it a different name.

Creator Note

Hey y'all! I'm zigzag. Super excited about what I built here. To be clear I do use AI to assist in making things decently fast. I've found a pretty decent work flow that gets stuff done pretty quick, but I do want to be clear I do understand and review what the AI puts out. All of the design behind encryption and major client designs were all things that I wrote myself. This server was originally a project I started back in 2022. I wrote the majority of the back end code but could never find a person to help me with the client. Thanks to the tool that is AI, I've been able to make what we have now. To be frank, I suck at writting front end, otherwise I would have done it myself, so if there is anyone trustworthy that would like to take over the client and remove some AI slop, I'd be excited to have you!

Sincerely, Zigzag