openplate-core
Self-hostable account + E2EE blob-sync service for openplate — Bitwarden-model auth over CAS blob push/pull with opaque ciphertext only.
Ficha actualizada 23 sept 2026, 9:35 · upstream 23 sept 2026, 9:15 · release sin release detectada
Qué es openplate-core
Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.
openplate-core is a self-hosted account and end-to-end encrypted (E2EE) blob synchronization service designed to replace the centralized cloud backend of the openplate application. It implements Bitwarden-style authentication where accounts are identified by email address paired with an opaque ciphertext blob, never decrypted on the server side. Each account's recovery code is sealed under a key stored in the environment variable SERVER_SECRET, ensuring that no plaintext password or passphrase ever leaves the client device.
The service provides full control over data flow: photos and measurements are encrypted before upload, and only the operator can decrypt them using their own private key. This eliminates cloud provider liability for storing user content and removes single points of failure inherent in centralized SaaS architectures.
Key design decisions include a protocol-based approach (PROTOCOL.md) that allows third-party clients to implement either side of the wire interface without reading or modifying server code, ensuring cryptographic security is enforced at the transport layer rather than application logic. The service also supports optional features such as AI-assisted photo analysis via an upstream proxy, community feedback reporting, push notifications for fasting reminders and catch-ups, and plan-based billing through a separate plans service.
Self-hosting is fully supported with Docker Compose or Podman, requiring only the SERVER_SECRET key to be generated. The architecture separates concerns between authentication (email + passphrase), data storage (encrypted blobs in PostgreSQL), and business logic (plans, feedback, pulse metrics), enabling modular scaling and easy integration into existing openplate deployments.
- Self-hosted food tracking for individuals who require complete privacy and control over their personal data
- Organizations or schools that need to track nutrition without exposing student/employee data to third-party cloud providers
- Healthcare professionals managing patient dietary logs with strict confidentiality requirements
- Remote workers with sensitive health information who cannot trust corporate cloud infrastructure
- Educational institutions implementing privacy-compliant meal planning systems
- Small businesses operating in regulated industries where data sovereignty is a legal requirement
- End-to-end encryption at the blob level means no server can ever decrypt or read user content, even with full access to the database
- Protocol-based design (PROTOCOL.md) allows third-party clients to implement either side of the communication interface without modifying server code
- Bitwarden-style authentication model where recovery codes are sealed under a secret key rather than stored in plaintext
- Optional AI photo analysis proxy that only forwards metadata and status, never the image content or any decoded buffer
- Push notification system with configurable wake-up times for fasting periods without storing what is actually sent to devices
- Plans service allows billing and subscription management while keeping user data encrypted from the operator's perspective
- Self-hosting requires manual key generation (SERVER_SECRET) which must be stored securely; misconfiguration can expose all accounts if a secret is accidentally committed to version control
- The protocol specification does not define error handling for malformed ciphertexts, leading to potential deserialization vulnerabilities in client implementations
- No built-in audit logging of who accessed or modified encrypted data at the database level — only high-level status codes are logged
- Push scheduling requires manual configuration of wake-up times and zones; automated scheduling is not supported out-of-the-box
- The AI proxy feature is optional and must be configured separately, meaning photo analysis capabilities can be disabled without affecting core functionality
Perfil de infraestructura
Estimación inicial derivada del repositorio y de los servicios detectados.
Despliegue detectado
Qué señales reales de instalación hemos encontrado.
Install via Docker Compose with `--project-directory .` to keep the repository root as the project root. Generate a secure secret using `openssl rand -hex 32` and place it in `.env`. The service uses PostgreSQL for encrypted blob storage, so ensure the database is running before starting the container. For Podman users, use `podman compose` instead of `docker compose`. To connect your openplate app to this instance, set `SYNC_SERVER_URL` to the public URL returned by curling the `/health` endpoint. The service exposes port 3000 for the API and 5432/5433 for PostgreSQL. For multi-instance setups, use a shared volume or separate containers with a dedicated sync server container.
Stack y dependencias
Componentes inferidos a partir de manifests, configuración y documentación.
Experiencia real de la comunidad
Ayuda a contrastar la estimación automática con instalaciones reales.
Todavía no hay datos comunitarios para este proyecto.