프로젝트 소개
PeerLink X는 분산형 네트워킹 코어를 중심으로 설계된 Flutter 기반의 크로스 플랫폼 메신저입니다. 이 애플리케이션은 오버레이 트래픽에 사용되는 피어 세션을 위한 WebRTC 직접 전송과 오디오/비디오 통화를 위한 TURN 라우팅 WebRTC 미디어를 결합하며, TURN 전용 정책을 준수합니다. 메시지 전송은 HTTP 기반의 릴레이 저장 및 전달(store-and-forward) 방식을 사용하며, 신원, 서명 및 세션을 위해 애플리케이션 수준의 암호화를 적용합니다.
사용자 인터페이스에는 연락처, 채팅, 통화 및 설정 섹션이 포함되어 있습니다. 메시지 수신 확인은 전달 상태를 나타냅니다. 체크 표시 하나는 저장 확인, 두 개는 수신자의 영구 저장, 세 개는 읽음 상태를 의미합니다(그룹 메시지의 경우 첫 번째 참여자의 작업 후 체크 표시가 나타납니다). 채팅 목록에는 수신 확인 표시와 시간 형식(오늘은 HH:MM, 올해는 DD:MM, 이전 연도는 DD:MM:YY)이 표시됩니다. 이모지만으로 구성된 메시지(1~3개)는 배경 없이 큰 형식으로 렌더링됩니다.
저장은 영구적으로 이루어집니다. 설정 및 신원은 보안 저장소(secure storage)에, 채팅 데이터베이스는 Drift/SQLite에, 미디어는 파일 시스템에 저장됩니다. 설정 메뉴를 통해 자체 호스팅 배포가 지원되며, 단계별 진행 상황, 엔드포인트 구성, 그리고 bootstrap, relay, TURN 서버에 대한 상태 확인(health checks) 기능을 제공합니다. 앱은 전송 및 통화 시그널링을 위해 WebSocket 기반의 bootstrap 시그널링을 사용하며, 여러 연결을 유지하고 프레젠스 스냅샷을 통해 온라인/오프라인 상태를 관리합니다.
개인정보 보호 기능에는 시스템 주소록이 아닌 앱 내부 연락처 기능이 포함되어 있어, iOS/macOS 빌드에서는 연락처 접근 권한을 요청하지 않습니다. 운영 관리 기능으로는 이용 약관/EULA 동의, 기본 연락처 전용 모드, 그리고 메시지 내용이 아닌 메타데이터만 전송하는 신고 기능이 포함됩니다. 경고 및 차단은 관리자가 설정하며 사용자의 로캘(locale)에 맞게 표시됩니다.
설정에서는 상태별로 정렬된 카드를 통해 서버 구성(bootstrap, relay, TURN)을 관리하고, 카테고리별 삭제가 가능한 저장 공간 분석 및 초대와 서버 구성을 위한 딥링크(peerlink:// 및 폴백 URL)를 제공합니다. 푸시 알림은 릴레이 폴링과 통합되어 있으며, 앱은 Ed25519 서명 및 안티 리플레이(anti-replay) 기능이 포함된 정의된 Push API 계약을 사용합니다. 그룹 기능에는 통합 전송, 미디어를 위한 blob 전송, 멤버십 변경 시 키 로테이션이 포함됩니다. 통화는 다양한 네트워크 유형에서 안정성을 확보하기 위해 TURN을 사용합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.