로컬 우선 앱은 사용자 데이터를 기기에 두고 네트워크 없이도 읽기와 편집을 이어갑니다. 연결이 돌아오면 변경 이력을 교환해 다른 기기와 맞춥니다.
데모는 두 기기가 오프라인에서 다른 줄을 작성하고 연결 후 양쪽에 모두 반영되는 흐름입니다. 동시 수정 충돌 정책과 기기 저장소 보안을 함께 설계해야 합니다.
언제 쓰나
불안정한 네트워크에서도 편집을 멈출 수 없는 협업·현장 앱에 적합합니다.
각 기기에서 먼저 편집하고 연결되면 변경 사항을 교환합니다.
<div class="scene"><div class="title">EDIT OFFLINE → SYNC</div><div class="devices"><div class="tile">DEVICE A<div id="docA" class="doc">title</div></div><div class="connection" id="connection">OFFLINE</div><div class="tile">DEVICE B<div id="docB" class="doc">title</div></div></div><div id="syncState" class="muted">Both devices can edit locally</div></div>.scene{width:min(94vw,760px);height:min(86vh,320px);padding:clamp(10px,2.5vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--fg);font:500 clamp(11px,1.3vw,16px)/1.25 "Pretendard Variable",Pretendard,-apple-system,sans-serif;display:flex;flex-direction:column;gap:clamp(7px,1.6vmin,12px);overflow:hidden}.scene *{box-sizing:border-box}.title{font-weight:750;color:var(--accent)}.muted{color:var(--muted)}.mono{font-family:ui-monospace,monospace}.row{display:flex;align-items:center;justify-content:center;gap:clamp(5px,1.4vmin,12px);flex:1;min-height:0}.tile{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(6px,1.6vmin,12px);text-align:center;min-width:0}.on{border-color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 12%,var(--surface))!important}.pulse{animation:pulse 1.6s infinite alternate}@keyframes pulse{to{border-color:var(--accent);transform:translateY(-3px)}}.devices{display:flex;align-items:center;gap:6px;flex:1}.devices>.tile{flex:1;text-align:left;height:78%}.doc{margin-top:6px;padding:5px;border-left:3px solid var(--accent);color:var(--accent)}.connection{border:1px dashed var(--accent-3);padding:7px 3px;border-radius:6px;color:var(--accent-3);text-align:center;min-width:25%}.connection.on{color:var(--accent)}let phase=0;function tick(){const p=phase%3;document.getElementById('docA').innerHTML=['title','title<br>A: sketch','title<br>A: sketch<br>B: note'][p];document.getElementById('docB').innerHTML=['title','title<br>B: note','title<br>A: sketch<br>B: note'][p];document.getElementById('connection').textContent=p===2?'CONNECTED':'OFFLINE';document.getElementById('connection').classList.toggle('on',p===2);document.getElementById('syncState').textContent=['Local copies begin equal','Each device edits without network','Changes exchanged; copies converge'][p];phase++}tick();setInterval(tick,1150)로컬 우선 앱은 사용자 데이터를 기기에 두고 네트워크 없이도 읽기와 편집을 이어갑니다. 연결이 돌아오면 변경 이력을 교환해 다른 기기와 맞춥니다.
데모는 두 기기가 오프라인에서 다른 줄을 작성하고 연결 후 양쪽에 모두 반영되는 흐름입니다. 동시 수정 충돌 정책과 기기 저장소 보안을 함께 설계해야 합니다.
불안정한 네트워크에서도 편집을 멈출 수 없는 협업·현장 앱에 적합합니다.