Professional Systems
Active development

CASES

A native professional workspace that keeps participants, messages, formal notes, attachments, invitations, and lifecycle status inside one shared case record.

Category
Professional Systems
Platform
iPhone + iPad · iOS 17+
Status
Active development

What if professional communication inherited the structure of the case itself?

A local case history and narrow coordination service organize current membership, delivery, presence, catch-up, and revocation without treating a generic chat channel as the durable unit of work.

User value

Keep every handoff inside the case.

Give professionals one place to see who is involved, what happened, what was documented, and whether the work remains open.

01

Recover context quickly

Open a case to see its participants, chronological record, latest activity, unread state, and current status together.

02

Use the right form for the update

Add a quick message, a structured note, a system event, or an attachment representation without splitting the record across tools.

03

Make the lifecycle visible

Invite participants, mark work resolved, and reopen it when circumstances change while preserving the case history.

CASES iPhone dashboard showing four fictional clinical case cards with open status, participant context, recent activity, and unread counts.View full size
Current case inboxRelease-build simulator capture using repository-seeded fictional clinical scenarios.

Features

A case inbox and a chronological working room.

The current prototype connects local case records, participant state, mixed timeline events, invitations, lifecycle controls, and typed synchronization foundations.

  1. 01

    Case inbox

    Order active work by recent activity and show title, collaborators, status, preview, time, and unread count in each row.

  2. 02

    Participant-aware case rooms

    Keep the title, participant group, status, and case actions visible above the chronological record.

  3. 03

    Mixed timeline records

    Combine informal text, formal notes, system events, image representations, document representations, and date separators.

  4. 04

    Creation and invitations

    Create a case, choose from a seeded professional directory, generate a link invite, or join through a recognized link or token.

  5. 05

    Resolution and reopening

    Move the case between open and resolved states without discarding the participants or chronological history.

  6. 06

    Delivery and catch-up foundations

    Represent changes as typed envelopes with stable identifiers, checkpoints, retries, deduplication, conflict handling, and accepted or delivered states.

How it works

Open the case. Understand the record. Add the next event.

The interface moves from an activity-oriented inbox into one bounded professional context.

  1. 01

    Scan active cases

    See recent work, participant context, unread counts, and open or resolved state from the dashboard.

  2. 02

    Open the shared room

    Enter one case to see its participants, status controls, messages, notes, files, and system events in time order.

  3. 03

    Review the handoff

    Read the latest formal and informal contributions before adding a response or decision.

  4. 04

    Contribute in context

    Send a message or create and edit a formal note that remains attached to the case.

  5. 05

    Invite another professional

    Select a local directory entry and create a case-specific link or token for the intended participant.

  6. 06

    Resolve or reopen

    Record when the work is complete and return the case to active status if it needs attention again.

Product concept

The case is the unit, not the channel.

Communication becomes more useful when membership, evidence, structured notes, decisions, and lifecycle state belong to the work itself.

01

Context survives participation gaps

A professional can enter later and understand the people, chronology, documents, decisions, and current status without reconstructing separate conversations.

02

Informal and formal records coexist

Fast messages and deliberate notes remain distinct event types while contributing to the same shared case history.

03

Coordination need not own the history

The architectural direction keeps durable records with participating clients while assigning current membership and delivery coordination to a narrower service.

Architecture

Client-owned history with a coordination backend.

The SwiftUI client owns the case model, local record, attachments, and event application. The Node.js service owns current sessions, membership policy, revocation, presence, rendezvous, relay queues, and wake hints.

  1. 01Apply the action to the local case
  2. 02Persist the JSON snapshot
  3. 03Create a typed sync envelope
  4. 04Relay one item per recipient
  5. 05Validate and apply in sequence
  6. 06Advance the per-case checkpoint

Local records remain primary

Case and profile snapshots live in local JSON files, while attachment representations use the device filesystem.

Current authorization is checked

Device sessions, membership, revocation, expiry, queue limits, and protected actions use current backend state rather than trusting a token alone.

Delivery is deterministic

Stable event identifiers, per-target sequence numbers, checkpoints, deduplication, and conflict rules make retries idempotent.

Encryption is not complete

The active client Base64-encodes relay envelopes instead of cryptographically encrypting them, so the page does not claim end-to-end encryption or sensitive-data readiness.

Technology

A native client with a narrow coordination service.

Application

  • Swift
  • SwiftUI
  • Foundation
  • URLSession
  • iOS and iPadOS 17+

Local data

  • JSON case snapshots
  • JSON professional profile
  • Local attachment files
  • Deterministic conflict handling

Coordination

  • JavaScript
  • Node.js 20+
  • Built-in modules
  • Custom HTTP router
  • Transient relay queues

Validation

  • XCTest
  • Node test runner
  • Release simulator build
  • Manual two-device harness

Current boundary

  • No third-party runtime dependencies
  • No AI
  • No completed end-to-end encryption
  • No production clinical claim

Development

The collaboration prototype works. Security and field validation are unfinished.

The native client, local persistence, case workflows, sync models, backend messaging path, and coordination service are substantially implemented and tested. Real-device messaging, cryptographic protection, production identity and storage, real attachments, directory, fax, search, push, accessibility, and regulatory review remain incomplete.

Stage
Active development
iOS validation
194 tests passed
Backend validation
90 tests passed
Real-device messaging
Pending

Implemented

  • SwiftUI dashboard, local profile, case creation, invitations, link and token joining, case room, timeline, composer, resolution, and reopening
  • Case, participant, membership, invitation, message, attachment, status, and resolution domain models
  • File-backed local JSON persistence for cases and profiles plus local attachment storage
  • Typed sync envelopes, mapping, stable identifiers, checkpoints, deduplication, conflict handling, reconnect behavior, and delivery states
  • Node.js coordination service for sessions, links, membership policy, revocation, presence, rendezvous, relays, wake hints, rate limits, health, metrics, and file-backed local operation
  • Automated Swift and JavaScript suites plus a manual two-device messaging validation guide

Before sensitive or field use

Complete two-device validation with fictional data, implement and review the cryptographic and key-management boundary, replace or gate mock attachments, directory, fax, search, and push behavior, select production identity and persistence services, validate recovery and retention, conduct accessibility testing, and document the intended audience and regulatory scope.