Skip to content

Latest commit

 

History

History
377 lines (289 loc) · 17 KB

README.md

File metadata and controls

377 lines (289 loc) · 17 KB

개요

커뮤니티 사이트. (프로그래머스 데브코스 5기 과제에서 제공해주신 API를 이용한)

프로젝트 소개

배포 URL

OWhat!은 다양하고 많은 OTT플랫폼에 대응하여 만든 커뮤니티 사이트입니다. 플랫폼 별로 정보를 공유하고, 서로 소통할 수 있는 공간입니다!📢

구독한 OTT 플랫폼서 방영하는 콘텐츠들에 관련해서 정보를 공유하거나 소통할 수 있습니다.

OTT별로 채널을 나눔으로써 자신이 구독한 OTT 플랫폼에 따라 필터링해 정보 습득을 할 수 있도록 도와줍니다.

또한 커뮤니티의 기본 기능인 게시글, 좋아요, 댓글, 내 정보, 검색 뿐만아니라 메시지 전송과 알림 기능도 포함되어 있습니다!✨


“너 OTT 뭐(what) 봐?? OWhat에서 얘기해보자!”

점점 다양해지는 OTT 플랫폼과 OTT별로 재미있는 콘텐츠들..

저희는 이런 콘텐츠들에 대한 정보를 한 번에 볼 수 있는 공간이 있으면 좋겠다고 생각하게 되었습니다.

이 서비스를 통해서 OTT마다 재미있는 콘텐츠들을 서로 공유하고, 다른 OTT플랫폼에도 관심을 가질 수 있게 될 것이라 생각합니다.

이제는 OTT 서비스가 점점 인기있어지고, 제작사에서도 OTT를 우선으로 방영하는 시대가 왔습니다. 더 재밌는 콘텐츠를 즐기기 위해서는 OTT 플랫폼을 이용할 수 밖에 없는 상황이 옵니다.

유료로 구독해야 즐길 수 있는 OTT 플랫폼을 더욱 신중하게 선택하고, 구독을 결정하기 위해서는 정보가 필요합니다. OWhat 서비스를 통해 사용자들과 정보를 공유해보세요.

구독하고 싶은 OTT 플래폼에 대해서 더욱 합리적인 선택을 할 수 있고, 다른 OTT 플랫폼의 정보를 보고 해당 플랫폼을 구독하게 되는 계기가 될 수 있습니다.


개발 기간

23년 12월 22일(금) ~ 24년 1월 17일(수)

  • 👬 팀 소개

팀장 팀원 팀원 팀원 팀원
최성민 안범 신준혁 최희라 정혜연

역할 담당

최성민 (팀장)

  • 공통 컴포넌트 개발(Icon, Group, Toggle, Imgae Upload, Page Layout, Toast)
  • 개발환경 구축
  • 메인 페이지 개발
  • 메시지 페이지 개발
  • 메시지 송수신 페이지 개발
  • 404 페이지 개발
  • 스토리북 CI/CD배포
  • Vercel 배포

안범

  • 공통 컴포넌트 개발(Text, Input, Tooltip, ExtraInfo, UserInfo)
  • 계정 페이지 개발
  • 계정 수정 페이지 개발
  • 비밀번호 수정 페이지 개발
  • 팔로우 팔로워 페이지 개발

신준혁

  • 공통 컴포넌트 개발 (Image, Avatar, Button, Carousel, Divider, Badge)
  • 회원가입 페이지 개발
  • 로그인 페이지 개발
  • 게시글 상세 페이지 개발
  • 다크모드 구현
  • 발표 자료 준비

최희라

  • 공톰 컴포넌트 개발(TextArea, Tab, Alarm)
  • API 타입 구축
  • 검색 페이지 개발
  • 알림 페이지 개발
  • 전체/접속 중인 사용자 목록 페이지 개발
  • 발표 영상 준비

정혜연

  • 공톰 컴포넌트 개발(Loading, Feed)
  • 네비게이션 바 개발
  • 게시글 작성 페이지 개발
  • 게시글 수정 페이지 개발

개발 환경

TypeScript React Vite
ts react vite
Storybook npm Tanstack Query TailWind CSS
storybook npm tanstack tailwind
Axios React-Router-Dom Vercel
axios reactRouter vercel

