HuShield

Contribute to HuShield

This is a small project that needs help, and it is honest about that. Below is real work with real context — not a wall of "good first issue" labels slapped on things nobody scoped.

One rule before you start

HuShield holds no personally identifiable information, anywhere, by design. The only identity in the system is an Apple App Attest key. No accounts, no phone numbers tied to reporters, no contact data, no analytics identifiers.

This is not a preference that might get traded away later — it is the product. A pull request that introduces a user identifier will be declined however well it is written. If a feature seems to need identity, open an issue and let's find another route. There usually is one.

Good first issues

Small, scoped, and they do not require understanding the whole system.

Help especially wanted

Getting set up

You need Go, MySQL 8+, and — for iOS work — Xcode plus xcodegen.

git clone https://github.com/Hushield/hushield.git
cd hushield

# Backend
DB_DSN='root@tcp(127.0.0.1:3306)/spamfilter_dev?parseTime=true&multiStatements=true' \
ADMIN_TOKEN=changeme go run ./cmd/server

# The full test gate — this is what "green" means
make test

Two things that will save you time

How the code is laid out

internal/scoring and internal/trust are pure, dependency-free, and at 100% and 95% coverage. They are the easiest place to start reading and the easiest to test — please keep them that way. internal/store is the only package that touches SQL. ios/SpamFilterKit holds everything shared between the app and its two extensions.

What to expect from us

Reviews come from a small team, so turnaround varies. If a PR sits for a week with no response, comment on it — that is a useful nudge, not nagging.

Not every PR gets merged. If yours is declined it will be about scope or approach, and you will get the reasoning rather than silence.