Skip to content
rdyjun edited this page Dec 6, 2024 · 51 revisions

image


link

 

🎵 inear 프로젝트 개요

iNear는 팬들끼리 좋아하는 아티스트의 신규 앨범을 함께 공감하는 서비스입니다

사용자는 앨범 발매 시간에 맞춰 열리는 세션에서 좋아하는 아티스트의 노래를 실시간으로 듣고,
같은 팬들과 함께 서로의 감상평을 실시간 채팅으로 함께 공유하며 즐거운 추억을 보낼 수 있습니다.

🔔 유저 페르소나

아무래도 많은 최초공개 스트리밍 플랫폼들은 사진 혹은 동영상과 같은 시각적인 미디어를 주 매개체로 사용을 하다보니
노래 위주의 앨범 단위로만 작업하는 아티스트, 그리고 그들의 팬들을 위한 소통의 창구가 부족하다고 생각을 하였습니다.

iNear는 기존의 소통의 창구가 적었던 장르의 아티스트를 팔로우하고 있던 팬들을 위한 소통의 장입니다.
같은 취향을 공유하는 사람들과 함께 좋아하는 아티스트의 앨범 발매 당일날을 더 풍성하게 만들어보세요.

🚀 핵심 기능

실시간 앨범 스트리밍

inear는 아티스트의 신규 앨범을 실시간으로 청취할 수 있습니다

  • 신규 앨범 발매 3일 전, 홈페이지에 세션 배너가 공개됩니다
  • 발매 시간이 되면 모든 참여자가 함께 신곡을 감상하는 라이브 세션이 시작됩니다
  • 세션에 참여한 팬들과 실시간으로 같은 곡을 들으며 소통할 수 있습니다

실시간 채팅방에서 소통

inear는 앨범 청취를 하면서 다른 사용자들과 소통할 수 있습니다

  • 같은 팬들끼리 서로 실시간 채팅으로 의견을 나눌 수 있습니다
  • 앨범 스트리밍을 하면서 가장 좋은 노래에 유저들이 실시간으로 투표를 진행할 수 있습니다

기술적 도전

FE


BE

💻 시스템 아키텍처

image

higher architecture

image

deploy architecture

%% graph TD
flowchart 
    %% Main Components
    GH[(GitHub)]
    GA[(GitHub Actions)]
    HUB[(Docker Hub)]
    NC[ncloud]
    NGINX[NGINX]
    
    %% Deployment Flow
    GH -->|PR & Push| GA
    GA --> CLIENT(client file build)
    GA -->|server Image Push| HUB
    GA -->|dist scp| NC
    GA -->|SSH| NC
    HUB -->|Image Pull| NC

    NC -->|run| CHECK{deploy.sh}
    NC -->|dist file update & change| DIST_BLUE[Dist-New]
    CHECK -->|if Green server already running| BLUE[New Server Compose]
    BLUE -->|build & health check| BLUE_SERVER[(New Server:3000)]
    
    NGINX -->|nginx root path update| DIST_BLUE
    NGINX -->|server port change| BLUE_SERVER
    CHECK -->|if sub server healthy, stop and remove existing server| GREEN_SERVER[(Already running Server:3000)]
    
    %% Nginx Reload
    CHECK -->|nginx reload| NGINX

    %% Styling
    classDef github fill:#000000,stroke:#000000,color:#FFFFFF
    classDef hub fill:#0DB7ED,stroke:#0DB7ED,color:#FFFFFF
    classDef nginx fill:#019639,stroke:#009639,color:#FFFFFF
    classDef server fill:#1F1F1F,stroke:#1F1F1F,color:#FFFFFF
    classDef NC fill:#31D494, stroke: #31D494, color: #FFFFFF


    class GH github
    class HUB hub
    class NGINX nginx
    class BLUE_SERVER,GREEN_SERVER server
    class NC NC
Loading

inear

기술 공유

🚀 ffmpeg는 stderr로 디버깅을 하는 이유
🚀 HLS 프로토콜에 관한 정리 및 FFmpeg 사용기
🚀 비트는 tsconfig.json이 세 개?
🚀 NestJS 기본 개념 - Modules
🚀 Socket.io 최(강)적화
🚀 도커와 nginx의 사용기
🚀 부하테스트를 해보자

개발 일지

🚀 FSD 사용기, 근데 이제 나만의 규칙을 곁들인
🚀 CICD 구조 수정
🚀 앨범 단위로 스트리밍 하기 (with HLS)
🚀 HLS로 음악 주고받기
🚀 vite + react + typescript 환경에서 path alias 설정
🚀 React Scan이 뭐죠?
🚀 로컬 환경 개발 모드 배포
🚀 앨범 전체를 스트리밍한다고? (with HLS)
🚀 코드의 안정성을 높이기 위해 테스트코드를 작성해보자

트러블 슈팅

🚀 새로고침 시 HLS ERROR
🚀 input 태그에 한글 입력 후, Enter를 누르면 함수가 두번 호출되는 오류
🚀 nginx proxy pass를 바꿨더니 생긴 에러 - 스웨거 인식 문제
🚀 배포 환경에서 클라이언트-서버 WS handshake
🚀 렌더링 범인은 하나!

협업 규칙

🌈 그라운드 룰
🥔 팀원 소개
🔎 코드 & 깃 컨벤션
🌳 깃 branch 전략
📌 노션 문서 저장소

프로젝트 기획

🎨 피그마
🧑‍💻 기획 공유 발표 자료
🎤 2주차 발표 자료
😎 백로그

데일리 스크럼

📝 1주차
📝 2주차
📝 3주차
📝 4주차
📝 5주차

주간 계획서

🗓️ 1주차
🗓️ 2주차
🗓️ 3주차
🗓️ 4주차
🗓️ 5주차

그룹 회고

✨ 1주차
✨ 2주차
✨ 3주차
✨ 4주차


view

Clone this wiki locally