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
- css
- html
- http
- javascript
- python
- unittest
- urllib
Log in or sign up for Devpost to join the conversation.