PinglineTier 2
Pair AIRead the spec
Project · Clone of iMessage

Pingline

A 6-part build: a spec, 3 milestone guides, 1 AI checkpoint, and a defend-your-code rubric. You build it in Xcode on a Mac; each guide walks the exact Swift 6 patterns.

The spec

Project 6 — Pingline / iMessage lite: the specState exactly what Pingline is and where its boundaries are25 min

Milestones

3 steps · 270 min total
  1. 1Pingline M1 — models and the connection actor55 minModel messages and conversations as Sendable value types keyed for realtime · Build an actor that owns connect, disconnect, and an offline send buffer
  2. 2Pingline M2 — Realtime as an AsyncSequence60 minSubscribe to a Supabase Realtime channel for message inserts · Expose incoming messages as an AsyncStream consumed with for await
  3. 3Pingline M3 — optimistic send and reconciliation65 minShow a sent message instantly and reconcile it on ack or failure · Add scroll-to-bottom and a typing indicator to the thread

AI checkpoints

Review the diff, then grade your fix
AI checkpoint — review before you acceptPingline checkpoint — the reentrancy bug
actor Outbox {
    private var pending: [Message] = []
    private var nextSequence = 0
    private let sender: MessageSender

    init(sender: MessageSender) { self.sender = sender }

    func enqueue(_ message: Message) {
        pending.append(message)
    }

    // Flush the next queued message with the next sequence number.
12 more lines — download or open to review in full

Defend your code

RubricPingline — rubric and defend your codeSelf-assess Pingline against a concrete rubric