버전은 아래와 같습니다.

"@tanstack/react-query": "^5.15.0",
"axios": "^1.6.5",
"class-variance-authority": "^0.7.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.21.1"
"@commitlint/cli": "^18.4.3",
"@commitlint/config-conventional": "^18.4.3",
"@storybook/addon-essentials": "^7.6.6",
"@storybook/addon-interactions": "^7.6.6",
"@storybook/addon-links": "^7.6.6",
"@storybook/addon-onboarding": "^1.0.10",
"@storybook/blocks": "^7.6.6",
"@storybook/react": "^7.6.6",
"@storybook/react-vite": "^7.6.6",
"@storybook/test": "^7.6.6",
"@tanstack/react-query-devtools": "^5.15.0",
"@types/react": "^18.2.43",
"@types/react-dom": "^18.2.17",
"@typescript-eslint/eslint-plugin": "^6.16.0",
"@typescript-eslint/parser": "^6.16.0",
"@vitejs/plugin-react": "^4.2.1",
"autoprefixer": "^10.4.16",
"chromatic": "^10.2.0",
"clsx": "^2.0.0",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsx-a11y": "^6.8.0",
"eslint-plugin-prettier": "^5.1.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.5",
"eslint-plugin-simple-import-sort": "^10.0.0",
"eslint-plugin-storybook": "^0.6.15",
"husky": "^8.0.3",
"lint-staged": "^15.2.0",
"postcss": "^8.4.32",
"prettier": "^3.1.1",
"prettier-plugin-tailwindcss": "^0.5.9",
"storybook": "^7.6.6",
"tailwind-merge": "^2.2.0",
"tailwindcss": "^3.4.0",
"typescript": "^5.2.2",
"vite": "^5.0.8"

주요 기능

메인 페이지

  • OTT 플랫폼 별로 채널이 구성되어 있고, 채널마다 게시글을 확인할 수 있습니다.
  • 비인증 사용자도 확인 가능합니다.
  • 하단 우측에 + 버튼을 누르면 다크모드와 글쓰기 작성이 가능합니다.
  • 게시글을 클릭하면 게시글 상세페이지로 이동 가능합니다.
  • 게시글의 하트 아이콘을 클릭하면 좋아요가 가능합니다.
  • 게시글의 유저 아이콘을 누르면 해당 유저의 계정 페이지로 이동합니다.

게시글 작성 페이지

  • 제목과 내용을 작성해서 게시글을 작성할 수 있습니다.
  • 이미지를 첨부하면 이미지를 미리보기 할 수 있습니다.
  • 완료 버튼을 누르면 게시글 작성이 완료됩니다.

게시글 상세 페이지

  • 게시글의 전체 내용과 게시글에 작성된 댓글을 확인할 수 있습니다.
  • 헤더에는 현재 채널이 출력됩니다.
  • 로그인시 해당 게시글에 댓글을 작성할 수 있습니다.
  • 자신의 게시글일 때 상단 우측에 수정 삭제가 가능한 버튼이 나타납니다.
  • 자신의 작성한 댓글이 존재할 때 우측에 삭제가 가능한 버튼이 나타납니다.
  • 사용자 아바타를 누르면 해당 사용자의 계정 페이지로 이동합니다.
  • 좋아요가 가능합니다.
  • 다크모드가 가능합니다.

게시글 수정 페이지

  • 수정 버튼을 클릭한 게시글의 정보를 불러와서 수정이 가능합니다.
  • 수정 버튼을 누르면 게시글이 업데이트 됩니다.

로그인 페이지

  • 로그인이 되지않은 상태에서 네비게이션바의 마이페이지 아이콘을 누르면 로그인 페이지로 이동합니다.
  • 이메일 부분에는 타이핑마다 검증을 시도합니다.
  • 이메일의 검증과 비밀번호가 빈 값이 아니라면 로그인 버튼이 활성화됩니다.
  • 작성한 비밀번호를 볼 수 있도록 visible버튼을 사용할 수 있습니다.
  • 회원가입 페이지로 이동 가능합니다.
  • 다크모드가 가능합니다.
  • 헤더에 홈으로 이동가능한 버튼이 있습니다.

