À propos du projet

Electric est un moteur de synchronisation open-source pour Postgres, décrit comme une synchronisation en temps réel pour Postgres et positionné comme une base pour des logiciels rapides et modernes ainsi que des agents IA fonctionnant sur des données locales en direct. Il se concentre sur le chemin de lecture : synchroniser les données hors de Postgres vers des consommateurs arbitraires plutôt que d'écrire dans la base. Le projet aborde des problèmes de synchronisation courants tels que la réplication partielle, la diffusion et la livraison de données, afin que les développeurs n'aient pas à construire leur propre couche de synchronisation. Le protocole de synchronisation de base est exposé comme une API HTTP de bas niveau, que la documentation note comme pouvant être intégrée avec des CDN pour une livraison de données évolutive. La réplication partielle est configurée à l'aide de Shapes, qui définissent quel sous-ensemble de données est synchronisé. Les consommateurs peuvent utiliser l'API HTTP directement ou travailler via des bibliothèques clientes et des intégrations de frameworks, y compris un client TypeScript et un hook React appelé useShape. Un package client Elixir est également présent dans le dépôt. Pour commencer, il faut une base de données Postgres avec la réplication logique activée, puis exécuter Electric devant elle connectée via une DATABASE_URL. Le README montre une commande Docker Compose depuis la racine du dépôt pour démarrer la pile, suivie d'une requête curl vers le point de terminaison /v1/shape pour commencer à synchroniser une table, et un court exemple React utilisant useShape avec les paramètres table et where. L'API HTTP est définie dans une spécification OpenAPI stockée dans le dépôt. Electric inclut également un Phoenix LiveDashboard optionnel pour la surveillance en temps réel des métriques VM, des informations de processus et des tables ETS, activé en définissant une variable d'environnement pour le port du tableau de bord. Le README avertit explicitement que ce point de terminaison du tableau de bord n'est pas authentifié et doit être restreint en production. Le développement utilise asdf pour gérer les versions d'Elixir, Erlang et Node.js, avec des instructions d'installation pour macOS. Le dépôt contient des suites de tests pour les composants Elixir et TypeScript, avec des prérequis incluant un Postgres Docker Compose configuré pour la réplication logique. Les commandes sont documentées pour exécuter les tests du service de synchronisation Elixir et des clients, les tests des packages TypeScript et les rapports de couverture. Le projet est sous licence Apache 2.0 et propose un Discord communautaire pour le support.