---
title: "Backdoor: reception software for climbing gyms"
description: "Landing page for Backdoor, software that runs the front desk of a climbing gym locally: RFID at the gate and a real-time reception panel."
date: 2019-02-24T16:06:34+01:00
lastmod: 2026-11-05T13:51:01+01:00
url: https://klimek.link/projects/backdoor/
author: "Marcin Klimek"
source: https://klimek.link/projects/backdoor/
---

# Backdoor: reception software for climbing gyms

When climbers tap their RFID cards at the gate of a climbing gym, **Backdoor** has to decide right then whether to let them in. It checks each pass, the benefit-card provider and the gym's own rules, opens the gate, and reception sees every entry on screen as it happens. All of this runs on a computer in the gym, without any cloud or subscription, so no outage can stop the front desk from working.

*Diagram: Backdoor: how a card tap becomes an open gate and a line on the reception screen*

<!-- interactive element omitted in the Markdown version -->

## What it does

Reception gets one screen with everyone who's inside, who's coming and which passes are active. Data is kept in SQLite on the gym's own computer. The RFID reader sits in a panel at the gate that talks to the desk program over USB. Client data stays on that computer and there's no telemetry; the only thing that leaves is an encrypted copy of the backup, sent off site. Pass priorities, protection against double entry and instructor permissions are worked out by the software, so people at the desk don't have to think about them. The panel at the gate has [firmware of its own](/projects/gate-panel-firmware/), and the desk software also runs [climbing competitions](/projects/climbing-competitions/).

*Diagram: Schematic of the reception screen, not a screenshot*

## The landing page

I built this landing page as a small React and TypeScript app with Vite and Tailwind CSS, with some motion effects and both light and dark themes. It's available in English and Polish. Your choice of language and theme is remembered and restored before the first paint, so the page doesn't flash the wrong colours while loading.

Source: https://klimek.link/projects/backdoor/
