{"id":35117149,"url":"https://github.com/lin-snow/ech0","last_synced_at":"2026-05-02T13:01:04.557Z","repository":{"id":283590630,"uuid":"952272279","full_name":"lin-snow/Ech0","owner":"lin-snow","description":"Ech0 – An open-source, self-hosted lightweight publishing platform for personal idea sharing.","archived":false,"fork":false,"pushed_at":"2026-04-25T13:11:28.000Z","size":102255,"stargazers_count":1943,"open_issues_count":2,"forks_count":151,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-25T13:32:21.448Z","etag":null,"topics":["ech0","go","golang","markdown","memo","microblog","notecard","self-hosted","social-network","sqlite","sqlite3","vue","vue3"],"latest_commit_sha":null,"homepage":"https://Ech0.app","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lin-snow.png","metadata":{"files":{"readme":"README.de.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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},"funding":{"custom":["https://afdian.com/a/l1nsn0w","https://github.com/lin-snow/Ech0/blob/main/docs/imgs/pay.jpeg"]}},"created_at":"2025-03-21T02:30:08.000Z","updated_at":"2026-04-25T13:11:32.000Z","dependencies_parsed_at":"2026-02-20T05:05:22.236Z","dependency_job_id":"810f718a-8705-4914-9198-9d86d7cc10b4","html_url":"https://github.com/lin-snow/Ech0","commit_stats":null,"previous_names":["lin-snow/ech0"],"tags_count":207,"template":false,"template_full_name":null,"purl":"pkg:github/lin-snow/Ech0","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lin-snow%2FEch0","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lin-snow%2FEch0/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lin-snow%2FEch0/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lin-snow%2FEch0/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lin-snow","download_url":"https://codeload.github.com/lin-snow/Ech0/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lin-snow%2FEch0/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32534972,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T12:25:33.646Z","status":"ssl_error","status_checked_at":"2026-05-02T12:24:51.733Z","response_time":132,"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":["ech0","go","golang","markdown","memo","microblog","notecard","self-hosted","social-network","sqlite","sqlite3","vue","vue3"],"created_at":"2025-12-27T21:08:56.764Z","updated_at":"2026-05-02T13:01:04.543Z","avatar_url":"https://github.com/lin-snow.png","language":"Go","funding_links":["https://afdian.com/a/l1nsn0w","https://github.com/lin-snow/Ech0/blob/main/docs/imgs/pay.jpeg"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg alt=\"Ech0\" src=\"./docs/imgs/logo.svg\" width=\"150\"\u003e\n\n# Ech0\n\n[Vorschau](https://memo.vaaat.com/) · [Offizielle Seite \u0026 Dokumentation](https://www.ech0.app/) · [Releases](https://lin-snow.github.io/Ech0/) · [Ech0 Hub](https://hub.ech0.app/)\n\n\u003ca title=\"en-US\" href=\"./README.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/-English-545759?style=for-the-badge\" alt=\"English\"\u003e\u003c/a\u003e \u003ca title=\"zh\" href=\"./README.zh.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/-简体中文-545759?style=for-the-badge\" alt=\"简体中文\"\u003e\u003c/a\u003e \u003cimg src=\"https://img.shields.io/badge/-Deutsch-F54A00?style=for-the-badge\" alt=\"Deutsch\"\u003e \u003ca title=\"ja\" href=\"./README.ja.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/-日本語-545759?style=for-the-badge\" alt=\"日本語\"\u003e\u003c/a\u003e\n\n[![GitHub release](https://img.shields.io/github/v/release/lin-snow/Ech0?style=flat-square\u0026logo=github\u0026color=blue)](https://github.com/lin-snow/Ech0/releases)\n[![License](https://img.shields.io/github/license/lin-snow/Ech0?style=flat-square\u0026color=orange)](./LICENSE)\n[![Go Report](https://goreportcard.com/badge/github.com/lin-snow/Ech0?style=flat-square)](https://goreportcard.com/report/github.com/lin-snow/Ech0)\n[![Go Version](https://img.shields.io/github/go-mod/go-version/lin-snow/Ech0?style=flat-square\u0026logo=go\u0026logoColor=white)](./go.mod)\n[![Release Build](https://img.shields.io/github/actions/workflow/status/lin-snow/Ech0/release.yml?style=flat-square\u0026logo=github\u0026label=build)](https://github.com/lin-snow/Ech0/actions/workflows/release.yml)\n[![i18n](https://img.shields.io/badge/i18n-4_locales-orange?style=flat-square\u0026logo=googletranslate\u0026logoColor=white)](./web/src/locales/messages)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/lin-snow/Ech0)\n[![Docker Pulls](https://img.shields.io/docker/pulls/sn0wl1n/ech0?style=flat-square\u0026logo=docker\u0026logoColor=white)](https://hub.docker.com/r/sn0wl1n/ech0)\n[![Docker Image Size](https://img.shields.io/docker/image-size/sn0wl1n/ech0/latest?style=flat-square\u0026logo=docker\u0026logoColor=white)](https://hub.docker.com/r/sn0wl1n/ech0)\n[![Stars](https://img.shields.io/github/stars/lin-snow/Ech0?style=flat-square\u0026logo=github)](https://github.com/lin-snow/Ech0/stargazers)\n[![Forks](https://img.shields.io/github/forks/lin-snow/Ech0?style=flat-square\u0026logo=github)](https://github.com/lin-snow/Ech0/network/members)\n[![Discussions](https://img.shields.io/github/discussions/lin-snow/Ech0?style=flat-square\u0026logo=github)](https://github.com/lin-snow/Ech0/discussions)\n[![Last Commit](https://img.shields.io/github/last-commit/lin-snow/Ech0?style=flat-square\u0026logo=github)](https://github.com/lin-snow/Ech0/commits/main)\n[![Contributors](https://img.shields.io/github/contributors/lin-snow/Ech0?style=flat-square\u0026logo=github)](https://github.com/lin-snow/Ech0/graphs/contributors)\n[![Sponsor](https://img.shields.io/badge/sponsor-Afdian-FF7878?style=flat-square\u0026logo=githubsponsors\u0026logoColor=white)](https://afdian.com/a/l1nsn0w)\n\n\u003cbr /\u003e\n\n\u003ca href=\"https://hellogithub.com/repository/lin-snow/Ech0\" target=\"_blank\"\u003e\u003cimg src=\"https://api.hellogithub.com/v1/widgets/recommend.svg?rid=8f3cafdd6ef3445dbb1c0ed6dd34c8b5\u0026claim_uid=swhbQfnJvKS0t7I\u0026theme=neutral\" alt=\"Featured｜HelloGitHub\" width=\"250\" height=\"54\" /\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\n\u003e Ein selbstgehosteter persönlicher Microblog, dessen Timeline geteilt, diskutiert und vollständig von dir kontrolliert werden kann.\n\nTools wie Memos eignen sich hervorragend zum schnellen Festhalten von Gedanken. Ech0 ist für das gebaut, was danach kommt: diese Ideen auf einer persönlichen Timeline zu veröffentlichen, der andere folgen und mit der sie interagieren können.\nHoste es auf deinem eigenen Server, behalte die volle Kontrolle über deine Inhalte und bewahre dir einen persönlichen Raum, der durch optionale Kommentare und Sharing trotzdem verbunden bleibt.\nEs bleibt dabei leichtgewichtig, einfach zu deployen und vollständig Open Source.\n\n**Gut geeignet, wenn du:**\n- eine persönliche öffentliche oder halböffentliche Timeline auf deiner eigenen Domain betreiben willst\n- kurze Beiträge, Links und Medien über eine schlanke Oberfläche veröffentlichen möchtest\n- Datenhoheit behalten und gleichzeitig RSS sowie optionale Kommentare nutzen willst\n- einen persönlichen Raum mit leichter sozialer Interaktion willst, ohne ein vollwertiges soziales Netzwerk zu betreiben\n\n**Eher nicht geeignet, wenn du brauchst:**\n- einen bidirektionalen Knowledge-Base-Workflow (z. B. Obsidian-artiges PKM)\n- einen Team-orientierten kollaborativen Docs-Workspace (z. B. Notion-artige Dokumente)\n- eine reine Privat-Memo-App ohne Veröffentlichungs- oder Timeline-Fokus\n\n![Oberflächen-Vorschau](./docs/imgs/screenshot.png)\n\n---\n\n\u003cdetails\u003e\n   \u003csummary\u003e\u003cstrong\u003eInhaltsverzeichnis\u003c/strong\u003e\u003c/summary\u003e\n\n- [In 60 Sekunden ausprobieren](#in-60-sekunden-ausprobieren)\n- [Vollständige Funktionsliste](#vollständige-funktionsliste)\n- [Deployment \u0026 Aktualisierung](#deployment--aktualisierung)\n- [FAQ](#faq)\n- [Feedback \u0026 Community](#feedback--community)\n- [Open Source \u0026 Entwicklung](#open-source--entwicklung)\n- [Sponsoren \u0026 Danksagungen](#sponsoren--danksagungen)\n- [Star-Verlauf](#star-verlauf)\n\n\u003c/details\u003e\n\n---\n\n## In 60 Sekunden ausprobieren\n\n```shell\ndocker run -d \\\n  --name ech0 \\\n  -p 6277:6277 \\\n  -v /opt/ech0/data:/app/data \\\n  -e JWT_SECRET=\"Hello Echos\" \\\n  sn0wl1n/ech0:latest\n```\n\nÖffne anschließend `http://ip:6277`:\n\n1. Registriere deinen ersten Account.\n2. Der erste Account wird automatisch zum Owner (Admin-Rechte).\n3. Standardmäßig dürfen nur privilegierte Accounts veröffentlichen.\n\nWeitere Optionen wie Docker Compose und Helm findest du unter [Schnelles Deployment](./DEPLOYMENT.md#quick-deployment).\n\n## Vollständige Funktionsliste\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eKlicken, um die vollständige Funktionsliste anzuzeigen\u003c/strong\u003e\u003c/summary\u003e\n\n### Highlights\n\n- ☁️ **Leichtgewichtige, effiziente Architektur**: Geringer Ressourcenverbrauch und kompakte Images, geeignet von persönlichen Servern bis zu ARM-Geräten.\n- 🚀 **Schnelles Deployment**: Out-of-the-box-Docker-Deployment, von der Installation bis zum ersten Start mit einem einzigen Befehl.\n- 📦 **Eigenständige Distribution**: Vollständige Binaries und Container-Images ohne zusätzliche Laufzeitabhängigkeiten.\n- 💻 **Plattformübergreifend**: Unterstützt Linux, Windows und ARM-Geräte (z. B. Raspberry Pi).\n\n### Speicher \u0026 Daten\n\n- 🗂️ **VireFS Unified Storage Layer**: **VireFS** vereinheitlicht das Mounten und die Verwaltung von lokalem Speicher und S3-kompatiblem Object Storage.\n- ☁️ **S3-Object-Storage-Unterstützung**: Native Unterstützung für S3-kompatiblen Object Storage zur Erweiterung in die Cloud.\n- 📦 **Datensouveränität**: Inhalte und Metadaten bleiben in Nutzerhand und unter Nutzerkontrolle, inklusive RSS-Ausgabe.\n- 🔄 **Datenmigrations-Workflow**: Migrationsimport für historische Daten und Snapshot-Export für Migration und Archivierung.\n- 🔐 **Automatisiertes Backup-System**: Export/Backup über Web, CLI und TUI sowie automatische Hintergrund-Backups.\n\n### Schreiben \u0026 Inhalt\n\n- ✍️ **Markdown-Schreiberlebnis**: Auf **markdown-it** basierende Editor-/Rendering-Engine mit Plugin-Erweiterungen und Live-Vorschau.\n- 🏷️ **Tag-Verwaltung**: Tag-Organisation, schnelles Filtern und präzise Suche.\n- 🃏 **Rich-Media-Karten**: Karten-Rendering für Website-Links, GitHub-Projekte und mehr.\n- 🎥 **Video-Parsing**: Eingebettete Wiedergabe für Bilibili- und YouTube-Videos.\n\n### Medien \u0026 Assets\n\n- 📁 **Visueller Datei-Manager**: Eingebaute Funktionen für Datei-Upload, Browsing und Asset-Verwaltung.\n\n### Soziales \u0026 Interaktion\n\n- 💬 **Eingebautes Kommentarsystem**: Kommentare und konfigurierbare Moderation.\n- 🃏 **Inhalts-Interaktion**: Soziale Interaktionen wie Likes und Sharing.\n\n### Authentifizierung \u0026 Sicherheit\n\n- 🔑 **OAuth2 / OIDC**: Anbindung an Drittanbieter-Logins über OAuth2 und OIDC.\n- 🙈 **Passkey ohne Passwort**: Anmeldung per Biometrie oder Hardware-Sicherheitsschlüssel.\n- 🔑 **Access-Token-Verwaltung**: Erzeugen und Widerrufen von scopebasierten Tokens für API-Aufrufe und Drittanbieter-Integrationen.\n- 👤 **Mehrbenutzer-Rechteverwaltung**: Mehrbenutzer-Kollaboration und Rechtekontrolle.\n\n### System \u0026 Entwicklung\n\n- 🧱 **Busen-Datenbus-Architektur**: Das hauseigene Busen sorgt für entkoppelte Modulkommunikation und zuverlässige Nachrichtenzustellung.\n- 📊 **Strukturiertes Logging**: System-Logs in einheitlichem strukturiertem Format für Lesbarkeit und Analyse.\n- 🖥️ **Echtzeit-Log-Konsole**: Eingebaute Web-Konsole für Live-Log-Streams, Debugging und Troubleshooting.\n- 📟 **TUI-Verwaltung**: Terminal-UI, ideal für die Verwaltung auf Servern.\n- 🧰 **CLI-Toolchain**: CLI-Tools für Automatisierung und Skript-Integration.\n- 🔗 **Open API \u0026 Webhook**: Vollständige API- und Webhook-Unterstützung für externe Integrationen und Automation.\n- 🤖 **MCP (Model Context Protocol)**: Eingebauter [MCP Server](./docs/usage/mcp-usage.md) deckt **nahezu vollständig** die Kernfunktionen für die KI-Schicht ab (Beiträge, Dateien, Statistiken usw.) — **Streamable HTTP**, **Tools \u0026 Resources**, **scoped JWT**.\n\n### Erlebnis\n\n- 🌍 **Geräteübergreifende Anpassung**: Responsive Design für Desktop, Tablet und mobile Browser.\n- 🌐 **i18n-Mehrsprachigkeit**: Mehrsprachige Oberfläche für unterschiedliche Einsatzszenarien.\n- 👾 **PWA-Unterstützung**: Als Web-App installierbar — fast wie eine native App.\n- 🌗 **Themes \u0026 Dark Mode**: Dark Mode und Theme-Erweiterungen.\n\n### Lizenz\n\n- 🎉 **Vollständig Open Source**: Veröffentlicht unter **AGPL-3.0**, ohne Tracking, ohne Abo, ohne SaaS-Abhängigkeit.\n\n\u003c/details\u003e\n\n---\n\n## Deployment \u0026 Aktualisierung\n\nAusführliche Anleitungen für **Docker Compose**, **Skript-Installation**, **Kubernetes (Helm)** sowie das **Upgrade** einer bestehenden Instanz findest du in **[DEPLOYMENT.md](./DEPLOYMENT.md)**.\n\nFür den schnellsten Einstieg reicht der oben gezeigte [In 60 Sekunden ausprobieren](#in-60-sekunden-ausprobieren)-Befehl bereits aus.\n\n---\n\n## FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eFAQ ausklappen\u003c/strong\u003e\u003c/summary\u003e\n\n1. **Was ist Ech0?**\n   Ech0 ist eine leichtgewichtige Open-Source-Self-Hosting-Plattform zum schnellen Veröffentlichen und Teilen persönlicher Gedanken, Texte und Links. Sie bietet eine schlanke Oberfläche und ein ablenkungsfreies Erlebnis — und deine Daten bleiben in deiner Hand.\n\n2. **Was ist Ech0 nicht?**\n   Ech0 ist keine klassische professionelle Notiz-App (wie Obsidian oder Notion). Der Kern-Use-Case ähnelt eher einem Social-Feed bzw. Microblog-Stream.\n\n3. **Ist Ech0 kostenlos?**\n   Ja. Ech0 ist vollständig kostenlos und Open Source unter AGPL-3.0 — ohne Werbung, Tracking, Abo oder Service-Lock-in.\n\n4. **Wie sichere und importiere ich Daten?**\n   Ech0 unterstützt Datenwiederherstellung/-migration via „Snapshot-Export\" und „Migrations-Import\". Auf Deployment-Ebene sollte das gemappte Datenverzeichnis (z. B. `/opt/ech0/data`) regelmäßig gesichert werden. Standardmäßig liegen Kerndaten in der lokalen Datenbank; bei aktiviertem Object Storage werden Medien-Assets in das konfigurierte Backend geschrieben.\n\n5. **Unterstützt Ech0 RSS?**\n   Ja. Ech0 unterstützt RSS-Abonnements, sodass du Updates in RSS-Readern verfolgen kannst.\n\n6. **Warum schlägt das Veröffentlichen mit der Meldung „Administrator kontaktieren\" fehl?**\n   Das Veröffentlichen ist standardmäßig auf privilegierte Accounts beschränkt. Bei der Initialisierung wird der erste Account zum Owner (mit Verwaltungsrechten). Reguläre Nutzer dürfen erst veröffentlichen, wenn ein privilegierter Account dies explizit erlaubt. Wenn das deine erste Einrichtung ist, prüfe unter [In 60 Sekunden ausprobieren](#in-60-sekunden-ausprobieren), welcher Account Owner ist.\n\n7. **Warum gibt es keine detaillierte Rechtematrix?**\n   Ech0 verwendet derzeit ein leichtgewichtiges Rollenmodell (Owner / Admin / regulärer Nutzer), um den Betrieb einfach und vorhersehbar zu halten. Das Rechtemodell wird auf Basis von Community-Feedback weiterentwickelt.\n\n8. **Warum sehen andere mein Connect-Avatar nicht?**\n   Setze die URL deiner aktuellen Instanz in `Systemeinstellungen — Service-URL`, z. B. `https://memo.vaaat.com` (mit `http://` oder `https://`).\n\n9. **Was ist die Option MetingAPI in den Einstellungen?**\n   Das ist der API-Endpunkt, den Music-Cards verwenden, um abspielbare Stream-Metadaten aufzulösen. Du kannst einen eigenen, vertrauenswürdigen Endpunkt angeben; bleibt das Feld leer, fällt Ech0 auf einen Standard-Resolver zurück. Für den produktiven Einsatz empfiehlt sich ein selbstgehosteter Endpunkt.\n\n10. **Warum zeigt eine neu hinzugefügte Connect nur Teilergebnisse?**\n    Das Backend versucht, Instanz-Informationen für alle Connect-Einträge abzurufen. Ist eine Instanz offline oder nicht erreichbar, wird sie verworfen — nur gültige/erreichbare Connect-Daten werden ans Frontend zurückgegeben.\n\n11. **Wie aktiviere ich Kommentare?**\n    Aktiviere Kommentare in der Kommentar-Verwaltung im Panel und konfiguriere bei Bedarf Moderation und Captcha. Ech0 enthält bereits `gocap` zur Captcha-Verifikation — ein eigener Captcha-Service ist nicht nötig.\n\n12. **Wie konfiguriere ich S3-Speicher?**\n    Trage in den Speichereinstellungen Provider, Endpoint, Bucket, Access Key, Secret Key und weitere Felder ein. Endpoint vorzugsweise ohne `http://` oder `https://`. Wenn Medien direkt vom Browser abgerufen werden, müssen die Objekte über die gewählte Policy lesbar sein (z. B. public-read oder ein gleichwertiges CDN-/Gateway-Setup).\n\n13. **Wie aktiviere ich Passkey-Login?**\n    Konfiguriere unter `SSO — Passkey` `WebAuthn RP ID` und `WebAuthn Origins`. Nach dem Speichern und der Anzeige „Passkey bereit\" folgt man den Browser-Prompts, um Biometrie oder Sicherheitsschlüssel zu binden.\n\n14. **Offizielle Erklärung zu Drittanbieter-Integrationen**\n    Drittanbieter-Integrationsplattformen oder -Dienste, die nicht offiziell von Ech0 autorisiert sind, liegen außerhalb des offiziellen Supports. Sicherheitsvorfälle, Datenverluste, Account-Probleme oder andere Risiken durch deren Nutzung liegen in der Verantwortung des Nutzers und des Drittanbieters.\n\n15. **Wie poste ich Kommentare über eine Drittanbieter-Integration (KI / Automation)?**\n    Ech0 stellt einen dedizierten Integration-Endpunkt unter `POST /api/comments/integration` bereit, der Captcha- und Form-Token-Prüfung umgeht. Erstelle in der „Access Token\"-Verwaltung ein Token mit Scope `comment:write` und Audience `integration` und sende es im Header `Authorization: Bearer \u003ctoken\u003e`. Request-Body und Antworten siehe OpenAPI-Doku deiner Instanz unter `/swagger/index.html` (lokal typischerweise `http://localhost:6277/swagger/index.html`). Dieser Endpunkt hat eigene Rate-Limits, und die Kommentare werden mit `source=integration` markiert, sodass sie im Admin-Panel erkennbar sind.\n\n16. **Wo finde ich detaillierte Doku zu Storage-Regeln (lokal vs. S3), Object-Keys und Migration?**\n    Siehe den [Storage-Migration-Guide](./docs/usage/storage-migration.md) im Repo. Er erklärt, wie flache `key`-Werte auf Pfade auf der Festplatte und S3-Objekt-Keys gemappt werden (inkl. `schema.Resolve` und `PathPrefix`), wie gespeicherte `File.url`-Snapshots zur UI passen, den Unterschied zwischen statischem `/api/files`-Zugriff und authentifizierten `stream`-Routen sowie praktische Hinweise zum Wechsel des S3-Anbieters und zur Migration zwischen lokalem Storage und Object Storage.\n\n\u003c/details\u003e\n\n---\n\n## Feedback \u0026 Community\n\n- Bei Bugs bitte ein [Issue](https://github.com/lin-snow/Ech0/issues) öffnen.\n- Für Feature-Ideen oder Verbesserungen ist [Discussions](https://github.com/lin-snow/Ech0/discussions) der richtige Ort.\n- Offizielle QQ-Gruppe: `1065435773`\n\n### Ech0 Hub beitreten\n\n[Ech0 Hub](https://hub.ech0.app/) ist ein öffentliches Verzeichnis, das die Timelines gelisteter Ech0-Instanzen zusammenführt. Eine Schritt-für-Schritt-Anleitung zum Registrieren **deiner** öffentlichen Instanz findest du in [`hub/README.md`](./hub/README.md).\n\n| Offizielle QQ-Community                                          | Weitere Gruppen |\n| ---------------------------------------------------------------- | --------------- |\n| \u003cimg src=\"./docs/imgs/qq.png\" alt=\"QQ-Gruppe\" style=\"height:250px;\"\u003e | —               |\n\n---\n\n## Open Source \u0026 Entwicklung\n\n**Governance**\n\n- [Beitragsleitfaden](./CONTRIBUTING.md)\n- [Verhaltenskodex](./CODE_OF_CONDUCT.md)\n- [Sicherheitsrichtlinie](./SECURITY.md)\n- [Lizenz](./LICENSE)\n\n**Entwicklung**\n\nDas lokale Setup, Umgebungsanforderungen und das Front-/Backend-Zusammenspiel sind in **[docs/dev/development.md](./docs/dev/development.md)** dokumentiert. Architektur und Konventionen findest du in [`CLAUDE.md`](./CLAUDE.md) und [`CONTRIBUTING.md`](./CONTRIBUTING.md).\n\n---\n\n## Sponsoren \u0026 Danksagungen\n\n🌟 Wenn dir **Ech0** gefällt, gib dem Projekt gerne einen Star! 🚀\n\n**Ech0** ist vollständig Open Source und kostenlos. Wartung und Weiterentwicklung leben von der Unterstützung der Community. Wenn dir das Projekt hilft, freuen wir uns über jede Spende. Scanne den QR-Code unten und hinterlasse deinen GitHub-Namen in der Notiz — du wirst dann auf der [Sponsorenliste](./SPONSOR.md) eingetragen.\n\n|                  Plattform                 | QR-Code                                                |\n| :----------------------------------------: | :----------------------------------------------------- |\n| [**Afdian**](https://afdian.com/a/l1nsn0w) | \u003cimg src=\"./docs/imgs/pay.jpeg\" alt=\"Pay\" width=\"200\"\u003e |\n\nEin großes Dankeschön an alle Sponsoren, Beitragenden und Nutzer — die vollständige Sponsorenliste findest du in [SPONSOR.md](./SPONSOR.md).\n\n[![Contributors](https://contrib.rocks/image?repo=lin-snow/Ech0)](https://contrib.rocks/image?repo=lin-snow/Ech0)\n\n![Repobeats analytics image](https://repobeats.axiom.co/api/embed/d69b9177e4a121e31aaed95354ff862c928ca22d.svg \"Repobeats analytics image\")\n\n---\n\n## Star-Verlauf\n\n\u003ca href=\"https://www.star-history.com/#lin-snow/Ech0\u0026Timeline\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=lin-snow/Ech0\u0026type=Timeline\u0026theme=dark\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=lin-snow/Ech0\u0026type=Timeline\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=lin-snow/Ech0\u0026type=Timeline\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\n---\n\n```cpp\n\n███████╗     ██████╗    ██╗  ██╗     ██████╗\n██╔════╝    ██╔════╝    ██║  ██║    ██╔═████╗\n█████╗      ██║         ███████║    ██║██╔██║\n██╔══╝      ██║         ██╔══██║    ████╔╝██║\n███████╗    ╚██████╗    ██║  ██║    ╚██████╔╝\n╚══════╝     ╚═════╝    ╚═╝  ╚═╝     ╚═════╝\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flin-snow%2Fech0","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flin-snow%2Fech0","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flin-snow%2Fech0/lists"}