Service2025.03.01
GitHub - MarconLP/snapify: Screen recording sharing for absolutely everyone.
요약
️ Snapify는 Loom의 self-hostable 대안으로, 사용자가 탭, 데스크톱, 애플리케이션 화면을 무제한으로 녹화하고 공개 링크를 통해 쉽게 공유할 수 있는 도구입니다.
️ 개발 및 배포를 위해
npm 패키지 설치, NEXTAUTH_SECRET, GitHub OAuth, MySQL 데이터베이스(Prisma), 그리고 AWS S3 또는 Backblaze B2와 같은 클라우드 스토리지 설정이 필수적입니다.이 프로젝트는 AGPL-3.0 라이선스 하에 배포되며,
npm run dev를 통한 개발 모드 실행 및 Vercel을 이용한 배포 방법을 안내합니다.상세 내용
Snapify는 Loom의 자체 호스팅 가능한 대안으로, 사용자가 화면 녹화를 비동기적으로 기록하고 공유할 수 있도록 설계된 오픈 소스 웹 애플리케이션입니다. Repository Clone:
패키지 설치: Node.js 기반 프로젝트로,
환경 변수 설정:
*
*
*
* 데이터베이스 설정: ORM(Object-Relational Mapping) 도구인 Prisma를 사용하여 데이터베이스 스키마를 동기화하고 마이그레이션합니다.
핵심 기능은 다음과 같습니다:
* 탭, 데스크톱 및 모든 애플리케이션의 무제한 녹화.
* 공개 링크를 사용하여 녹화를 공유하는 기능.
* 지정된 시간 이후 녹화를 삭제하거나 목록에서 제외하는 기능.
* 기존 비디오를 업로드하고 공유하는 기능.
이 애플리케이션의 핵심 방법론 및 기술 스택은 다음과 같습니다:
개발 환경 설정:
git clone 명령어를 사용하여 GitHub 저장소를 복제합니다.npm i 명령어를 통해 필요한 모든 의존성 패키지를 설치합니다..env.example 파일을 복사하여 .env 파일을 생성하고, 애플리케이션 작동에 필요한 다양한 환경 변수를 설정합니다. 주요 변수들은 다음과 같습니다:NEXTAUTH_SECRET: NextAuth.js의 세션 암호화에 사용되는 보안 키로, openssl rand -base64 32 명령어를 통해 생성됩니다.*
DATABASE_URL: 데이터베이스 연결 문자열로, MySQL 데이터베이스를 사용합니다. Railway와 같은 클라우드 서비스에서 프로비저닝된 MySQL 인스턴스의 연결 정보가 여기에 포함됩니다.*
GITHUB_ID, GITHUB_SECRET: GitHub OAuth Apps를 통한 사용자 인증을 위한 Client ID와 Client secret입니다. Authorization callback URL은 로 설정됩니다.*
AWS_ENDPOINT, AWS_BUCKET_NAME, AWS_REGION, AWS_KEY_ID, AWS_SECRET_ACCESS_KEY: 비디오 파일 저장을 위한 AWS S3 호환 스토리지(예: B2 Cloud Storage)의 자격 증명 및 설정입니다. 버킷은 파일의 공개 접근을 막기 위해 private으로 설정됩니다.
npx prisma db push 명령어를 통해 Prisma 스키마에 따라 데이터베이스 구조를 설정합니다.기술 스택 및 아키텍처:
* 프레임워크: Next.js (MJS 모듈 사용)를 기반으로 구축되었습니다.
* 인증: NextAuth.js를 사용하여 사용자 인증 및 세션 관리를 처리하며, GitHub OAuth를 통한 로그인을 지원합니다.
* 데이터베이스: MySQL을 주 데이터베이스로 사용하며, Prisma를 통해 데이터베이스와의 상호작용을 추상화합니다.
* 저장소: 비디오 파일은 AWS S3 호환 API를 사용하는 클라우드 스토리지(예: B2 Cloud Storage)에 저장됩니다. 이는 대용량 파일의 효율적인 저장 및 검색을 가능하게 합니다.
* 테스팅: End-to-End (E2E) 테스트는 Playwright를 사용하여 자동화되며, npm run test:e2e 명령어를 통해 실행됩니다. NEXTAUTH_URL 환경 변수는 테스트 환경에 맞게 설정되어야 합니다.
* 배포: Vercel을 통한 배포를 지원합니다.
라이선스:
이 프로젝트는 AGPL-3.0 라이선스에 따라 배포됩니다. 이는 소스 코드가 공개되어야 하며, 파생 작업 또한 AGPL-3.0 라이선스를 따라야 함을 의미합니다.
GitHub
Shared by Anonymous