# Automha

> A warehouse-automation maker’s whole sales library (catalogues, photos, videos, case studies) in one app.

Case study by Paolo Gianfelici (Full-stack developer & UI/UX designer). https://paologianfelici.com/work/automha

- **Role:** Flutter developer: the mobile app
- **Client:** Automha, through LC Solutions
- **Period:** 2021
- **Platforms:** iOS and Android from one codebase
- **Stack:** Flutter, Dart, BLoC + RxDart, REST API, Firebase Messaging, PDF viewer, Offline downloads
- **App Store:** https://apps.apple.com/it/app/automha/id1574724855
- **Google Play:** https://play.google.com/store/apps/details?id=com.pernice.automha

Automha designs automated warehouses: shuttles, stacker cranes, the software that runs them. Its sales material is large and keeps growing: catalogues, installation photos, videos, case studies, press reviews, certificates.

The app puts all of it in one place: browse by section, narrow by solution, sector and product, open documents without leaving the app, keep them on the phone for when there is no signal, share them, and write to the company.

*The app is on the App Store and Google Play. The recordings on this page do not touch it: they run the original source code as a self-contained build, with a stand-in backend and a sample catalogue made for this portfolio (invented titles, drawn pictures, placeholder documents). None of the content shown is Automha’s, and nothing was sent to their service.*

- 8: kinds of content, one list-and-detail pattern
- 2: languages, switched in place: Italian and English
- 4: ways to sign in: e-mail, Google, Facebook, Apple
- 8.7k: lines of Dart

## A sales library that fits in a pocket

### Five sections, one pattern

Catalogues, photos, videos, case studies and presentations sit in the bottom bar. Each section works the same way: what the company wants to push on top, then the full list with a counter, loaded a page at a time as you scroll. Every entry carries the same three actions: download, view, share.

### Filters and search

A side panel narrows photos, videos and case studies by solution, sector and product type; the choices combine and the counter follows. Each section also has its own search, handled by the server so it covers the whole library and not just what is already on screen.

### Documents open inside the app

Browsing is free; opening or downloading asks for an account, by e-mail or with Google, Facebook or Apple. From there PDFs open in a built-in viewer, photos full screen, and products on a page with picture, description and data sheet.

### Kept on the phone

A document can be saved for later: it is stored on the device, a notification confirms it, the download icon disappears from the entry and the file joins “Downloaded resources”, grouped by type and available offline. Sharing hands the same file to the system share sheet.

### The rest of the company, two languages

The side menu leads to the product range, press reviews, certificates and a contact form for the sales office. Italian and English switch in place: labels, lists and the documents themselves follow.

## How it was built

### One pattern, written once

Eight content types share one model, one service and one set of widgets: a type name decides the endpoint, the labels and what opening an item means (viewer, player or product page). Each screen has its own BLoC on RxDart streams; sign-in state and the list of saved items are shared through inherited widgets.

### Driven by the server

Lists, featured items, filters, even the welcome message come from the REST API in the language the user picked, so what the app shows changes without a release. The same settings call carries the minimum supported version: an older build is asked to update before it can do anything else.

### Files, tokens, notifications

Downloads are written to the app’s documents folder with their metadata alongside, so the offline list survives restarts. Tokens live in the platform’s secure storage and an expired one is renewed at launch. Push notifications arrive through Firebase Cloud Messaging topics, one per language; a local notification confirms each download and opens the file when tapped.

## Recording a live app: The app is real. The catalogue in these recordings is not.

This product is alive, with real accounts, real documents and a real inbox behind its contact form. None of that belongs in a portfolio, so the recordings use none of it.

- **The 2021 code, built for the browser.** The original source compiles with the Flutter release it was written for and runs at phone size in Chrome. What only exists on a phone (push notifications, secure storage, the file system, the share sheet) is replaced by small stand-ins.
- **A stand-in backend inside the app.** The network layer hands every request to a small backend compiled into the demo. It answers with the routes and JSON shapes the app expects (paged lists, featured items, filters and search passed as headers), so models, blocs and screens run unchanged.
- **A sample catalogue, made from scratch.** Titles and texts are invented, pictures are drawn by a script, documents are placeholder PDFs generated on the fly. The welcome message the app shows at launch says so.
- **Recorded by a script, offline.** A storyboard drives the app with real touch events and records the screen. The recorder refuses any request that leaves the machine, so a take cannot reach the real service even by mistake.

Logo and colours are the app’s own. Everything in the lists (titles, pictures, documents) is sample content and does not come from Automha.

## Recordings

- **Browsing the catalogue** (65 s): Five content types in tabs, each with a featured carousel and a paged list, filters by solution, sector and product type, and full-text search. https://paologianfelici.com/media/automha/clips/browse.mp4?v=2f3159de90
- **Sign-in and documents** (46 s): Opening anything asks for an account first. Once signed in, catalogues open in the built-in PDF viewer, photos full screen, products on a detail page with their data sheet. https://paologianfelici.com/media/automha/clips/documents.mp4?v=7f56873b4f
- **Downloads, contacts, language** (73 s): Documents can be kept on the phone and reopened from “Downloaded resources”. The side menu also leads to press reviews, certificates and a contact form; the whole app switches between Italian and English. https://paologianfelici.com/media/automha/clips/offline.mp4?v=a19402729a