회원가입 페이지

  • 이메일, 이름, 비밀번호, 비밀번호 확인을 입력할 수 있습니다.
  • 이메일은 정규표현식 검증이 가능합니다.
  • 이메일은 검증이 통과되면 중복확인이 가능합니다.
  • 사용자이름은 공백,특수문자 제외 3~8자 이상 입력 가능합니다.
  • 비밀번호는 비밀번호는 8자 이상이어야 하며, 영문 대/소문자, 숫자, 특수문자를 포함해서 입력이 가능합니다.
  • 비밀번호확인은 타이핑 될 때마다 비밀번호와 일치하는지 검증합니다. 비밀번호에서 타이핑이 일어날때도 동일하게 검증합니다.
  • 모든 검증과 이메일 중복확인이 완료되면 회원가입 버튼이 활성화 됩니다.
  • 다크 모드가 가능합니다.

계정 페이지

  • 다른 회원의 계정 페이지는 비회원과 회원 모두 접근이 가능합니다.
  • 마이 페이지인 경우에는 회원만 접근이 가능합니다.
  • 팔로우/팔로워 버튼을 클릭하면 팔로우/팔로워 페이지로 이동합니다.
  • 내 게시글을 클릭하면 게시글 상세 페이지로 이동합니다.
    • 내 게시글의 내 프로필 이미지를 클릭해도 다시 마이 페이지로 이동하지 않습니다.
  • 다른 회원의 계정 페이지에서는 '팔로우/팔로잉' 버튼이 나타납니다.
  • 마이 페이지에서는 '내 계정 변경' 버튼이 나타납니다.
  • 다크 모드가 가능합니다.

팔로우/팔로워 페이지

  • 마이 페이지에서 넘어가는 팔로우/팔로워 페이지에서는 내가 팔로우한 사람과 나를 팔로우하고 있는 사람들의 목록을 볼 수 있습니다.
  • 다른 회원 계정 페이지에서 넘어온 팔로우/팔로워 페이지에서는 해당 회원이 팔로우한 사람(본인 포함)과 해당 회원을 팔로우하고 있는 사람들(본인 포함)의 목록을 볼 수 있습니다.
  • 각 팔로우/팔로워의 프로필 이미지를 누르면 해당 회원의 계정 페이지로 이동합니다.
  • 다크 모드가 가능합니다.

계정 수정 페이지

  • 비회원일시 login 페이지로 이동합니다. (회원만 이용이 가능합니다.)
  • 회원의 닉네임을 수정할 수 있습니다.
  • 닉네임은 3~8글자 사이에 공백 제외하고 작성이 가능하며, 한글인 경우에는 자음이나 모음 형태는 작성할 수 없도록 validation을 설정하였습니다.
  • 닉네임, 커버 이미지, 프로필 이미지 중 하나만 수정해도 저장이 가능합니다. (단, 닉네임은 검증을 통과해야 합니다.)
    • 커버 이미지 또는 프로필 이미지 하나를 업로드 하여도 저장하기는 활성화 되며, 활성화 이후 닉네임을 수정하면 다시 비활성화 됩니다.
  • 모든 검증이 완료되면 저장하기가 활성화됩니다.
  • 저장 후 본인의 마이 페이지로 이동합니다.
  • 다크 모드가 가능합니다.

비밀번호 수정 페이지

  • 비회원일 시, 로그인 페이지로 이동합니다. (회원만 이용이 가능합니다.)
  • 본인의 비밀번호를 수정할 수 있습니다.
  • 비밀번호와 비밀번호 확인이 서로 일치하는지 확인합니다.
    • 비밀번호는 영문 소/대문자, 특수문자, 숫자를 모두 포함하여 8자 이상이어야 합니다.
  • 검증이 완료되면 '변경하기' 버튼이 활성화 됩니다.
  • 저장 후 본인의 마이 페이지로 이동합니다.
  • 다크 모드가 가능합니다.

검색 페이지

알림 페이지

메시지 페이지

메시지 송수신 페이지

전체 사용자/접속 중인 사용자 목록 페이지

다크 모드

  • 다크모드가 가능합니다
  • 메인페이지에서는 + 버튼을 클릭한 후 사용합니다.
  • 메인페이지를 제외한 모든 페이지에서 다크모드 버튼이 사용가능합니다.