The Problem

Managing secure, convenient door access for shared spaces—like apartment buildings or offices—sucks. Physical keys are a mess to manage, and alternatives like smart locks often come with clunky apps or hardware that don't scale well for multiple users. Plus, integrating these setups with something like Home Assistant is not exactly beginner-friendly, let alone secure.

What This Does

DoorOpener cuts through that nonsense with a simple, web-based keypad interface that triggers Home Assistant actions like opening a door. It's sleek, functional, and focused. The core is a Python Flask app (app.py) that serves a modern, responsive UI from the templates/ and static/ directories. Users enter their PINs, which are securely stored and managed via the users_store.py module. There's even OpenID Connect (OIDC) support if you want to integrate SSO for extra security.

The project is all Docker-friendly, with a Dockerfile and docker-compose.yml for quick deployment. Configuration happens through a .env file and a config.ini template, so you can easily customize things like ports, secrets, and Home Assistant endpoints. The tests/ directory has 10 test files, covering everything from security to routes, so you’re not flying blind if you need to modify it.

Real-World Use

Imagine you manage a coworking space with a shared main door. With DoorOpener, you can set up individual PINs for each tenant, so everyone's access is tied to their unique code. If someone forgets to pay rent, you disable their access via the admin panel (templates/admin.html).

Here’s a quick workflow: Deploy the app using Docker Compose (you can copy the docker-compose.yml snippet from the README). Configure the app to connect to your Home Assistant instance, assigning the door lock entity in config.ini. Share the web portal link with tenants. They log in, type their PIN, and voilà—the door unlocks.

Need to revoke access? Update the JSON-based user store, and it’s done. No messy re-keying or awkward conversations.

The Bottom Line

DoorOpener is a solid, single-purpose tool for anyone who wants secure, programmable door access without the headache of bloated ecosystems or expensive hardware. It’s not perfect—the OIDC setup could use some love, and it’s not a plug-and-play Home Assistant add-on (yet). But if you’re comfortable tinkering with Docker and Python, this project is gold. Just don’t expect corporate-grade security out of the box.