Skip to content
All work

Case study

ZEISS SECACAM

Cellular trail cameras for 200k+ monthly users across Europe

monthly users
200k+
crash free users
99.5%
languages
21+
from backend bug to release
1 day

ZEISS SECACAM connects cellular trail cameras to your phone. Hunters and wildlife watchers across Europe use it to receive photos and videos, manage their cameras remotely and let AI tag the animals in each shot. The app runs in 21+ languages and serves more than 200,000 people every month.

I joined in 2024 through Gradion and became the top contributor to the app. I build features end to end, review pull requests for a team of five, and step into the backend and the release pipeline when the product needs it.

Newest photos first

People coming back after a few days could have 500+ new photos waiting, and the latest shot could take up to 10 minutes to appear. I redesigned sync to fetch the newest photos first and fill the gap in the background, with a status bar that shows progress and warns when the app falls out of sync.

A same day fix in the backend

Cameras with custom notifications switched off stopped sending any alerts, even with global notifications on. I traced it to the NestJS notification service, opened a small fix with a clear write up, and the solution architect reviewed it. It was merged and released the same day. Earlier I had moved the app's push notifications from Azure Notification Hub to this new Signal Service.

Releases that run themselves

During the move to a new Azure DevOps organization I rebuilt the mobile pipelines on self hosted Mac agents: App Store and Google Play releases, semantic versioning from commit history, crash symbol uploads to Crashlytics and a separate over the air update pipeline.

Crash reporting people can act on

I replaced Bugsnag with Firebase Crashlytics across JavaScript, iOS and Android, with readable stack traces on both platforms. The app holds a 99.5% crash free rate.

21 languages without the busywork

A small script translates new copy with DeepL and syncs it to Lokalise. Each entry takes under 10 seconds instead of 5 minutes, and the marketing team can edit text without a developer.

Stack

  • React Native
  • TypeScript
  • Redux Toolkit
  • Redux Saga
  • Realm
  • Firebase
  • Crashlytics
  • Azure DevOps
  • NestJS
  • Jest
  • Appium