Inspiration

Luna the seal tries to guide every ship into the harbor at once. A lighthouse doesn't control the whole sea; it makes a safe passage visible. Most "say no" advice skips the situation: how urgent the request is, whether a boundary is safe to set here, and when you are actually free. EchoHarbor starts there.

What it does

The Boundary Message Workshop is described on screen as "A rehearsal before submission":

  • you name the request and state when you are actually available;
  • you choose how urgent it is, whether setting a limit feels safe in this context, and a warm or direct tone;
  • a template engine on the device then drafts a message for you to edit, for example: "Thank you for forwarding. My available time for Extra report by Friday is Thursday after 2 pm. Is this timeframe suitable for your work? If there is an emergency, we can clarify the priority together."

How it guides you:

  • When urgency or safety is unclear, it suggests clarifying scope and coordinating instead of a flat no.
  • Real emergencies and on-call duties get a different path.

What it never does:

  • The draft is marked "NOT SENT. LOCAL DRAFT ONLY."
  • Nothing is sent automatically, and the app does not connect to email, chat or an employer's system.
  • It asks you not to enter personal names, institutional secrets or access keys.

The course: twelve lessons. They cover what a request really asks, power and safety before boundaries, stating availability concretely, colliding priorities, a different route in a genuine emergency, choosing your tone, an end-of-workday signal, and keeping sensitive text private.

Also included: 19 languages. No account is needed.

EchoHarbor is general self-help education about workplace communication. It is not legal, HR or medical advice.

Free and Premium:

  • Free: the workshop and lessons 1–6, with ads.
  • EchoHarbor Premium: an auto-renewing subscription, monthly or annual. It unlocks lessons 7–12, the encrypted backup and the reminder/calendar export, and removes all ads.
  • Trial: both plans start with a 7-day free trial.

How we built it

  • App shell: an offline web app wrapped for Android with Capacitor.
  • Plugins: @revenuecat/purchases-capacitor, @capacitor-community/admob, @capacitor/local-notifications, @capacitor/filesystem, @capacitor/share, @capacitor/browser and @capacitor/app.
  • Drafting: the message comes from on-device templates. No AI model and no network call are involved in the draft.

RevenueCat

  • Entitlement: premium.
  • Offering: default (current), with the packages $rc_monthly and $rc_annual.
  • Store products: echoharbor_monthly:monthly and echoharbor_yearly:yearly. Both base plans carry the Play offer trial7 (7 days free, ACTIVE).
  • Paywall prices: the paywall shows the store's localized price strings.
  • Entitlement freshness: the entitlement is re-read fresh once per process.

AdMob (free tier only)

  • Banner: an adaptive banner on the Home and Lessons screens only. It never appears in the workshop.
  • Interstitial: only after a finished lesson, at most one in every three, and at least 3 minutes apart.
  • Consent: UMP consent comes first.
  • Premium: Premium removes all ads.

Build

  • Builds run in GitHub Actions.
  • The demo build was installed from Google Play (versionCode 1). Its web payload is identical, file for file (75 files), to the CI build of the uploaded bundle.

Challenges we ran into

  • Not teaching "just say no". A flat refusal can be unsafe, or simply wrong in an emergency. The workshop asks about urgency and safety before it drafts anything, and changes route when a request is a real emergency.
  • One strict check rejected all 19 languages. A shared validator required exactly three choices per lesson. When that no longer held, every language pack was rejected. Now a build-time gate runs the shipped validator on every packaged language and fails closed.
  • Billing needs the store build. A side-loaded copy of the same code got "billing unavailable" from Google Play. The Play-installed build loads both plans and the trial.

Accomplishments that we're proud of

  • A boundary tool that keeps drafting and sending apart by design.
  • A real 7-day trial on both plans, wired through one RevenueCat entitlement.

What's next for EchoHarbor

Ideas from the product notes, not promises: more request types, and reviewing the templates per workplace culture.

Judges' access

  • Trial: open Settings (top-right icon), scroll to Premium and choose either plan. Google Play shows a 7-day free trial, and cancelling before it ends means no charge.
  • Without the trial: the workshop and lessons 1–6 are free.
  • Recorded on a Turkish-locale phone: the Google Play sheet line "7 günlük ücretsiz deneme" means "7-day free trial", prices appear in TRY, and "Dosya Seç" means "Choose file". The app UI itself is in English.

Built With

Share this project:

Updates

Submission history