galando/alexa-skill: The Architecture of a Silent Conversation

How a minimalist Kotlin implementation decoupled the "Voice-First" monolith and brought backend discipline to the Alexa Skills Kit.

• View on GitHub • More from galando

A mechanical sorter taking chaotic, floating speech bubbles and neatly filing them into rigid, labeled steel drawers.
The handler pattern brings order to the inherent chaos of voice commands.

We didn't really have a lot of Alexa skills available in Portuguese, so I decided to develop some myself

Eduardo Fischer dos Santos, Developer, Creator of popular Alexa skills · The developer of the hit 'Spider Pig' and 'Word of the Day' provides tips on building Alexa Skills that scale

Key Takeaways

The Death of the Monolith

Most voice applications start as a single, bloated script. A user speaks, the payload hits an AWS Lambda function, and a massive if/else or switch statement attempts to route the intent. It works for a hackathon, but it collapses under the weight of a production skill.

galando/alexa-skill takes a different route. By implementing the Alexa SDK v2's Request Handler abstraction in Kotlin, it enforces a strict Command Pattern. The core entry point, HelloWorldStreamHandler, contains almost no logic. It simply acts as a skill dispatcher, maintaining a registry of independent handlers.

The request lifecycle: iterating through registered handlers until a canHandle predicate returns true.

Inside the handlers/ directory, each voice intent lives in absolute isolation. The canHandle method acts as a precise filter, while the handle method dictates the response. Adding a new voice command requires zero modifications to the existing routing logic—you simply drop a new gear into the gearbox.

A close-up of a single, perfectly machined gear being dropped into a larger clockwork frame.
Each intent handler acts as a modular, plug-and-play component within the larger skill architecture.

The Brazilian Pioneer

The repository is the work of Eduardo Fischer dos Santos, a former backend engineer who became a prolific creator in the Alexa ecosystem. When the Amazon Echo first launched in Brazil, the local marketplace was practically empty.

Portrait of Eduardo Fischer dos Santos

Fischer's skills eventually reached hundreds of thousands of users. This repository serves as a snapshot of the foundational architecture he used to scale those applications, bringing backend rigor to a platform often dominated by fragile scripts.

Kotlin’s Semantic Sugar

The choice of Kotlin is deliberate. The official Alexa Skills Kit SDK for Java is notoriously verbose. Kotlin’s expression bodies, null-safety, and fluent APIs transform that boilerplate into highly readable, declarative intent logic.

The Standard WayThe Galando Way
Nested if/else routing blocksIndependent canHandle predicates
Verbose response buildersFluent input!!.responseBuilder chains
Difficult to isolate and unit test100% testable, single-responsibility classes
Monolithic file structureOne class per voice intent

The codebase even leaves the HelloWorldIntentHandler returning a placeholder "BlaBla" response. This isn't an oversight. The repository is a pure architectural template, designed to get the plumbing out of the way so developers can focus on domain logic.

The Serverless Payload

A glance at the build.gradle file reveals that this "simple" skill is wired for heavy lifting. It includes dependencies for org.jetbrains.exposed and mysql-connector-java, indicating a design meant for persistent SQL database connections.

A small Echo device floating on the water's surface, with a massive underwater structure of SQL databases and Auth servers beneath it.
The simple voice interface hides a complex backend infrastructure.

Furthermore, the inclusion of the fuel HTTP client and java-jwt points to robust account linking and external API communication. The project leverages the Serverless Framework to manage AWS infrastructure, using a custom Gradle task to properly structure the ZIP payload for Lambda deployment. It’s a masterclass in treating voice interfaces as serious backend systems.