React 팀과제 아웃소싱 프로젝트 기획
TIL 23. 12. 05
내배캠 React 3기 A-2조 아웃소싱 프로젝트
📢 프로젝트 개요
23. 12. 05 - 23. 12. 11
- 프로젝트명: MotiTube (Motivation + YouTube)
- 주제: 동기부여 동영상을 추천하는 커뮤니티
- 내용: 사용자들이 동영상에 대한 댓글을 남기고, 좋아요를 표시할 수 있으며, 자신이 좋아하는 동영상을 직접 업로드하여 추천도 할 수 있는 커뮤니티 공간
👥 팀 소개
- 팀명: 우공2산(愚公2山)
- 팀원: 안준표, 강호수, 손창성, 윤유빈, 이아름
💡 구현 기능
필수요구사항
- 회원가입/로그인
- 사용자가 이메일과 비밀번호를 입력할 수 있는 텍스트 필드와 전송 버튼
- 소셜 로그인
- 마이 페이지
- 프로필 사진과 사용자 정보 표시
- 프로필 사진 등록, 변경, 닉네임, 소개글 수정
- 작성한 게시글 목록, 좋아요한 게시글 목록
- 메인 페이지
- 네비게이션 헤더 (로고, 로그인/로그아웃, 유저 아이콘, 페이지 이동 네비게이션)
- 조회수 높은 영상 목록순으로 배치
- 카드에는 동영상 제목, 업로드한 사용자 이름, 조회수, 썸네일, 좋아요 수 등의 정보 표시
- 카드를 클릭하면 해당 동영상의 상세 페이지로 이동
- 상세 페이지
- 동영상 플레이어와 게시글 제목, 내용, 게시 시간, 간략한 작성자 정보
- 좋아요
- 댓글 작성 및 댓글 목록
- 게시글 작성 페이지
- 게시글 제목, 내용, 동영상 링크 입력폼
- 검색
- 게시글, 사용자로 검색하여 결과 표시
선택요구사항
- 메인 페이지
- 조회수, 최신순, 인기순, 날짜순 등 정렬
- 상세 페이지
- SNS 공유
- 게시글 작성 페이지
- 동영상 미리보기
- 비디오 플레이리스트
- 사용자가 동영상을 플레이리스트에 추가하고 플레이리스트 관리
- 다크모드/라이트모드
📝 역할 분담
안준표 | 강호수 | 손창성 | 윤유빈 | 이아름 |
---|---|---|---|---|
메인 페이지 | 마이 페이지 | 상세 페이지 | 게시글 작성 | 회원가입, 로그인 |
🚩 개발 내용
💻 개발 환경
- IDE: Visual Studio Code
- OS: windows, Mac
- Package Manager: Yarn Classic (v1.22.19)
- React boilerplate: create-react-app
📌 사용 기술
- React - 사용자와 상호작용할 수 있는 UI를 효율적으로 구현
- Redux Toolkit - 전역 상태 관리 도구
- React-router-dom - 클라이언트 사이드 라우팅. URL에 맞는 컴포넌트 렌더링
- Styled-components - 자바스크립트로 스타일 관리. 재사용이 쉬운 컴포넌트를 만들고 동적 스타일링 용이
- Firebase - 사용자 인증과 데이터베이스 등의 서버 기능 제공
- React Query - 비동기 관련 로직과 상태를 관리
🗼 초기 화면 설계
글쓰기 페이지 | 메인 페이지 | 상세페이지 |
---|---|---|
로그인 | 회원가입 |
---|---|
📂 디렉토리 구조
📦 project
┣ 📂public
┣ 📂src
┃ ┣ 📂api
┃ ┣ 📂assets
┃ ┣ 📂constants
┃ ┣ 📂components
┃ ┃ ┣ 📂component1
┃ ┃ ┃ ┣📜component1.jsx
┃ ┃ ┃ ┗📜styles.js
┃ ┃ ┣ 📂component2
┃ ┃ ┃ ┣📜component2.jsx
┃ ┃ ┃ ┗📜styles.js
┃ ┣ 📂hooks
┃ ┣ 📂mock
┃ ┣ 📂pages
┃ ┣ 📂shared
┃ ┣ 📂styles
┃ ┣ 📂redux
┃ ┃ ┣ 📂config
┃ ┃ ┗ 📂modules
┃ ┣ 📜App.jsx
┃ ┗ 📜index.js
┣ 📜.eslintrc
┣ 📜.gitignore
┣ 📜.prettierrc
┣ 📜jsconfig.json
┣ 📜package.json
┣ 📜README.md
┗ 📜yarn.lock
api/
서버와의 통신에 사용되는 코드assets/
멀티미디어 파일(이미지, 폰트)constants/
상수 (색상, 공유되는 값 등)components/
재사용 가능한 컴포넌트hooks/
커스텀 훅mock/
샘플 데이터pages/
라우팅되는 페이지 컴포넌트shared/
공통적으로 사용되는 리소스styles/
스타일 관련redux/
리덕스 관련 파일
댓글남기기