Göktürk GöçenEngineer · Cross-field
The fleet layer for industrial doors
--:--:-- +03Izmir 38.42°N

DoorodorCloudPlatform

About the project

Robodor makes industrial door-controller boards. Doorodor is the platform that brings them online. Each controller pairs with a small ESP32 gateway that carries it onto the internet, so an operator can watch a whole fleet of doors, receive alarms, change settings, and even update a controller's firmware remotely — from the web or a phone, anywhere. It is a complete product: a web dashboard, native iOS and Android apps, the gateway's own firmware, organizations with accounts and roles, and subscription billing. Safety comes first — the door's local safety inputs (photocell, fire, emergency-stop) always override anything sent from the cloud.

Doorodor · RF15 Control
Doorodor web dashboard — fleet overview, driver cards, and open alarms
iOS app
Doorodor iOS — fleet overview with live card status and alarms
Doorodor iOS — sites on a live map
Doorodor iOS — fault-trend analytics
TECHNICAL READOUTPRJ_01
What it isCloud control / monitoring for RF15 door controllers
TransportMQTT v5 over TLS 1.3 · per-device topic ACL
BackendFastify on AWS EC2 · EMQX · Postgres/Neon · Redis
EdgeESP32 gateway (ESP-IDF) · Modbus-RTU + BLE bridge
ClientsWeb (Next.js) · native iOS (SwiftUI) · Android (Compose)
SafetyLocal inputs override every cloud command
BillingPer-organization freemium via Paddle
The engineering

The backend is a TypeScript Fastify service on AWS EC2, with a self-hosted EMQX broker carrying MQTT v5 over TLS 1.3 — every device authenticates with its own credentials under a topic ACL that denies anything unmatched. Data lives in PostgreSQL (Neon) with Redis for live state. Each RF15 controller pairs one-to-one with an ESP32 gateway (ESP-IDF firmware) over a direct Modbus-RTU UART link; the gateway also exposes a BLE bridge so the existing local app drives it unchanged. Three clients sit on one contract: a Next.js web dashboard and native iOS (SwiftUI) and Android (Kotlin/Compose) apps — each a compound app that keeps the offline BLE mode and adds a cloud realm behind Clerk authentication. Remote firmware programming runs cloud → gateway-as-programmer → controller, gated by the bootloader's physical emergency-stop interlock. Billing is a per-organization freemium model through Paddle. I built it end to end — cloud, gateway firmware, web, and both mobile apps.

Role
Design & development — end to end, solo
Services
  • CLOUD BACKEND
  • IOT / MQTT
  • GATEWAY FIRMWARE
  • IOS & ANDROID APPS
  • WEB DASHBOARD
  • BILLING
Stack
Next.jsFastifyTypeScriptAWS EC2MQTT · EMQXPostgreSQLRedisESP32 · ESP-IDFSwiftUIKotlin · ComposeClerkPaddle
Destinations
PRIVATE BUILD
More work