메인 콘텐츠로 건너뛰기

작동 방식

실시간 동기화가 있는 앱은 기기에 로컬 데이터베이스를 유지합니다. 읽기는 즉시(로컬), 쓰기는 로컬에서 대기열에 들어가고, 모든 것이 백그라운드에서 서버로 동기화됩니다.
User writes -> Local database -> Upload queue -> Server -> Postgres
                                                            |
User reads  <- Local database <- Sync replication <---------+
결과: 즉시 읽기, 로딩 스피너 없음, 나쁜 연결이나 오프라인에서도 작동하는 앱.

AI가 설정하는 것

AI에게 실시간 앱을 만들도록 요청하세요. 적합한 활성 데이터베이스가 있으면 재사용하고, 없으면 데이터베이스를 생성하고 동기화 서비스를 켜고 두 부분으로 된 앱을 만듭니다:
  • UI - 로컬 데이터베이스, 라이브 쿼리, 동기화 커넥터가 있는 클라이언트 앱
  • Process - 토큰 엔드포인트, 동기화 업로드 경로, 마이그레이션 러너
자격증명은 vault에 저장됩니다. AI는 db 도구로 데이터베이스 환경 변수를 프로세스 컴포넌트에 연결합니다. 앱이 준비된 것으로 간주되기 전에 데이터베이스는 sync: ready를 표시해야 합니다. 동기화가 준비되지 않으면 앱이 렌더링될 수 있지만 기기 간 실시간 데이터는 작동하지 않습니다.

기본 규칙

  • 먼저 로컬에 쓰세요. 백그라운드에서 동기화 업로드를 하도록 하세요.
  • 로컬 데이터가 있으면 로딩 스피너가 아닌 빈 상태를 표시하세요.
  • 사용자가 볼 수 있는 상태를 동기화된 테이블에 유지하여 새로고침과 오프라인 사용에서 유지되도록 하세요.
  • 관련된 로컬 쓰기를 함께 그룹화하여 UI가 한 단계로 업데이트되도록 하세요.
  • 실시간 앱을 완료된 것으로 간주하기 전에 동기화 상태를 확인하세요.

오프라인 앱 셸

UI 템플릿은 첫 방문 후 네트워크 없이 앱을 다시 열 수 있도록 오프라인 앱 셸을 포함할 수 있습니다. 앱 셸은 정적 HTML, JS, CSS, 아이콘입니다.
  • 오프라인 셸은 네트워크 없이 앱을 열 수 있게 합니다
  • 동기화는 오프라인 상태에서 앱 데이터를 사용 가능하게 유지합니다
함께: 앱이 네트워크 없이 열리고, 최신 동기화된 데이터를 표시하고, 새 쓰기를 대기열에 넣고, 연결이 돌아오면 동기화합니다.

실시간 동기화를 사용할 때

적합함과도함
작업 관리자 및 노트 앱정적 마케팅 페이지
협업 도구일회성 양식 제출
약한 연결성이 있는 필드 앱읽기 전용 브로셔 사이트
즉시 느껴져야 하는 모든 것오프라인 가치가 없는 앱

플랫폼 변수

Kazzle은 모든 앱 프로세스에 자동으로 작은 환경 변수 집합을 주입합니다. 이는 자신의 vault 시크릿과 별개입니다.
변수설명
PORT프로세스가 수신해야 하는 포트
HOST바인드할 호스트명(일반적으로 0.0.0.0)
KAZZLE_API_URLKazzle 런타임 헬퍼가 사용하는 기본 URL
KAZZLE_APP_COMPONENT_<NAME>_URL형제 컴포넌트의 런타임 URL

형제 URL

앱에 여러 컴포넌트(예: web UI 및 server 프로세스)가 있을 때, Kazzle은 형제 컴포넌트의 URL을 주입할 수 있습니다:
# "web" 부분에서:
KAZZLE_APP_COMPONENT_SERVER_URL=http://localhost:3001

# "server" 부분에서:
KAZZLE_APP_COMPONENT_WEB_URL=http://localhost:3000
형제가 이미 배포되었으면 주입된 값은 배포된 컴포넌트를 가리킵니다. 그렇지 않으면 해당 형제의 현재 개발 주소를 가리킵니다.