{"id":22567776,"url":"https://github.com/jinjoo-lab/framecheckmate","last_synced_at":"2025-04-10T12:22:43.155Z","repository":{"id":264557550,"uuid":"891229926","full_name":"jinjoo-lab/FrameCheckMate","owner":"jinjoo-lab","description":"[삼성 청년 SW 아카데미 자율 프로젝트] 엔터테이먼트 산업을 위한 B2B 영상 편집 협업 툴","archived":false,"fork":false,"pushed_at":"2024-12-07T11:55:55.000Z","size":120816,"stargazers_count":1,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2025-03-24T11:11:19.495Z","etag":null,"topics":["aws","cloud","mongodb","mysql","spring"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jinjoo-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-20T00:45:05.000Z","updated_at":"2024-12-07T11:55:58.000Z","dependencies_parsed_at":"2024-11-25T03:27:55.087Z","dependency_job_id":null,"html_url":"https://github.com/jinjoo-lab/FrameCheckMate","commit_stats":null,"previous_names":["jinjoo-lab/framecheckmate"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinjoo-lab%2FFrameCheckMate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinjoo-lab%2FFrameCheckMate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinjoo-lab%2FFrameCheckMate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinjoo-lab%2FFrameCheckMate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jinjoo-lab","download_url":"https://codeload.github.com/jinjoo-lab/FrameCheckMate/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248217112,"owners_count":21066633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","cloud","mongodb","mysql","spring"],"created_at":"2024-12-08T00:09:08.981Z","updated_at":"2025-04-10T12:22:43.127Z","avatar_url":"https://github.com/jinjoo-lab.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![image](https://github.com/user-attachments/assets/b3a2040e-86bd-4a6c-abe7-26c35c069961)\n\u003cbr\u003e\n# 엔터테인먼트 산업을 위한 B2B 영상 편집 협업 툴\n\n- 영상 내 특정 객체가 나오는 타임스탬프를 제공하여 영상 검토 시간 최소화\n- 효율적인 영상 편집 환경과 체계적인 업무 분배 관리 제공\n\n**쉽고 빠른 협업으로 영상 제작 워크플로우를 최적화하세요. :clapper::sparkles:**\n\n\u003cbr\u003e\n\n## 기능 소개\n\n### 🔎 방송 심의 객체 탐지\n\n- 사용자가 업로드 한 영상에서 AI를 활용하여 술, 담배, 칼이 포함된 화면 탐지\n- 감지된 화면을 (start sec ~ end sec)로 표시\n\n### 📽️ 영상 분할 및 병합\n\n- 탐지된 객체 정보를 기반으로 프레임 단위로 영상 분할\n- 각 카드별로 수정된 영상을 최종적으로 하나의 파일로 병합\n\n### ✏️ 칸반보드 기반 카드 상태 관리\n\n- 각 카드 별 작업자 할당 및 영상 업로드/다운로드\n- 커멘트 및 컨펌 저장\n- 작업 로그 데이터 조회\n\n### 💌 작업 상태 변경 시 알림 \u0026 Slack 전송\n\n- 카드 상태 변경 시 (작업 할당, 컨펌 요청, 컨펌 반려, 최종 승인) 상태에 따른 이메일 전송\n- 메일 전송 실패 시 개발자 관리 Slack에서 메일 메시지 분석\n\n\u003cbr\u003e\n\n## 시스템 아키텍처\n![Architecture](https://github.com/user-attachments/assets/ea1aed79-b8f3-40d8-b899-c560d5689ff7)\n\n\u003cbr\u003e\n\n## DB ERD\n\u003cimg src = \"https://github.com/user-attachments/assets/1101a234-bf12-48b2-99aa-67b7bfa2b449\" width =\"900\" height = \"400\"\u003e\n\n\u003cbr\u003e\n\n## 서비스 소개 영상\n[![FrameCheckMate](https://img.youtube.com/vi/-1keWKxLl7A/0.jpg)](https://www.youtube.com/watch?v=-1keWKxLl7A)\n\n\u003cbr\u003e\n\n## 동작 화면\n![image](https://github.com/user-attachments/assets/84a91ec2-92ba-4d70-959e-c65740600be0)\n![image](https://github.com/user-attachments/assets/053e5375-75bf-4a58-912b-831bbc53017a)\n![image](https://github.com/user-attachments/assets/7c1dab78-2f49-418e-885a-67e8f1ff1a63)\n\n\u003cbr\u003e\n\n## 사용 기술\n|Frontend|Backend|Infra/DevOps|\n|:---:|:---:|:---:|\n|\u003cimg src=\"https://img.shields.io/badge/react-F05138?style=for-the-badge\u0026logo=React\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/typescript-F1007E?style=for-the-badge\u0026logo=typescript\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/nextjs-F1007E?style=for-the-badge\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/reactquery-2396F3?style=for-the-badge\u0026logo=reactquery\u0026logoColor=white\"\u003e|\u003cimg src=\"https://img.shields.io/badge/java-007396?style=for-the-badge\u0026logo=OpenJDK\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/kotlin-007396?style=for-the-badge\u0026logo=Kotlin\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/springboot-6DB33F?style=for-the-badge\u0026logo=springboot\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/springcloud-6DB33F?style=for-the-badge\u0026logo=springcloud\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/hibernate-59666C?style=for-the-badge\u0026logo=hibernate\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/MySQL-4479A1?style=for-the-badge\u0026logo=MySQL\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/MongoDB-4479A1?style=for-the-badge\u0026logo=MongoDB\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/Kafka-4479A1?style=for-the-badge\u0026logo=Kafka\u0026logoColor=white\"\u003e|\u003cimg src=\"https://img.shields.io/badge/amazonrds-569A31?style=for-the-badge\u0026logo=amazonrds\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/amazonec2-FF9900?style=for-the-badge\u0026logo=amazonec2\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/amazons3-FF9900?style=for-the-badge\u0026logo=amazones3\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/docker-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/slack-2496ED?style=for-the-badge\u0026logo=slack\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/nginx-2496ED?style=for-the-badge\u0026logo=nginx\u0026logoColor=white\"\u003e\u003cbr\u003e\u003cimg src=\"https://img.shields.io/badge/jenkins-2496ED?style=for-the-badge\u0026logo=jenkins\u0026logoColor=white\"\u003e|\n\n\u003cbr\u003e\n\n## 구현적 특징\n\n### Backend\n1. FFmpeg를 활용해 프레임 단위 분할과 병합, H.264 재인코딩으로 영상 처리 시스템 구축\n2. 로직 서버와 알림 서버간 통신을 RabbitMQ를 통해 구현 (서버간 결합도를 낮춤)\n3. 이메일 전송 실패 시 DLQ 전략 수립 (개발자 확인을 위한 SLACK 전송 구현)\n4. Amazon S3를 활용해 영상 데이터의 업로드와 다운로드를 효율적으로 관리\n\n### Frontend\n1. 리액트 플레이어를 이용한 원활한 영상 재생 환경을 제공 및 콘텐츠의 효율적인 구성\n2. 컴포넌트 분리 및 재사용을 통한 코드의 일관성을 유지 및 프로젝트 확장성과 관리성 향상\n3. 스타일드 컴포넌트를 사용하여 각 컴포넌트 스타일의 모듈화, 디자인 효율성 증가\n\n\u003cbr\u003e\n\n## 멤버 소개\n|진주원(팀장)|김수빈|주연수|김영표|김태경|이재희|\n|:----:|:----:|:----:|:----:|:----:|:----:|\n|Backend/Infra|Backend/Infra|Backend|Backend/Infra|FrontEnd/AI|FrontEnd|\n|[@jinjoo-lab](https://github.com/jinjoo-lab)|[@ksb3458](https://github.com/ksb3458)|[@jooys130](https://github.com/jooys130)|[@menstoo121](https://github.com/menstoo121)|[@blackburi](https://github.com/blackburi)|[@hee0109](https://github.com/hee0109)|\n | \u003cimg src = \"https://avatars.githubusercontent.com/u/84346055?v=4\" width =\"120\" height = \"150\"\u003e | \u003cimg src = \"https://github.com/shin5774/SSAFY_CS_Study/blob/main/image/SIUU.jpeg?raw=true\" width =\"120\" height = \"150\"\u003e| \u003cimg src = \"https://github.com/user-attachments/assets/cd5aa20d-66c3-4fdf-9b88-7127864c4f4d\" width =\"120\" height = \"150\"\u003e| \u003cimg src = \"https://github.com/user-attachments/assets/1b495940-e134-4079-8777-d5a3c2df9ae1\" width =\"120\" height = \"150\"\u003e| \u003cimg src = \"https://avatars.githubusercontent.com/u/156290298?v=4\" width =\"120\" height = \"150\"\u003e| \u003cimg src = \"https://github.com/user-attachments/assets/e27ce71f-e517-446f-aa5d-31542268754c\" width =\"120\" height = \"150\"\u003e|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjinjoo-lab%2Fframecheckmate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjinjoo-lab%2Fframecheckmate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjinjoo-lab%2Fframecheckmate/lists"}