{"id":51282558,"url":"https://github.com/atomo-cc/atomo","last_synced_at":"2026-06-30T03:01:26.836Z","repository":{"id":362702719,"uuid":"1047946361","full_name":"atomo-cc/atomo","owner":"atomo-cc","description":"Atomo Content Core — an open-source, self-hostable, event-sourced backend for content-driven apps. A TypeScript schema → GraphQL API with auth/RBAC, realtime, and an admin UI; extend with WASM/JS plugins, deploy with Docker. A self-hosted Firebase/Supabase alternative.","archived":false,"fork":false,"pushed_at":"2026-06-25T21:39:01.000Z","size":3242,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-25T23:12:30.559Z","etag":null,"topics":["admin-panel","authentication","backend","backend-as-a-service","cqrs","docker","event-sourcing","firebase-alternative","graphql","headless-cms","low-code","plugins","postgres","rbac","realtime","rust","self-hosted","supabase","typescript","wasm"],"latest_commit_sha":null,"homepage":"https://atomo-cc.github.io/atomo/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atomo-cc.png","metadata":{"files":{"readme":"README.de.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-08-31T15:30:58.000Z","updated_at":"2026-06-25T21:39:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/atomo-cc/atomo","commit_stats":null,"previous_names":["atomo-cc/atomo"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/atomo-cc/atomo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomo-cc%2Fatomo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomo-cc%2Fatomo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomo-cc%2Fatomo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomo-cc%2Fatomo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atomo-cc","download_url":"https://codeload.github.com/atomo-cc/atomo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomo-cc%2Fatomo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34950334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["admin-panel","authentication","backend","backend-as-a-service","cqrs","docker","event-sourcing","firebase-alternative","graphql","headless-cms","low-code","plugins","postgres","rbac","realtime","rust","self-hosted","supabase","typescript","wasm"],"created_at":"2026-06-30T03:01:21.819Z","updated_at":"2026-06-30T03:01:26.827Z","avatar_url":"https://github.com/atomo-cc.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Atomo Content Core\n\n[English](README.md) · [简体中文](README.zh-CN.md) · [Español](README.es.md) · [日本語](README.ja.md) · [Français](README.fr.md) · **Deutsch**\n\n\u003e **Content Core der nächsten Generation** — ein event-sourced, selbst hostbares Backend für content-getriebene Apps: Aus einem TypeScript-Schema entsteht eine GraphQL-API mit Auth, Realtime und Admin-UI. Eine selbstgehostete **Firebase/Supabase-Alternative**.\n\n[![CI](https://github.com/atomo-cc/atomo/workflows/CI/badge.svg)](https://github.com/atomo-cc/atomo/actions)\n[![Release](https://github.com/atomo-cc/atomo/workflows/Release/badge.svg)](https://github.com/atomo-cc/atomo/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAtomo Content Core ist ein quelloffenes, selbst hostbares **event-sourced Backend** für content-getriebene Apps. Definiere dein Datenmodell in einer TypeScript-`schema.ts`, und Atomo liefert dir eine **GraphQL-API**, **Authentifizierung + RBAC**, **Realtime** und eine generierte **Admin-UI** — erweiterbar mit **Actions und externen Workers** und per **Docker** bereitstellbar (ohne Rust-Toolchain). Betrachte es als selbstgehostete **Firebase/Supabase-Alternative**, die auf deinem eigenen Postgres läuft.\n\n## ✨ Kernfunktionen\n\n- 🔄 **Event-Sourcing-Architektur**: Vollständige Nachverfolgung der Datenhistorie und Zeitreise\n- 🧠 **KI-native Konzeption**: Integrierte KI-Workflows und intelligente Inhaltsverarbeitung\n- 🎯 **Flaggschiff-App-getrieben**: Plattformentwicklung, angetrieben von einer echten CRM-Anwendung\n- 🔧 **Dual-Mode-Definition**: TypeScript-Schema + Rust-Codegenerierung\n- 🚀 **Hohe Leistung**: Rust-Backend + ein moderner Frontend-Stack\n- 🔌 **Actions \u0026 Workers**: Lifecycle-Actions im Schema deklarieren (`on.created`, `on.updated`) mit Bedingungen — Atomo verteilt dauerhafte Jobs automatisch an externe TypeScript-Worker\n- 🧩 **Erweitern ohne Fork**: deklarierbare Schema-Constraints (`@unique` / `@@check` / partiell) + direkte Action-API (`POST /api/actions/:name`)\n- 📊 **Echtzeit-Zusammenarbeit**: WebSocket-gesteuerte Echtzeit-Datensynchronisation\n\n## 🚀 Schnellstart\n\n### CLI installieren\n\n```bash\n# Über Cargo installieren\ncargo install atomo_cli\n\n# Oder eine vorkompilierte Binärdatei herunterladen\ncurl -L https://github.com/atomo-cc/atomo/releases/latest/download/atomo-linux-x86_64 -o atomo\nchmod +x atomo\n```\n\n### Neues Projekt erstellen\n\n```bash\n# CRM-App erstellen\natomo init my-crm --template crm\n\n# Blog-App erstellen\natomo init my-blog --template blog\n\n# E-Commerce-App erstellen\natomo init my-shop --template ecommerce\n```\n\n### Entwickeln und bereitstellen\n\n```bash\ncd my-crm\n\n# Entwicklungsserver starten (in einem Service-Verzeichnis)\natomo dev\n\n# Workspace-Modus (im Repo-Stammverzeichnis oder einem angegebenen Service)\natomo dev --workspace [--service-path services/\u003cname\u003e]\n\n# Für die Produktion bauen\natomo build\n\n# In die Cloud bereitstellen\natomo deploy\n```\n\n## Frontend\n\n```bash\npnpm install\n\n# Terminal 1: Admin UI\npnpm dev:admin\n\n# Terminal 2: Watch/Build-Schleife des TypeScript-SDK\npnpm --filter @atomo-cc/client-sdk dev\n\n# Source of Truth der CRM-Demo\ncd services/crm-service\npnpm generate\n```\n\nEmpfohlene MVP-Schleife:\n1. Passe das CRM-Datenmodell in `services/crm-service/schema.ts` an.\n2. Führe `pnpm --filter atomo-crm-service generate` aus, um die CRM-Generate zu aktualisieren.\n3. Führe `pnpm --filter @atomo-cc/client-sdk build` aus, um die Typ-Ausgabe des SDK zu prüfen.\n4. Nutze `pnpm dev:admin`, um zu prüfen, wie die Admin UI das generierte Schema/Metadata konsumiert.\n\nSowohl `packages/atomo-admin-ui` als auch `packages/atomo-client-sdk` sollten die Typprüfung grün halten; prüfe die Frontend-/SDK-Baseline mit `pnpm --filter \"./packages/*\" test`.\n\n## 📁 Projektstruktur\n\n```\natomo/\n├── crates/                    # Rust-Kernbibliotheken\n│   ├── atomo_core/           # 🔧 Kern-Domänenmodelle und Events\n│   ├── atomo_cli/            # 🖥️  Kommandozeilen-Tool\n│   ├── atomo_server/         # 🌐 Webserver\n│   ├── atomo_schema/         # 📝 Schema-Parser\n│   ├── atomo_projectors/     # 📊 Event-Projektoren\n│   └── atomo_realtime/       # 📡 Flüchtige Echtzeit-Kanäle und Präsenz\n├── packages/                  # Frontend-Pakete\n│   ├── atomo-client-sdk/     # 📚 Client-SDK\n│   └── atomo-admin-ui/       # 🎛️  Admin-Oberfläche\n│   └── atomo-crm-app/        # 💼 CRM-Flaggschiff-App\n├── templates/                 # 📋 Projektvorlagen\n│   ├── crm/                  # CRM-Vorlage\n│   ├── blog/                 # Blog-Vorlage\n│   └── ecommerce/            # E-Commerce-Vorlage\n├── services/\n│   └── crm-service/          # 💼 CRM-Demo-Service\n└── docs/                      # 📄 Dokumentation\n```\n\n## 🏗️ Architektur\n\n### Event Sourcing + CQRS\n\n```mermaid\ngraph TD\n    A[Befehl] --\u003e B[Event-Store]\n    B --\u003e C[Event-Projektor]\n    C --\u003e D[Read-Modell]\n    D --\u003e E[Abfrage]\n\n    B --\u003e F[Event-Bus]\n    F --\u003e G[Action Dispatcher]\n    G --\u003e H[Job Queue]\n    H --\u003e I[Externe Workers]\n```\n\n### Technologie-Stack\n\n- **Backend**: Rust + Axum + async-graphql + PostgreSQL\n- **Frontend**: TypeScript + React + Tailwind CSS\n- **Daten**: Event Sourcing + PostgreSQL + Redis\n- **KI**: OpenAI-API + Unterstützung lokaler Modelle\n- **Bereitstellung**: Docker + Kubernetes + GitHub Actions\n\n## 🎯 Anwendungsfälle\n\n### 1. Unternehmens-CRM\n\n```typescript\n// CRM-Schema definieren\nexport interface Contact {\n  id: string;\n  name: string;\n  email: string;\n  company?: Company;\n  deals: Deal[];\n}\n\nexport interface Company {\n  id: string;\n  name: string;\n  size: CompanySize;\n  industry: string;\n}\n```\n\n### 2. Content-Management-System\n\n```typescript\n// Content-Schema definieren\nexport interface Article {\n  id: string;\n  title: string;\n  content: string;\n  author: User;\n  tags: string[];\n  publishedAt?: Date;\n}\n```\n\n### 3. E-Commerce-Plattform\n\n```typescript\n// Produkt-Schema definieren\nexport interface Product {\n  id: string;\n  name: string;\n  price: number;\n  inventory: number;\n  categories: Category[];\n}\n```\n\n## 🔧 Entwicklungsleitfaden\n\n### Lokale Entwicklungsumgebung\n\n```bash\n# Abhängigkeiten installieren\ngit clone https://github.com/atomo-cc/atomo.git\ncd atomo\ncargo build\npnpm install\n\n# Entwicklungsserver starten\ncargo run -p atomo_cli -- dev\n\n# Frontend\n\ngit clone https://github.com/atomo-cc/atomo.git\ncd atomo\npnpm install\n\n# Aktuell empfohlene Entwicklungs-Einstiegspunkte\npnpm dev:admin\npnpm --filter @atomo-cc/client-sdk dev\npnpm --filter atomo-crm-service generate\n```\n\n### Schema-getriebene Entwicklung\n\n1. **Schema definieren**\n   ```typescript\n   // atomo/schema.ts\n   export interface User {\n     id: string;\n     name: string;\n     email: string;\n   }\n   ```\n\n2. **Code generieren**\n   ```bash\n   atomo codegen\n   ```\n\n3. **Generierten Code verwenden**\n   ```rust\n   use atomo_core::entities::User;\n\n   async fn create_user(name: String, email: String) -\u003e Result\u003cUser, Error\u003e {\n       // Automatisch generierte CRUD-Operationen\n   }\n   ```\n\nDie detaillierte Roadmap und den aktuellen Fortschritt findest du in docs/roadmap.md; die Plattformvision und Architektur in docs/vision.md.\n\n## 📊 Leistungsziele\n\n| Kennzahl | Ziel |\n|------|------|\n| Durchsatz gleichzeitiger Anfragen | 10.000+ RPS |\n| Kaltstartzeit | \u003c 100 ms |\n| Speicherbedarf | \u003c 50 MB |\n| Latenz der Event-Verarbeitung | \u003c 10 ms |\n\n## 🗺️ Roadmap\n\n### Phase 1: Grundlagen (✅ Abgeschlossen)\n- [x] Monorepo-Einrichtung\n- [x] Kern-Domänenmodelle\n- [x] CLI-Werkzeuge (init, dev, migrate, codegen, test, deploy)\n- [x] Event-Sourcing-Grundlage (event_log, Replay, Entitätshistorie)\n- [x] Schema-Parser (TypeScript → Rust/GraphQL)\n- [x] Basis-CRUD (dynamisches SQL, parametrisierte Abfragen)\n- [x] GraphQL-Subscriptions (WebSocket, Modellfilterung)\n- [x] AuthN/AuthZ (Argon2id, JWT, RBAC auf der GraphQL-Ebene erzwungen; Aufrufer der Datenebene noch offen, OAuth2/OIDC)\n- [x] Soft Delete, Pagination, Beziehungsauflösung\n- [x] Eingabevalidierung, strukturierte Fehler\n- [x] Ratenbegrenzung, Request-Tracing\n\n### Phase 2: Intelligenz-Upgrade (größtenteils abgeschlossen)\n- [x] Actions \u0026 Workers: Lifecycle-Event-Bindings (`ModelEvents`), Action Dispatcher, direkte Action-API, Worker SDK (`@atomo-cc/worker-sdk`)\n- [x] Erweiterbarkeit ohne Fork: deklarierbare Schema-Constraints (`@unique`/`@index`/`@@check`, inkl. partiell mit `WHERE`)\n- [x] CQRS-Read-Projektionen (eventgesteuerte materialisierte Views; Löschungen/numerische Korrekturen siehe B2)\n- [x] Read-Cache (TTL + Event-Invalidierung)\n- [x] Datei-Upload/-Speicherung (`File`-Feld, multipart, Content-Type-Validierung + Magic-Byte-Sniffing, event-sourced; lokales Backend ✅, S3-Backend hinter dem `storage-s3`-Feature; siehe docs/guide/advanced/upload-storage-plan)\n- [~] Workflow-Engine (Trigger, Bedingungen, Retries, YAML-Laden, HTTP-Schritte; Mutation-/Plugin-Schritte noch zu implementieren)\n- [~] Mandantenisolierung (`tenant_id`-Spalte + Lese-/Schreibtrennung; Subscription-Filterung / Benutzerbindung / PG RLS noch zu implementieren)\n- [~] KI-Workflow-Integration (pgvector EmbeddingStore; noch nicht durchgängig verifiziert, erfordert eine pgvector-Umgebung)\n- [~] Local-First-SDK (Offline-Queue, Resync bei erneuter Verbindung; noch keine Integrationstests)\n\n\u003e Der tatsächliche Verifizierungsstatus jeder Fähigkeit richtet sich nach der CRM-Konformitätstest-Suite; siehe docs/guide/advanced/crm-conformance-plan.\n\n### Phase 3: Ökosystem (in Arbeit)\n- [x] OAuth2/OIDC-SSO (Google, GitHub, Microsoft, Okta)\n- [x] Projektvorlagen (CRM, Blog, E-Commerce)\n- [x] Workflow-Designer (Admin-UI-Editor: Trigger-/Schritt-/Aktionsformulare + Ablaufvorschau)\n- [ ] Plugin-Marktplatz\n- [ ] Verwaltete Plattform Atomo Cloud\n\n## 🤝 Mitwirken\n\nWir freuen uns über Beiträge der Community! Bitte lies unseren [Leitfaden für Beiträge](CONTRIBUTING.md), um zu erfahren, wie du mitmachen kannst.\n\n### Schneller Beitrag\n\n1. Forke das Projekt\n2. Erstelle einen Feature-Branch: `git checkout -b feature/amazing-feature`\n3. Committe deine Änderungen: `git commit -m 'Add amazing feature'`\n4. Pushe den Branch: `git push origin feature/amazing-feature`\n5. Öffne einen Pull Request\n\n## 📚 Dokumentation\n\n- [Benutzerhandbuch](docs/user-guide.md)\n- [API-Dokumentation](docs/api.md)\n- [Bereitstellungsleitfaden](docs/deployment.md)\n- [Plugin-Entwicklung](docs/plugins.md)\n\n## 💬 Community\n\n- **GitHub Issues**: Fehler melden und Funktionswünsche\n- **GitHub Discussions**: Technische Diskussion und Fragen/Antworten\n- **Discord**: Echtzeit-Chat (in Kürze)\n\n## 📄 Lizenz\n\nDieses Projekt steht unter der [MIT-Lizenz](LICENSE).\n\n## 🙏 Danksagung\n\nDank an alle Mitwirkenden und die folgenden Open-Source-Projekte:\n\n- [Rust](https://rust-lang.org/) — Systemprogrammiersprache\n- [Axum](https://github.com/tokio-rs/axum) — Web-Framework\n- [async-graphql](https://github.com/async-graphql/async-graphql) — GraphQL-Server\n- [React](https://react.dev/) — Frontend-Framework\n\n---\n\n**Mach Content-Management einfach und leistungsstark!** 🚀\n\n[Loslegen](https://github.com/atomo-cc/atomo/releases) | [Dokumentation lesen](docs/) | [Der Community beitreten](https://github.com/atomo-cc/atomo/discussions)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomo-cc%2Fatomo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatomo-cc%2Fatomo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatomo-cc%2Fatomo/lists"}