Designs by DuhartAll work
Rank
20 of 28
Tier
Tier C 57 of 120

25 — OpenHouse Global: Real-Estate Service

Additional project 1 of 4 · app/OpenHouseGlobal, IOS/TheOne/OpenHouse Stack: TypeScript/Node service, Cassandra (CQL migrations), systemd, iOS SwiftUI client Scope: 367 files · 29,453 lines · 7 versioned CQL migrations

Where this sits. The clearest example in the tree of schema-versioned data modeling — seven numbered CQL migrations that read as a product evolving under a discipline, which is exactly what a bank wants to see.


Structure

app/OpenHouseGlobal/src/
  routes/      HTTP surface
  service/     business logic
  engines/     domain engines
  journey/     the buyer journey state machine
  adapters/    external integrations
  infra/       infrastructure wiring
  middleware/  cross-cutting
  Network/     clients
  types/
migrations/
  0001_offers_and_saved.cql
  0002_journey_foundation.cql
  0003_analyses.cql
  0004_market.cql
  0005_feed_reviews.cql
  0006_tier1_listings.cql
  0007_openhouse_my_properties.cql

Deployed as openhouse-global.service (systemd), with certs/, a mail-outbox/, and a sync.sh.

The migration sequence tells the story

Read the filenames in order and you can reconstruct the product's history: offers and saved items first, then the journey foundation (a buyer's progression through a purchase is a state machine, and it got its own migration), then analyses, market data, a review feed, tier-1 listings, and finally per-user property ownership.

Numbered, additive, forward-only CQL migrations against Cassandra is the correct pattern, and it is the answer to "how do you evolve a schema on a datastore with no ALTER TABLE semantics worth relying on": you add tables and columns, you never rename what holds data, and you version the sequence.

That rule — nothing holding data gets renamed — is stated explicitly elsewhere in this repository as the P0 rule and is applied here.

The journey engine

journey/ models a buyer's path as explicit state rather than as a set of booleans on a user row. That distinction matters: a state machine can be audited, replayed, and reasoned about at a step boundary; a bag of flags cannot. For a mortgage-adjacent or transaction-adjacent product, that is the difference between a system you can prove correct and one you cannot.

The iOS client

IOS/TheOne/OpenHouse — 57 files, 9,294 lines: Container / Models / Network / Service / Views, following the same layering as every other mode in the app.

Interview surface this opens