Volver a todos los artículos
Este artículo aún no está disponible en tu idioma. Mostramos la versión en inglés.

Offline-First App Architecture and Privacy by Design

Split image — on the left, a smartphone surrounded by server racks and glowing data streams in warm light; on the right, a smartphone with a softly glowing waveform standing on its own on a wooden table in a bright room Imagen generada por IA

Many apps follow a familiar pattern today: install the app, create an account, sign in, and then let the phone, backend systems, cloud services, and various APIs exchange data behind the scenes.

From a technical perspective, that can make perfect sense. Cloud synchronization enables cross-device access, backups, and services that would be difficult to provide locally.

But there is a question worth asking much earlier in the development process:

Does this data need to leave the device in the first place?

We asked that question early while building AuraHarmony. The app's core features do not require an AuraHarmony user account or an AuraHarmony cloud service. Playlists, custom frequencies, and the actual use of these features are handled locally. AuraHarmony does not send this usage data to its own servers. If you want to know why we chose this path in the first place, our product perspective is in Why We Built AuraHarmony Without Accounts, Tracking, or the Cloud — this article looks at the technical side behind it.

That is primarily an architectural decision. But it also has a direct impact on privacy.

Privacy starts with architecture

When people think about privacy, they often think about privacy policies, consent dialogs, or cookie banners.

For developers, privacy starts much earlier: with the data model and the architecture of the application itself.

Some of the most important decisions are made before the first production release:

  • What data does a feature actually need?
  • Where is that data stored?
  • Does the feature require an internet connection?
  • Is a user account really necessary?
  • Is usage behavior being analyzed?
  • What information leaves the device?
  • Which external services are part of the system?

The fewer unnecessary data flows an application creates, the less data needs to be secured, transferred, retained, managed, or deleted later.

That is where software architecture and privacy begin to overlap.

Data minimization under Article 5 of the GDPR

Article 5(1)(c) of the European Union's General Data Protection Regulation, or GDPR, establishes the principle of data minimization.

Personal data must be adequate, relevant, and limited to what is necessary for the purposes for which it is processed.

From a software engineering perspective, that changes the order in which we should ask certain questions.

Instead of starting with:

"How do we protect this data?"

there is often a more fundamental question:

"Do we need this data for the feature at all?"

If a feature can work without collecting certain personal data, an entire category of subsequent data processing disappears with it.

Privacy by Design and Privacy by Default

Article 25 of the GDPR takes this concept further by requiring data protection to be considered during the design of systems. This is commonly referred to as Privacy by Design.

Article 25 also addresses Privacy by Default: privacy-friendly settings should be the default rather than something users have to discover and configure later.

There is an important distinction here:

The GDPR does not require an offline-first architecture.

A cloud-based application can be designed and operated in full compliance with the GDPR.

Offline-first is simply one technical strategy that can support certain privacy principles particularly well.

With AuraHarmony, the privacy-conscious configuration is not hidden behind an optional setting. The core features work without an AuraHarmony account, behavioral tracking, or our own cloud synchronization by default.

In that sense, part of the privacy model is built into the product itself.

What does "offline-first" actually mean?

The term is sometimes used rather loosely.

At its core, an offline-first architecture allows an application to provide its essential functionality without requiring a permanent network connection.

Android's official architecture documentation, for example, describes offline-first approaches in which a local data source can serve as the application's canonical source of truth.

A simplified cloud-centered architecture might look like this:

App
 ↓
API — authenticated through a user account
 ↓
Backend
 ├── Database
 ├── Analytics systems
 └── Additional services

A local architecture can be considerably shorter:

App
 ↓
Local data storage
 ↓
Local processing

Offline-first does not necessarily mean "never connect to the internet."

An application can still provide individual online features. What matters is whether its core functionality depends on a remote backend and what role local processing plays in the overall architecture.

Offline-first and local-first are not the same thing

