Case studies
Maritime / defence / specialist reference · 2018

Naval reference + marketplace across 104 countries that works offline

Naval reference + marketplace across 104 countries that works offline

Client
Naval Library
Duration
12 weeks
Status
Shipped
Stack
Flutter (initial build on Flutter 1.x, later upgraded to the latest Flutter) · GetX · Firebase · Firebase offline persistence

What we solved

Naval buyers, analysts, and enthusiasts juggle scattered PDFs, forum threads, and broker emails to compare warships, submarines, missiles, and instruments across the world’s navies. Specs sit in one place, listings in another, and field work often happens without reliable connectivity. The client needed one app that did the reference and the marketplace - and stayed useful when the signal dropped. Six years and multiple Flutter-version upgrades later, the app now covers 104+ countries across warships, naval aircraft, submarines, missiles, unmanned systems, equipment, books, and infographics.

The system at a glance

A Flutter app (iOS + Android) pairing a structured naval reference library with a second-hand buy/sell marketplace. Initial build shipped on Flutter 1.x; the codebase has been upgraded to the current Flutter release as part of long-running maintenance. Filters by country, vehicle category, and sub-type. Study tools (flip cards, quizzes) for learning. Pro users get offline access, side-by-side comparison, access to restricted listings, and deeper data via an in-app subscription. Firebase handles data, auth, and offline sync. GetX keeps the UI responsive.

What the user experiences

  • Browse categories: warships, submarines (ballistic missile / guided missile / nuclear-powered / diesel-electric / midget / special mission), naval aircraft, patrol boats, missiles, unmanned systems, equipment.
  • Filter by country (104+), specs, or condition.
  • Open a listing: photos, specs, operational status, diagrams.
  • Pro tier: open two listings side-by-side for comparison. Download offline. Access restricted items.
  • Interactive infographics for in-depth vehicle analysis.
  • Quiz mode: flip cards and multi-choice recognition practice.
  • News, videos, and documents integrated alongside the core reference.
  • Buy or sell a second-hand item through the marketplace flow.
  • Pay for Pro inside the app.

How we built the pieces

Offline - Firebase persistence, not a custom sync layer

Firebase’s client libraries ship offline persistence for free. The app reads from the local cache when offline and reconciles on reconnect. Users on a ship, in a port, or in a dockyard without data still open the app and see the reference they were reading yesterday.

Marketplace - Firestore documents, no custom backend

Every listing is a Firestore document. Buy/sell flows write new documents; the marketplace feed is a live query. Firebase Storage holds the imagery. No custom server code.

Pro subscription - in-app purchase, gated reads

Pro unlocks: side-by-side comparison, restricted listings, full offline sync, and full-detail content. An in-app purchase plugin wraps App Store and Play Billing; the backend validates receipts and flips the user record. Gated documents return empty for free-tier clients; Pro reads the full record.

Reference + marketplace in one app

The trick is they share infrastructure. The reference library is Firestore documents tagged reference. The marketplace is Firestore documents tagged listing. Same auth, same offline sync, same search. A niche community gets both surfaces without running two apps.

Study mode - flip cards + quizzes

A Flutter widget stack renders flip-card interactions without a third-party animation library. Progress saves locally (Hive or GetStorage) and syncs to the user’s account when they’re online.

Continuous maintenance - Flutter version upgrades

The app shipped on Flutter 1.x in 2018. Across six years we have migrated it through successive Flutter releases - null safety, breaking plugin changes, Firebase SDK upgrades - without a rewrite. That is the case for Flutter on a specialist app: the language and framework pay compounding dividends on maintenance.

Offline-first is the real product

The interesting part is the combination - reference + marketplace + study mode + offline + subscription gate in one app, maintained for 6+ years across 104+ countries’ navies. Each piece alone is easy. Gluing them together on Firebase without a custom backend, and keeping it running across framework upgrades, is where the engineering sits.

Results

  • Shipped to App Store + Google Play in 2018; live at navallibrary.com.
  • Continuously updated through 2024+ (current website banner).
  • Offline-usable reference across warships, submarines, aircraft, missiles, unmanned systems, documents.
  • Marketplace working with buy/sell flows and secure payments.
  • Pro subscription tier gating comparison, offline, and restricted listings.
  • 104+ countries covered.

What an engineering team should take from this

If you are building a niche-community app that combines content, marketplace, and monetisation:

  1. Firestore + offline persistence is enough for read-heavy content apps - you don’t need a custom sync layer.
  2. Reference and marketplace can share the same data layer if you tag by type. Two apps is rarely the right answer.
  3. Pick a framework you can maintain for years. Flutter + Firebase will still be a going concern when your app is six years old; be deliberate about that choice up front.

Tech stack

  • Mobile: Flutter (initial 1.x, currently latest - iOS + Android)
  • State: GetX
  • Data + auth + storage: Firebase (Firestore, Auth, Storage)
  • Offline: Firebase client-side persistence
  • Payments: in-app purchase plugin wrapping App Store + Play Billing
  • Local cache: Hive or GetStorage (inferred)

Screens

Case-study page with main menu, warships, and submarines screens

Reference architecture

The stack, one-pass.

Named pieces, how they connect, and why each one earned its spot.

  • 01Flutter (initial build on Flutter 1.x, later upgraded to the latest Flutter)

    iOS + Android from one codebase; app continuously updated through 2024+

  • 02GetX

    state management + navigation for content-heavy browsing flows

  • 03Firebase

    serverless data storage with built-in offline sync

  • 04Firebase offline persistence

    specs, infographics, and listings available when the signal drops (ships, ports, field work)

  • 05In-app purchase plugin

    Pro-tier subscription gate for comparison, restricted items, offline mode, full content

  • 06Hive / GetStorage

    local cache alongside GetX for flip-card progress and quiz state

Full stack

Every piece, named.

  • Flutter (initial build on Flutter 1.x, later upgraded to the latest Flutter)
  • GetX
  • Firebase
  • Firebase offline persistence
  • In-app purchase plugin
  • Hive / GetStorage
The team on the call

Named engineers, not a pool.

You speak to the person who’ll review the architecture. No account-manager layer. No offshore switcheroo.

Founder & Lead Engineer

Sameer Donga

Shipping Flutter, FastAPI, and AI systems since 2019. Reviews the architecture on every engagement.

Start a similar build

You have the reference. Now the project.

Tell us the shape of your version. We come back with a written architecture and a fixed quote.