Hello, I'm Uba

AI Automation Builder

All systems

22 of 24AI systems / 22 of 24

Case study

Open source

HandyTranslate (iOS + macOS)

A custom iOS keyboard and a macOS menu-bar app that translate whatever text you just typed or selected the instant you switch keyboards or press a shortcut.

SwiftUIKitAppKitiOS Keyboard ExtensionCarbon Hot Key APIOpenAI API (gpt-4o-mini)XcodeGen

Facts

Status
Open source

FIG. 001 / ARCHITECTURE

How the system connects

Live model

Problem

Translating a message on iPhone or Mac normally means copying text out of the current app, pasting it into a separate translator, and pasting the result back — slow enough that people often just don't bother, on either platform.

System

On iOS, a custom keyboard extension (Swift/UIKit) reads the text already typed in the active field via the system text-document proxy; switching to the HandyTranslate keyboard triggers an OpenAI (gpt-4o-mini) call that auto-detects Turkish or English, replaces the text with its translation, and switches back to the previous keyboard automatically. On macOS, a Swift/AppKit menu-bar app registers a global shortcut (⌘⇧⌥M) via the Carbon Hot Key API, grabs the current selection, sends it to the same OpenAI model, and replaces the selection in place — restoring the clipboard afterward.

FIG. 002 / HOW IT WORKS

How it works

HandyTranslate turns a keyboard switch or a single shortcut into the entire translation action, on both of Uba's daily platforms. The iOS version is a proper Keyboard Extension with App Groups for sharing the API key between host app and extension; the macOS version needs no special Accessibility permission, driving the same translation through low-level keyboard-event simulation instead. Both are published as public, from-scratch Swift projects rather than wrappers around an existing translator app.

Stack

What it runs on

SwiftUIKitAppKitiOS Keyboard ExtensionCarbon Hot Key APIOpenAI API (gpt-4o-mini)XcodeGen

Want a system like this for your team?

We start by mapping one workflow on a 30-minute call.

Message me onWhatsAppTelegram