Apps

Apps that outlive
their launch.

Getting into the store is the small part. What decides whether an app works is what sits behind it — a backend that holds up, notifications that actually arrive, and someone who ships the next version.

Talk it through →
Three ways in

Not every app
starts from zero.

01

A web app becomes an app

A web application that already works does not need rebuilding twice. Our own shell, Appify, packages it into a real iOS and Android app — with a native launch screen, device language detection and push, ready for the store.

02

Built for the device

Some ideas only exist because a phone can do things a browser cannot — knowing when someone enters a shop, staying awake in the background, putting a live status on the lock screen. That is native territory, and we go there when the idea needs it.

03

Taking over what exists

Plenty of apps are alive but unloved — the agency is gone, the framework is dated, the store keeps asking for a new build. We adopt existing apps, keep them shipping and modernise them step by step instead of all at once.

End to end

A patient app,
built entirely here.

SwissDTx is a digital therapeutics platform — and everything it runs on comes from one place: the patient web app, the shell that turns it into an iOS and Android app, the backend behind it and the infrastructure it all runs on. Nothing is handed to a third party, which in a regulated field is the point rather than a nice extra.

More of our work
Clay-motion still life: a cardboard smartphone linked by twine to a small clay-and-cardboard server cabinet
What we bring along

Our own parts,
not rented ones.

Over the years the same pieces kept being needed, so we built them once and properly. They belong to us, which means they can be changed when a project needs it.

Appify — our app shell

One configuration file turns a web application into a store-ready app. Splash screen, icons, languages, permissions and push all come out of the same place, for both platforms.

Push from our own backend

Notifications do not need to travel through a foreign service that also learns who your users are. Our push backend runs on our own infrastructure, and the data stays where the app's data already is.

A store update, not a reinstall

When we replace an existing app, the bundle identifiers stay the same. Users get an update like any other — nobody has to find, install and log into something new.

Multilingual from the start

German, French, Italian, English, picked from the device language. In Switzerland an app that only speaks one language is a decision, and usually not a good one.

iOSAndroidAppifyTypeScriptFramework7Push-BackendGeofencingLive Activities
Clay-motion still life: a cardboard smartphone in front of a miniature shop shelf, a paper notification hanging above on a wire
Trying it out first

Some questions
need a prototype.

Does a phone reliably notice when someone walks into a shop? What does that cost in battery, and what does the operating system still allow in the background? Questions like these are cheaper to answer with a small prototype than with a finished app — so we build the prototype.

Before anything is built

Understand. Plan.
Build. Grow.

With apps the last stage is the long one. Operating systems change once a year whether the project is finished or not.

How we work
Services

What else
we work on.

Let’s talk

New app, or one
that needs a home?

Both are a good starting point — a new idea, or an app that works but has nobody looking after it any more.

Start a project →

Bern —