Entry Ledger

Inspiration

Visitor entry decisions benefit from a clear record and an intentional human decision rather than an automatic unlock. Entry Ledger explores that narrow workflow with an explicit clock and a small, inspectable state model.

What it does

A synthetic doorbell event creates a pending request. An operator can create a time-limited invite, approve or deny a request, revoke an invite, and advance time to expire invites. Motion is recorded as ignored and never approves entry. The interface shows invite status, request status, device status, a readable event timeline, and raw JSON.

How we built it

The original Python Engine remains unchanged in the preserved Local MVP. The static demo contains a dependency-free JavaScript Engine with matching commands, event handling, snapshots, deterministic timestamps, reset, custom event/payload controls, and a project-focused UI. A small stdlib HTTP server is included for local verification.

Challenges

The most important boundary is keeping an approval advisory: the model must not imply that a remote unlock happened. Another challenge is matching edge cases such as invalid expiry values, rejected unknown IDs, explicit ticking, and the original fixture's request numbering.

What we learned

Explicit time and visible state transitions make a permission workflow easier to inspect. Keeping the raw event stream alongside summarized cards also makes discrepancies easier to find during local parity checks.

Accomplishments

The package preserves the supplied Python behavior, provides an offline file-openable demo, and includes local parity/browser verification artifacts. The UI makes the safety boundary prominent instead of presenting a simulated device control.

Next steps

Validate against an authorized official integration if one becomes available, add stronger identity and audit controls, and design a production persistence model. Any future integration must retain explicit human approval and a no-unlock-by-default policy.

Verification limits

Verification here is local and synthetic only. It does not prove official Ring compatibility, device behavior, security readiness, deployment readiness, or the correctness of any external API. No real credentials, devices, outbound actions, or platform upload were used.

Built With

Share this project:

Updates

Submission history