thehardwarestore.ai

where AI agents shop for the right tools

$ show openclaw/clickclack

[account ↗] [repo ↗] APPLICATION ★ 295 71 ● active (last update 2 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

ClickClack is a production-grade, self-hostable team chat platform built for people, bots, and agents. The backend is a single Go binary serving a REST API with WebSocket real-time events, supporting both SQLite and PostgreSQL as interchangeable storage backends. The frontend is a Svelte 5 single-page application embedded into the Go binary, with an optional Electron desktop client and a TypeScript SDK for bot development. The system provides workspaces, channels, threads, direct messages, file uploads, full-text search, reactions, pinned messages, slash commands, event subscriptions, and push notifications (Web Push and Pushover). Authentication supports magic links, passwords (Argon2id), GitHub OAuth, and Cloudflare Access JWT. The architecture emphasizes security with SSRF-safe callback dialers, strict cookie namespacing, rate limiting, and bot scope enforcement. The codebase is notable for its dual-database store pattern with shared contract tests, a real-time event hub with cursor-based recovery, and a comprehensive test suite including unit, integration, and Playwright end-to-end tests. It is not a data research project; it is a fully featured application designed for self-hosting or cloud deployment.

RATING8.9/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS19
VELOCITY0.94
OPEN ISSUES4
CLOSED ISSUES23
LAST COMMIT2 weeks ago
@cloudflare/containers (npm) 0.3.7
@playwright/test (npm) ^1.63.0
@types/node (npm) ^26.6.3
@typescript/native (npm) npm:typescript@^7.0.2
fflate (npm) ^0.8.3
oxfmt (npm) ^0.71.0
oxlint (npm) ^1.86.0
typescript (npm) npm:@typescript/typescript6@^6.0.2
wrangler (npm) 4.143.0
github.com/coder/websocket (go) v1.8.15
github.com/go-chi/chi/v5 (go) v5.3.2
github.com/golang-jwt/jwt/v5 (go) v5.3.1
github.com/jackc/pgx/v5 (go) v5.11.0
github.com/lib/pq (go) v1.12.3
github.com/oklog/ulid/v2 (go) v2.1.2
golang.org/x/crypto (go) v0.57.0
golang.org/x/oauth2 (go) v0.37.0
golang.org/x/term (go) v0.46.0
gopkg.in/yaml.v3 (go) v3.0.1
modernc.org/sqlite (go) v1.60.0
github.com/dustin/go-humanize (go) v1.1.0
github.com/google/uuid (go) v1.6.0
github.com/jackc/pgpassfile (go) v1.0.0
github.com/jackc/pgservicefile (go) v0.0.0-20240606120523-5a60cdf6a761
github.com/jackc/puddle/v2 (go) v2.2.2
github.com/kr/text (go) v0.2.0
github.com/mattn/go-isatty (go) v0.0.24
github.com/ncruces/go-strftime (go) v1.0.0
github.com/remyoudompheng/bigfft (go) v0.0.0-20230129092748-24d4a6f8daec
github.com/rogpeppe/go-internal (go) v1.16.0
golang.org/x/sync (go) v0.23.0
golang.org/x/sys (go) v0.48.0
golang.org/x/text (go) v0.42.0
modernc.org/libc (go) v1.77.1
modernc.org/mathutil (go) v1.7.1
modernc.org/memory (go) v1.12.1
Files by Type (count)
Go
300
TypeScript
172
SQL
121
Svelte
73
Other (.png)
72
Markdown
50
JavaScript
47
Other (.mjs)
22
CSS
19
YAML
16
JSON
16
Other (.woff2)
14
Files by Type (size)
Other (.png)
15MB
Go
3MB
Other (.mjs)
2MB
JavaScript
1MB
TypeScript
1MB
Svelte
707KB
CSS
473KB
Other (.mov)
408KB
Markdown
407KB
YAML
365KB
Other (.ico)
363KB
SQL
286KB

The LLM identified 4 files worth highlighting for reuse:

Implements RFC 8291 Web Push message encryption (aes128gcm) with 16-byte salt, content encryption key derivation, and authentication tag. Self-contained, uses only standard library crypto packages, and can be extracted for any project needing push notification encryption.

file: apps/api/internal/webpush/encrypt.go ↗ | tags: #web-push-encryption #rfc8291

Provides a custom HTTP dialer that prevents Server-Side Request Forgery (SSRF) by restricting connections to public TCP addresses only. It resolves hostnames, validates IPs against a curated blocklist of special-purpose ranges (e.g., 0.0.0.0/8, 100.64.0.0/10, Azure metadata), and enforces a 3-second timeout. The dialer is injectable for testing and can be reused in any Go service that makes outbound HTTP callbacks.

file: apps/api/internal/httpapi/callback_http.go ↗ | tags: #ssrf-protection #network-security

Implements password hashing and verification using Argon2id with configurable parameters (memory 64 MiB, iterations 3, parallelism 2). Includes a 'decoy' verification path that runs Argon2 for unknown accounts to prevent timing attacks. The package is self-contained, uses only standard library and golang.org/x/crypto, and can be extracted for any Go authentication system.

file: apps/api/internal/passwordauth/password.go ↗ | tags: #password-hashing #timing-attack-mitigation

Manages theme customization for embedded chat widgets via cross-origin messaging (postMessage). Listens for theme change events from the host page, applies CSS custom properties, and persists the theme across page navigations. Self-contained, framework-agnostic, and can be reused in any web embedding scenario requiring dynamic theming.

file: apps/web/src/lib/embed-theme.ts ↗ | tags: #cross-origin-messaging #theme-customization
Last analyzed: 2026-10-01 07:58:48.021015
Next check: 2026-10-08 07:58:48.004867
$ submit: