Skip to content

DeclanJeon/Pons-Link

Repository files navigation

PonsLink

실시간 P2P 화상회의 및 파일 공유 플랫폼

License: MIT Node.js React TypeScript


🌟 개요

PonsLink는 WebRTC 기술을 기반으로 구축된 차세대 실시간 P2P(Peer-to-Peer) 화상회의 및 파일 공유 플랫폼입니다. "The World is Your Neighbor. Link Freely."라는 비전 아래, 중앙 서버의 개입 없이 사용자 간 직접 연결을 통해 최소한의 지연시간과 최대한의 보안성을 실현합니다.

핵심 가치

  • 🔒 보안 우선: 중앙 서버를 거치지 않는 P2P 연결로 데이터 보안 극대화
  • ⚡ 저지연: 직접 연결을 통한 실시간 통신
  • 🎯 단순함: 복잡한 설정 없이 즉시 사용 가능
  • 🌐 개방성: 오픈소스 기반의 투명한 개발

✨ 주요 기능

화상회의 기능

1:1 화상통화 WebRTC 기반 실시간 화상통화 ✅ 완료
화면 공유 화면 + 카메라 동시 공유 (PiP 지원) ✅ 완료
자동 자막 Web Speech API 기반 실시간 자막 생성 ✅ 완료
실시간 번역 MyMemory API 기반 자막 번역 (20개 언어) ✅ 완료
채팅 텍스트 채팅 및 이모지 지원 ✅ 완료
화이트보드 실시간 협업 드로잉 보드 ✅ 완료
디바이스 전환 마이크/카메라 실시간 변경 ✅ 완료
모바일 카메라 전환 전면/후면 카메라 전환 (모바일) ✅ 완료

파일 공유 기능

기능 설명 상태
대용량 파일 전송 IndexedDB 기반 청크 전송 ✅ 완료
전송 제어 일시정지/재개/취소 ✅ 완료
전송 모니터링 실시간 속도/진행률/ETA 표시 ✅ 완료
ACK 기반 신뢰성 청크별 확인응답 시스템 ✅ 완료
네트워크 적응 동적 윈도우 크기 조절 ✅ 완료

파일 스트리밍 기능

기능 설명 상태
비디오 스트리밍 Video.js 기반 실시간 재생 ✅ 완료
자막 동기화 VTT/SRT 자막 실시간 동기화 ✅ 완료
PDF 스트리밍 PDF.js 기반 문서 공유 ✅ 완료
이미지 스트리밍 고해상도 이미지 공유 ✅ 완료
iOS 최적화 MediaRecorder API 활용 ✅ 완료
미니 플레이어 드래그 가능한 플로팅 플레이어 ✅ 완료

💻 호환성

운영체제 지원

OS 지원 버전 상태 비고
Windows 10, 11 ✅ 완전 지원 모든 기능 동작
macOS 12+ (Monterey 이상) ✅ 완전 지원 Intel/Apple Silicon 모두 지원
Linux Ubuntu 20.04+, Debian 11+ ✅ 완전 지원 주요 배포판 테스트 완료
iOS 14.3+ ✅ 최적화 완료 MediaRecorder API 활용
Android 9+ ✅ 완전 지원 Chrome 기반 브라우저 권장

브라우저 지원

브라우저 데스크톱 모바일 WebRTC 파일공유 스트리밍
Chrome 90+ ✅ 90+ ✅
Edge 90+ ✅ 90+ ✅
Firefox 88+ ✅ 88+ ✅
Safari 14+ ✅ 14.3+ ✅ ⚠️ 제한적*
Opera 76+ ✅ -

*Safari 제한사항: iOS Safari는 MediaRecorder API 지원으로 최적화되었으나, 일부 코덱 제약이 있을 수 있습니다.

디바이스 지원

디바이스 타입 화상회의 파일공유 스트리밍 화면공유 카메라 전환
데스크톱
노트북
스마트폰 ⚠️ 제한적*
태블릿 ⚠️ 제한적*

*모바일 화면공유: iOS는 iOS 15+, Android는 Android 10+에서 지원됩니다.

네트워크 요구사항

기능 최소 대역폭 권장 대역폭 비고
음성 통화 50 Kbps 100 Kbps Opus 코덱
720p 비디오 1 Mbps 2 Mbps VP8/H.264
1080p 비디오 2 Mbps 4 Mbps VP9/H.264
화면 공유 1 Mbps 3 Mbps 해상도 의존
파일 전송 500 Kbps 제한 없음 속도에 따라 가변