A related concept is local-first software, described by Martin Kleppmann and his co-authors.

Local-first software puts strong emphasis on user control over data. Local copies remain important, while cloud infrastructure may support the application without automatically becoming the single authoritative owner of the user's data.

However, the local-first model described in that research goes further than AuraHarmony in one important area.

Local-first software explicitly includes concepts such as cross-device synchronization and collaboration. AuraHarmony takes a simpler approach: we adopt the idea of keeping personal data under local control, but we also choose not to provide our own cloud synchronization for personal app data.

That reduces dependencies, but it also removes some conveniences.

How AuraHarmony applies this approach

One of the key product questions during development was:

What information do we, as the provider, actually need in order for AuraHarmony to work?

For the core functionality, the answer is: very little.

AuraHarmony does not require its own user account. Custom frequencies, playlists, and individual usage information are not transmitted to AuraHarmony servers. We also do not track individual in-app behavior.

A simplified representation of that data flow looks like this:

AuraHarmony
│
├── User interface
├── Audio and frequency features
├── Playlists
├── Custom frequencies
└── Local storage
       │
       └── No transmission to AuraHarmony servers

And that local sound generation isn't just a claim — we put it on actual lab equipment in Smartphone Frequencies Under the Oscilloscope, measuring the frequencies the app produces.

That distinction matters.

We are deliberately not claiming that locally stored data can never be included in any cloud service. Android and iOS may provide their own operating-system backup mechanisms depending on the user's device configuration.

Those processes belong to the respective platform provider's infrastructure, not to an AuraHarmony cloud service.

What we can control is our own data flow:

AuraHarmony does not transmit this personal usage data to its own servers.

What external connections still exist?

Offline-first does not mean a smartphone running AuraHarmony will never establish any network connection.

There are two areas worth separating clearly.

Terms and privacy policy

AuraHarmony's legal documents, including its Terms and Conditions and Privacy Policy, are provided through iubenda.

Opening these externally hosted documents can therefore create a connection to that service.

The app's core audio functionality, playlists, and custom frequencies do not depend on that connection.

Apple App Store and Google Play

Installation, purchase, and app updates are handled through Apple's App Store or Google Play.

Any data Apple or Google processes as part of their respective store platforms is governed by their own systems and policies and sits outside AuraHarmony's internal app architecture.

AuraHarmony does not receive individual usage profiles from those platforms. As the provider, we essentially receive sales information such as the number of apps sold.

That distinction is important:

Data processed by a platform operator is not the same thing as usage data collected by AuraHarmony.

Offline does not automatically mean secure

Another boundary needs to be clear.

It would be technically inaccurate to claim:

"Offline-first means absolute security."

It does not.

Locally stored data can still be exposed through a compromised device, malware, weak device security, or other attack vectors.

A narrower and more defensible statement is:

Data that AuraHarmony never transmits to its own servers cannot be exposed through a breach of an AuraHarmony server containing that data.

We also do not need to:

  • associate that data with an AuraHarmony user account,
  • store it in our own centralized database,
  • synchronize it across our systems,
  • retain it for individual usage analytics,
  • or later remove it from our own cloud infrastructure.

In this way, the architecture itself supports data minimization.

Why this matters for personal apps

Apps related to relaxation, sleep, audio, or personal routines often operate in areas users consider private.

That does not automatically mean every wellness app processes sensitive health data. Still, it is worth examining what information apps in these categories collect and why.

One empirical study, first published online in 2022, examined 27 popular mental health apps available through the Google Play Store and identified substantial differences and privacy concerns in how those apps handled data and transparency.

Those findings cannot simply be generalized to every wellness or audio app.

But they highlight a broader software design question:

Should we collect information simply because we technically can?

For AuraHarmony's core functionality, our answer was no.

Less data also means less analytics

