A subscription platform for real-time audio translation. Built for institutions that need spoken+written word translated live — churches, conferences, multilingual events.
Churches and multilingual institutions have long struggled with real-time translation. Dedicated translation hardware is expensive and complex to operate, while general AI tooling lacks the infrastructure needed for reliable subscription-based access.
Aurelo solves this end-to-end: a native desktop app that captures and translates audio in real time, backed by a SaaS platform that handles billing, access control, and provider key management — all transparently.
Subscribers get a simple monthly usage quota (hours of translation time). The system enforces limits, renews access on billing cycles, and keeps the device operations smooth even under quota pressure.
The system is intentionally distributed: the backend never touches the audio stream. Instead, it acts as a secure token broker — validating quota, encrypting provider credentials, and letting the desktop call AI services directly.
seconds_used, enforces limits, resets on billing renewal.
The Electron-based desktop app is designed for non-technical operators. Clean, distraction-free, and fast-loading — it needs to work reliably in a church AV booth, not a developer's terminal.
Secure credential storage — Electron's safeStorage API stores auth tokens in macOS Keychain / Windows Credential Vault
Offline resilience — cached subscription state, heartbeat queue with hard cap to prevent abuse on reconnect
Token proactive refresh — detects expiry before mid-stream and reconnects cleanly with a fresh token
Light & dark mode — full theme support, readable in dim conference environments
Provider API keys (OpenAI, Soniox) are never sent to the client in plaintext. The backend wraps them in a signed, AES-256-CBC encrypted payload, keyed from a separate REALTIME_SECRET — not the app key. Desktop decrypts in memory; credentials are never persisted locally. Tokens are cached in Redis with a 5-hour TTL and can be revoked instantly.
Usage is tracked without the backend touching audio. The desktop posts heartbeats every 60 seconds with seconds elapsed since last ping. The backend increments subscriptions.seconds_used directly — no separate usage-events table, no message queue overhead for the common path. Offline sessions queue heartbeats locally with a hard cap to prevent abuse on reconnect.
A QuotaService compares seconds_used against the plan's approved quota before every token issuance. On breach, the subscription status flips to over_quota and the response carries an upgrade CTA. Monthly reset is triggered by Stripe's billing webhook — no manual cron gymnastics for the happy path.
Five timed emails guide new users from signup to active usage. Email logic adapts to user state: if a user has already opened the desktop app, Email #2 switches from a signed download URL to a deep-link (aurelo://translate). A redirector captures UTM attribution from trackable links and saves captured information as a lead before forwarding.
A Vue 3 SPA serves as the customer-facing web platform — plan selection, billing portal, device management, and account settings. Built with a strict service-layer pattern; components never touch Axios directly.
Billing & usage interface — Feb 2026
Every technology decision was made to maximise team velocity without accumulating operational debt. Single-server Docker deployment with zero-downtime rsync-based deploys. Nginx serves both the API and the Vue SPA from the same container.
Aurelo is a solo-built, end-to-end platform — from database schema and Laravel services through Vue components to Electron IPC handlers. Every layer was designed, implemented, and shipped by one developer.