🚀 빠른 시작

사전 요구사항

  • Node.js 18.0 이상
  • npm 또는 yarn
  • Git

설치 및 실행

# 저장소 클론
git clone https://github.com/yourusername/ponslink.git
cd ponslink

# 의존성 설치
npm install

# 환경 변수 설정
cp .env.example .env
# .env 파일을 편집하여 시그널링 서버 URL 설정

# 개발 서버 시작
npm run dev

📦 파일 공유 및 스트리밍

파일 공유 기능

지원 용량

  • 최대 파일 크기: 100GB (이론적 제한 없음)
  • 동시 전송: 제한 없음
  • 전송 속도: 네트워크 대역폭에 의존 (일반적으로 10-50 MB/s)

주요 특징

  1. 청크 기반 전송

    • 파일을 16-64KB 청크로 분할하여 전송
    • iOS 최적화: 16KB 청크 사용
    • 데스크톱: 64KB 청크 사용
  2. 신뢰성 보장

    • ACK(확인응답) 기반 전송
    • 타임아웃 재전송 (3-5회 재시도)
    • 네트워크 품질에 따른 동적 윈도우 크기 조절
  3. 전송 제어

    • 일시정지/재개 기능
    • 취소 및 재전송
    • 실시간 진행률 모니터링
  4. 성능 최적화

    • Web Worker를 통한 백그라운드 처리
    • IndexedDB를 활용한 청크 저장
    • 메모리 효율적인 스트리밍

파일 스트리밍 기능

지원 파일 형식

  • 비디오: MP4, WebM, OGG (H.264, VP8, VP9 코덱)
  • 문서: PDF

용량 제한

  • 비디오 스트리밍: 용량 제한 없음 (네트워크 대역폭에 의존)
  • PDF 스트리밍: 용량 제한 없음 (페이지별 렌더링)

주요 특징

  1. 비디오 스트리밍

    • Video.js 기반 플레이어
    • 자막 동기화 (VTT/SRT)
    • 재생 속도 조절 (0.5x - 2x)
    • 화질 선택 (480p, 720p, 1080p)
    • 풀스크린 지원
  2. 자막 기능

    • 실시간 동기화 (±10초 조절)
    • 다중 자막 트랙 지원
    • 스타일 커스터마이징
    • 자막 검색 기능
  3. PDF 스트리밍

    • PDF.js 기반 렌더링
    • 페이지별 동기화
    • 확대/축소/회전
    • 썸네일 네비게이션
  4. iOS 최적화

    • MediaRecorder API 활용
    • H.264 코덱 우선 사용
    • 저전력 모드 대응
    • 네트워크 적응형 스트리밍

실제 사용 시나리오

  1. 원격 교육

    • 강의 비디오 실시간 공유
    • PDF 교재 페이지 동기화
  2. 업무 협업

    • 프레젠테이션 공유
    • 문서 리뷰 및 주석
  3. 원격 지원

    • 기술 문서 공유
    • 화면 공유를 통한 실시간 가이드
    • 파일 전송 및 다운로드
  4. 보안 공유

    • 실제 자원을 공유하지 않으면서 화면만 공유

커뮤니티


📄 라이선스

이 프로젝트는 MIT 라이선스 하에 배포됩니다.


🤝 기여하기

PonsLink는 오픈소스 프로젝트이며, 여러분의 기여를 환영합니다!

기여 방법

  1. 이슈 제출: 버그 리포트나 기능 제안
  2. 코드 기여: Pull Request 제출
  3. 문서 개선: README, Wiki 업데이트
  4. 번역 지원: 다국어 지원 확대

🙏 감사의 말

PonsLink는 다음 오픈소스 프로젝트들의 도움을 받았습니다:

  • WebRTC: 실시간 통신 기술
  • Socket.IO: 시그널링 서버
  • Video.js: 비디오 플레이어
  • PDF.js: PDF 렌더링
  • Zustand: 상태 관리
  • React: UI 프레임워크

"The Bridge That Never Breaks."

Made with ❤️ by the PonsLink Team

WebsiteGitHubDiscord

About

The Bridge That Never Breaks | 전 세계를 잇는 다리 | 자유로운 P2P 통신

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages