{"id":41339622,"url":"https://github.com/soulteary/herald","last_synced_at":"2026-02-06T11:55:47.771Z","repository":{"id":333537653,"uuid":"1137676828","full_name":"soulteary/herald","owner":"soulteary","description":"A secure OTP and verification-code service for Email and SMS delivery with built-in rate limiting and auditing. / 安全的 OTP/验证码服务，支持邮件及短信投递，内置限流与审计。","archived":false,"fork":false,"pushed_at":"2026-01-31T02:58:24.000Z","size":735,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-31T17:57:24.412Z","etag":null,"topics":["2fa","enjoy-with-stargate","mfa","otp","rate-limiting","security","sms","verification"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soulteary.png","metadata":{"files":{"readme":"README.deDE.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-19T17:24:22.000Z","updated_at":"2026-01-31T02:57:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"38bbd655-3ffa-4723-ae70-542ae5d94648","html_url":"https://github.com/soulteary/herald","commit_stats":null,"previous_names":["soulteary/herald"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/soulteary/herald","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulteary%2Fherald","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulteary%2Fherald/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulteary%2Fherald/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulteary%2Fherald/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soulteary","download_url":"https://codeload.github.com/soulteary/herald/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soulteary%2Fherald/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29035648,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T06:11:29.234Z","status":"ssl_error","status_checked_at":"2026-02-03T06:11:03.146Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2fa","enjoy-with-stargate","mfa","otp","rate-limiting","security","sms","verification"],"created_at":"2026-01-23T06:42:05.100Z","updated_at":"2026-02-03T06:27:06.506Z","avatar_url":"https://github.com/soulteary.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Herald - OTP- und Verifizierungscode-Service\n\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)\n[![Go Version](https://img.shields.io/badge/go-1.25+-blue.svg)](https://golang.org)\n[![codecov](https://codecov.io/gh/soulteary/herald/branch/main/graph/badge.svg)](https://codecov.io/gh/soulteary/herald)\n[![Go Report Card](https://goreportcard.com/badge/github.com/soulteary/herald)](https://goreportcard.com/report/github.com/soulteary/herald)\n\n\u003e **📧 Ihr Gateway zur Sicheren Verifizierung**\n\n## 🌐 Mehrsprachige Dokumentation\n\n- [English](README.md) | [中文](README.zhCN.md) | [Français](README.frFR.md) | [Italiano](README.itIT.md) | [日本語](README.jaJP.md) | [Deutsch](README.deDE.md) | [한국어](README.koKR.md)\n\n![Herald](.github/assets/banner.jpg)\n\nHerald ist ein produktionsreifer, eigenständiger OTP- und Verifizierungscode-Service, der Verifizierungscodes per E-Mail und SMS sendet. Er verfügt über integriertes Rate-Limiting, Sicherheitskontrollen und Audit-Protokollierung. Herald ist so konzipiert, dass es unabhängig funktioniert und bei Bedarf mit anderen Diensten integriert werden kann.\n\n## Kernfunktionen\n\n- 🔒 **Sicherheitsorientiert**: Challenge-basierte Verifizierung mit Argon2-Hash-Speicherung, mehrere Authentifizierungsmethoden (mTLS, HMAC, API Key)\n- 📊 **Integriertes Rate-Limiting**: Mehrdimensionales Rate-Limiting (pro Benutzer, pro IP, pro Ziel) mit konfigurierbaren Schwellenwerten\n- 📝 **Vollständige Audit-Spur**: Vollständige Audit-Protokollierung für alle Operationen mit Anbieter-Tracking\n- 🔌 **Erweiterbare Anbieter**: Erweiterbare E-Mail- und SMS-Anbieter-Architektur\n\n## Schnellstart\n\n### Mit Docker Compose\n\nDer einfachste Weg, um zu beginnen, ist mit Docker Compose, das Redis enthält:\n\n```bash\n# Start Herald and Redis\ndocker-compose up -d\n\n# Verify the service is running\ncurl http://localhost:8082/healthz\n```\n\nErwartete Antwort:\n```json\n{\n  \"status\": \"ok\",\n  \"service\": \"herald\"\n}\n```\n\n### API testen\n\nErstellen Sie eine Test-Challenge (erfordert Authentifizierung - siehe [API-Dokumentation](docs/deDE/API.md)):\n\n```bash\n# Set your API key (from docker-compose.yml: your-secret-api-key-here)\nexport API_KEY=\"your-secret-api-key-here\"\n\n# Create a challenge\ncurl -X POST http://localhost:8082/v1/otp/challenges \\\n  -H \"X-API-Key: $API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"user_id\": \"test_user\",\n    \"channel\": \"email\",\n    \"destination\": \"user@example.com\",\n    \"purpose\": \"login\"\n  }'\n```\n\n### Logs anzeigen\n\n```bash\n# Docker Compose logs\ndocker-compose logs -f herald\n```\n\n### Manuelle Bereitstellung\n\nFür manuelle Bereitstellung und erweiterte Konfiguration siehe [Bereitstellungsanleitung](docs/deDE/DEPLOYMENT.md).\n\n## Grundkonfiguration\n\nHerald benötigt minimale Konfiguration, um zu beginnen:\n\n| Variable | Description | Default | Required |\n|----------|-------------|---------|----------|\n| `PORT` | Server port | `:8082` | No |\n| `REDIS_ADDR` | Redis address | `localhost:6379` | Yes |\n| `API_KEY` | API key for authentication | - | Recommended |\n\nFür vollständige Konfigurationsoptionen einschließlich Rate-Limits, Challenge-Ablaufzeit und Anbieter-Einstellungen siehe [Bereitstellungsanleitung](docs/deDE/DEPLOYMENT.md#configuration).\n\n## Dokumentation\n\n### Für Entwickler\n\n- **[API-Dokumentation](docs/deDE/API.md)** - Vollständige API-Referenz mit Authentifizierungsmethoden, Endpunkten und Fehlercodes\n- **[Bereitstellungsanleitung](docs/deDE/DEPLOYMENT.md)** - Konfigurationsoptionen, Docker-Bereitstellung und Integrationsbeispiele\n\n### Für Betrieb\n\n- **[Überwachungsanleitung](docs/deDE/MONITORING.md)** - Prometheus-Metriken, Grafana-Dashboards und Alerting\n- **[Fehlerbehebungsanleitung](docs/deDE/TROUBLESHOOTING.md)** - Häufige Probleme, Diagnoseschritte und Lösungen\n\n### Dokumentationsindex\n\nFür einen vollständigen Überblick über alle Dokumentationen siehe [docs/deDE/README.md](docs/deDE/README.md).\n\n## License\n\nSee [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoulteary%2Fherald","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoulteary%2Fherald","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoulteary%2Fherald/lists"}