From a developer's perspective, a lot of usage information could be interesting:

  • Which frequencies are used most often?
  • How long does an average session run?
  • What kinds of playlists do users create?
  • Which features are rarely opened?
  • At what time of day is the app used most?

That information could help guide product development.

But "interesting" and "necessary for the feature to work" are not the same thing.

Choosing not to collect this information centrally also means giving up part of the insight normally available through data-driven product analytics.

That is a real trade-off, and it is part of an honest assessment of a privacy-conscious architecture.

The trade-offs of a local architecture

Nearly every architectural decision has a cost. Offline-first is no exception.

No AuraHarmony cloud sync between devices

A personal configuration is not automatically synchronized to another device through an AuraHarmony cloud service.

For people who regularly use several devices, centralized synchronization could be more convenient.

No server-side usage profiles

AuraHarmony does not build server-side profiles based on individual app behavior.

As a result, we cannot use such profiles to generate server-side personalized recommendations.

Personalization could technically be implemented locally on a device; that is a different architecture entirely and should not be confused with centralized profiling.

Less telemetry for product development

We have less information about how individual features are actually used.

What can be attractive from a privacy perspective can therefore represent a limitation from a product-development perspective.

That trade-off was intentional.

The cloud is not the enemy

Privacy discussions can easily collapse into an overly simple comparison:

Offline good. Cloud bad.

Software architecture is more nuanced than that.

Cloud systems can be secure, highly scalable, and privacy-compliant. For many applications, they are indispensable.

Likewise, a fully local application can still be poorly designed or insecure.

A better architectural question is:

What infrastructure does this particular product actually need, and what data must be processed to provide that functionality?

AuraHarmony's core features do not require centralized user management or our own cloud storage for personal frequencies and playlists.

So we chose not to build those systems.

Privacy by Design is software design

As a software developer, this is the part I find most interesting.

Privacy is often treated as a legal requirement that appears near the end of a project, shortly before release.

Technically, however, it influences decisions much earlier.

Architecture determines:

  • what data exists,
  • where it is processed,
  • which systems can access it,
  • which interfaces must be exposed,
  • and which additional attack surfaces are created.

Offline-first is neither a universal solution nor a GDPR requirement.

It is an architectural tool.

For a product such as AuraHarmony, that tool happens to fit particularly well.

Conclusion: sometimes the most privacy-friendly database is the one you never build

Software development is a continuous series of trade-offs.

Cloud synchronization adds convenience. User accounts enable cross-device services. Telemetry can provide valuable insight for future development.

All of those systems can be designed responsibly and in compliance with privacy law.

But before building them, there is still a useful question to ask:

Does this product actually need them?

For AuraHarmony's core functionality, we deliberately chose local processing. Personal playlists, custom frequencies, and individual usage behavior do not need to end up on AuraHarmony server infrastructure.

Privacy therefore does not begin with the Privacy Policy.

Part of it is already built into the software architecture.


Want to explore AuraHarmony? AuraHarmony generates frequencies and binaural beats directly on your device. Custom frequencies and playlists remain part of the local app experience — with no AuraHarmony account, no behavioral tracking, and no AuraHarmony cloud synchronization. Explore AuraHarmony for iOS and Android — or try the demo right in your browser.


Sources and further reading

  • European Union — General Data Protection Regulation, Article 5: Principles relating to the processing of personal data, including data minimization under Article 5(1)(c).
  • European Union — General Data Protection Regulation, Article 25: Data protection by design and by default.
  • Google / Android Developers: Build an offline-first app — official Android documentation covering offline-first application architecture and local data sources.
  • Kleppmann, M., Wiggins, A., van Hardenberg, P., & McGranaghan, M. (2019): Local-first software: you own your data, in spite of the cloud. Proceedings of Onward! 2019, 154–178.
  • Iwaya, L. H., Babar, M. A., Rashid, A., & Wijayarathna, C.: On the privacy of mental health apps. Empirical Software Engineering, 28(1), Article 2.