Software company · Building our own products

We build software, and we run it ourselves.

Harbor Media designs, builds and operates its own web, iPhone and Android apps, on a platform we built for the job.

The Harbor Media dashboard's block library: each Harbor Forge building block with its version and status.
Link'd, our live get-togethers app, on iPhone: its Events tab (sample data).

What we build

Websites.Web apps.iPhone.Android.

Designed, built and run by one small team, for our own products.

The stack we build and run on

  • Swift
  • SwiftUI
  • Kotlin
  • React
  • Astro
  • Next.js
  • Node.js
  • PostgreSQL
  • Keycloak
  • OpenID Connect
  • nginx
  • GitHub Actions
  • DigitalOcean

Link'dIn testing

Meet new people, face to face, a few at a time.

Live video get-togethers on iPhone, each run by a host, in small groups that change every round. A private chat opens only when both people choose to stay in touch.

About this product: Link'd

KitchenryPaused

A kitchen that knows what's in it.

Track what you have, cook what's about to turn, and never see a meal that isn't safe for someone at your table.

About this product: Kitchenry

Link'd on iPhone: the Events screen, with a get-together live now and the ones coming up (sample data).
  • iPhone
  • Hosted
  • Small groups
Kitchenry on Android: the Kitchen screen, listing what is in the house with an option to add a use-by date.
  • What's in the kitchen
  • What to cook first
  • The grocery list
The Harbor Media sign-in page, with username, password, passkey and another-way options.
  • Two-factor codes
  • Passkeys
  • One login across apps

How we build

Every product starts from the same parts

Sign-in, the server, the database, logging, releases and tests are kept as versioned building blocks in Harbor Forge, our own platform. A new product is composed from them rather than copied from the last one.

When a block is fixed or improved, we can trace every product built from it. That is how a small team keeps several apps healthy at once.

$ hm-forge catalogueauth  beta  auth-bff            1.0.0  auth.session auth.oidcbackend  beta  node-app            1.1.0  http.server secrets.envdatabase  beta  db-postgres         1.0.0  db.postgres db.migrationsdeploy  beta  deploy-droplet      1.6.1  deploy.release deploy.rollbackobservability  beta  obs-health-version  1.0.0  obs.health obs.version  beta  obs-logging         1.0.0  obs.loggingci  beta  ci-node             1.0.0  ci.node ci.deploy ci.secretscan$ 

Our approach

One foundation under every product

  • Building blocks

    Versioned parts for sign-in, servers, databases, logging and deploys, shared by every new project.

  • One sign-in

    A single identity server with two-factor and passkeys, so no app writes its own login.

  • Web, iPhone and Android

    Native apps for each phone and a fast web front end, all talking to one server.

  • Tested before it counts

    Automatic checks run before a release, and again against the live site after it ships.

How we build

Products

What we're building

Get in touch

Questions? Write to us.

About one of our products, the way we build, or anything else. A short form, and a person reads it.

Or email [email protected]