Skip to content

decoded-cipher/nodrix

Repository files navigation

nodrix

status not production ready

The IoT platform Cloudflare didn't build. Hardware POSTs telemetry over HTTPS to a project's variables, polls for control writes, and streams realtime data to a drag-and-drop dashboard — all running in your own Cloudflare account on Workers, D1, R2, and Durable Objects.

Caution

🚧 Early development — do not deploy 🚧

nodrix is pre-alpha and changing daily. APIs, database schemas, and on-disk data formats break between commits without migration paths. There is no upgrade story yet.

  • ❌ No stable releases
  • ❌ No migrations between commits
  • ❌ No security review
  • ❌ Not yet recommended for any account you care about

Setup, deploy, and contribution docs will land once the surface stabilizes. Until then, treat the repo as read-only source for the curious.

Star and 👀 Watch the repo to get notified the moment it's ready to deploy.


✨ Features

  • 📡 HTTPS telemetry ingress — hardware POSTs JSON to a project's variables (auto-created on first sight); no MQTT broker to operate.
  • 📊 Realtime dashboards — drag-and-drop widget grid streams updates over hibernating WebSockets.
  • 🎮 Control — dashboard widgets write variable values that hardware picks up via short polls.
  • 🤖 Automations — trigger webhooks, code snippets, or service integrations on telemetry events.
  • 🗂️ Multi-project — group variables, dashboards, and members by project.
  • 🔑 Auth — email + password out of the box; optional Google / GitHub OAuth toggled at runtime.
  • 📝 Audit log — every privileged action recorded and paginated in the UI.

🏗️ Architecture

  • Worker (worker/) — single Hono app, three Durable Object classes (Project, Dashboard, Scheduler), one Workflow (provisioning), D1 (metadata), R2 (telemetry history), KV (read cache + JWKS).
  • Web (web/) — Vue 3 + Tailwind + Reka UI admin panel and drag-and-drop dashboard builder. Built and served as Worker static assets.
  • Promo site (promo/) — Astro static site. Deploys independently to Cloudflare Pages.

💾 Storage allocation

Store Holds
Project DO (SQLite) Latest variable state, recent ring buffer, pending control writes, flush cursor
R2 Cold telemetry history (NDJSON, partitioned by project + hour)
D1 Users, sessions, accounts, projects, variables, dashboards, tokens, automations, integrations, audit log, OAuth provider config (metadata only — never any telemetry point)
KV Cached /state responses
Dashboard DO Per-dashboard subscription + hibernated WebSockets
Scheduler DO One alarm at the next schedule/sunset automation fire time

🔐 Authentication

Better Auth handles sign-in. Email + password is on by default; Google and GitHub OAuth can be enabled at runtime from Settings → Sign-in providers (the owner enters a client ID + secret per provider; the login page shows the corresponding buttons immediately).

First-time deployments hit a "Create owner account" page on first visit — the first signup becomes role owner. After that, registration is closed (RBAC invites land later). Sessions are cookie-based and persist 30 days; each device is a separate session row, listed and revokable from Users.

About

The IoT platform Cloudflare didn't build. Telemetry, realtime dashboards, and automations on Workers + D1 + R2 + Durable Objects — in your own Cloudflare account.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors