Design System · at ANNA Money

Design decisions that ship as code.

Tiger turned recurring product UI into a governed Compose system that teams could adopt while legacy XML screens remained in production.

Jetpack ComposeSemantic tokensComponent APIsAdoption
Tiger Design System product visual
SpecialtyDesign System
Formal role or capacityContractor · offer title: Android Developer
Personal scopeAndroid implementation patterns, templates, reviews, and adoption guidance
SystemTokens · components · versioned families

Compose alone would not create consistency.

Changing the rendering toolkit without shared semantics would let every feature recreate states, spacing and behaviour differently.

Legacy reality

Years of working screen-level UI

Fragments, XML, MVP and several visual generations still delivered accounting and tax behaviour.

Platform target

A reusable delivery layer

New and changing features needed stable component APIs without waiting for a complete rewrite.

From design semantics to product adoption.

The role combined component implementation, design collaboration and the conventions needed for feature teams to consume the system.

I OWNED

Android-side Tiger work

  • Component semantics and variants
  • Compose implementation and review
  • Feature adoption guidance
  • Compatibility conventions
DESIGN PARTNERSHIP

Shared vocabulary

  • Semantic intent
  • States and accessibility
  • Product-specific variants
  • Evolution feedback
PRODUCT TEAMS

Real adoption

  • Accounting and payments
  • Tax and accounting
  • Forms and navigation
  • Legacy coexistence

A layered system turns intent into reusable product behaviour.

Android Tiger and Flutter Barracuda are separate platform implementations aligned by shared design intent.

FOUNDATIONS

Semantic tokens

Themes, type, icons, spacing and content-description conventions.

→
COMPONENT APIs

Reusable behaviour

Controls, cells, cards, banners, forms, navigation and product variants.

→
PRODUCT SURFACES

Incremental adoption

Compose features consume Tiger while untouched XML screens remain available.

Adoption before purity.

The system was designed for a mature application where product delivery could not wait for architectural completion.

01

Encode semantics, not screenshots

Component APIs represent recurring states and intent instead of one screen composition.

02

Keep legacy compatibility

Fragment-compatible Compose entry points let teams migrate for product reasons, not framework deadlines.

03

Review usage as part of the system

A component succeeds only when product engineers can apply it consistently.

04

Protect shared behaviour

Reusable instrumentation and visual coverage reduce cross-feature regressions.

05

Keep platform implementations honest

Do not present Android Tiger and Flutter Barracuda as one shared codebase.

One system across different product jobs.

Public visuals show product breadth; they do not claim individual authorship of every displayed screen.

Shared rules became reusable Android delivery infrastructure.

Android engineers adopted the patterns, templates, and utilities for new work while legacy XML screens remained available.

DESIGN

Shared semantics become stable engineering APIs.

DELIVERY

New work can use Compose/Tiger while legacy screens remain production-safe.

BOUNDARY

Personal implementation, review, and adoption guidance are separated from team-owned product delivery.

Evidence & NDA boundaryThis case uses approved public visuals and a sanitised technical narrative. Private source, endpoints, credentials, configuration, customer data, and proprietary schemas are excluded.

Explore a role or project

Target role · Staff Mobile Engineer (Android + Flutter)
Worldwide remote · English / Russian
Novi Sad, Serbia · hybrid possible