웹툰 홈페이지 만들기 ( AVATOON )
사용 기술- HTML5 / CSS3 / JS / React- Next.js / Node.js / MySql
구현 기능
-
API를 통해 데이터베이스의 저장된 웹툰의사진 , 제목 , 작가 , 좋아요 수 등을 가져와 보여줌
-
검색 기능을 통해 제목과 관련된 키워드 , 카테고리별로 검색 가능
-
인기웹툰 (랭킹)을 통해 좋아요 수가 많은 웹툰을순서대로 보여줌
-
회원가입 및 로그인 구현 (카카오로그인 포함)
-
어드민 페이지 구현
- 어드민 페이지 기능
- 웹툰 추가 / 삭제
- 웹툰 에피소드 추가 / 삭제
-
오늘 날짜의 요일을 'today!'라는 글씨로 알려줌
-
3000px ~ 360px 까지의 반응형 웹 구현
-
리스트페이지에서의 내림차순 / 오름차순 기능
-
웹툰페이지에서 클릭시 나타나는 레이아웃을 통해 다음화 , 이전화 , 목록 등 이동 가능
MainPage

메인페이지 컴포넌트
- header
- slider
- allToonInfo
- mainRank
- tag
메인페이지 상세 기능
- 데이터 베이스에 존재하는 모든 웹툰을 슬라이드로 보여주는 슬라이드
- 요일별 전체 웹툰 : 전체 웹툰을 보여줌
- 인기웹툰 : 좋아요가 높은 6개의 웹툰을 순서대로 보여줌
- 웹툰 바로가기 : 클릭시 해당 키워드를 검색해 검색결과 페이지로 이동
- 요일알림 : 오늘 날짜의 요일을 "today"라는 글씨로 알려줌 ( header )
메인페이지 디테일
- 슬라이드 요소 호버 시 컬러 변경
- 요일별 전체 웹툰 호버 시 이미지에만 스케일 적용
- 인기 웹툰의 1위는 이미지 , 작가 , 제목 , 랭킹 넘버를 애니메이션을 통해 스케일 무한반복
- 인기웹툰 호버 시 이미지 스케일 적용
- 웹툰 바로가기 호버 시 컬러 변경
슬라이드 | 메인랭크 | 웹툰 바로가기 | 요일 알림 | 전체요일 스케일 |
---|
반응형
720px | 360px |
---|
DayPage

데이페이지 컴포넌트
- 요일별 추천 웹툰
- 구현 했으나 요일별 웹툰이 적고 , 아예 없는 요일도 있어 메인페이지 슬라이더를 똑같이 사용
- DayToonInfo : 각 요일에 해당하는 웹툰들을 보여줌
- Rank : 좋아요 순으로 5개의 웹툰을 보여줌
- Tag : MainPage의 Tag와 동일
데이페이지 상세 기능
- ~요일 전체 웹툰 : 헤더의 월 ~ 금 요일 선택시 해당 요일의 웹툰을 보여줌
- 하나의 페이지로 url에 day를 라우트 쿼리로 받아와서 사용
- 헤더 컴포넌트에서 월 화 수 목 금 토 일 day를 지정
- 인기웹툰 : 좋아요 순으로 5개의 웹툰을 보여줌
- 태그 , 헤더는 동일
데이페이지 디테일
- DayToonInfo 호버 시 메인페이지와 동일하게 이미지 스케일
- Rank 호버시 tag와 동일하게 컬러 변경
- 화면이 작아져 Rank 컴포넌트의 Content(웹툰 설명글)의 공간이 충분치 않은 경우
해당 크기의 화면에서는 Content가 사라짐 / 제목 , 작가 , 순위는 유지
반응형
720px | 360px |
---|
ListPage

리스트페이지 컴포넌트
- ListInfo : 해당 웹툰의 메인 썸네일 , 제목 , 작가 , 요일 , 웹툰 설명에 대한 정보를 api를 통해 가져와 보여줌
- ListItem : 해당 웹툰의 회차 정보들을 가져와 보여줌
리스트페이지 상세기능
- 메인페이지 ~ 데이페이지 등 에서 웹툰 클릭시 해당 웹툰의 EnName(영문이름)과 webtoonID를 받아
리스트 페이지로 이동시킴
- 좋아요 기능
- 로그인 x : 토큰이 없어 예외처리 발생 / alert를 통해 " 로그인 해야 이용 가능합니다 " 출력
- 로그인 o :
- 해당 아이디가 좋아요를 누르지 않은 상태이면 좋아요 수 증가
- 해당 아이디가 좋아요를 누른 상태이면 좋아요 수 감소
- 첫화보기 : 해당 웹툰의 첫번째 회차로 이동
- 내림차순 / 오름차순 : 웹툰의 회차를 내림차순으로 볼지 오름차순으로 볼지 선택 가능
반응형
720px | 360px |
---|
WebToonPage

웹툰페이지 컴포넌트
- 클릭레이아웃 : 헤더밑에 붙어있는 검정바
- 코멘트 : 해당 웹툰의 달린 댓글들을 보여주고 작성하는 컴포넌트
웹툰 페이지 상세기능
- 클릭레이아웃을 이용한 회차 이동
- "<이전화" : 이전화로 이동 (이전화가 없을 시 예외처리로 동작 x )
- "다음화>" : 다음화로 이동 (다음화가 없을 시 예외처리로 동작 x )
- "목록" : 해당 웹툰의 리스트페이지로 이동
- 스크롤 상단 , 하단 이동 버튼
- 댓글 작성 기능
웹툰 페이지 디테일
- 클릭레이아웃 : 처음엔 헤더 밑에 붙어 있다가 스크롤 이동을 통해 헤더가 가려지는
스크롤 위치에서는 화면의 최상단의 붙음
댓글작성 | 클릭레이아웃 컴포넌트 위치 바뀌는 구간 | 다음화 이전화 |
---|
SerachPage

페이지 상세 기능
- 헤더 검색바를 통한 검색 기능
- Tag(웹툰바로가기)를 통한 검색 기능
- 검색 결과가 없을 시 전체 웹툰 중 하나 랜덤으로 추천
페이지 디테일
- 검색창에 입력한 값을 SerachPage에서 초록색 컬러로 표시
- 검색창에 입력한 값이 무엇인지 보여줌
헤더를 통한 검색 | 웹툰 바로가기를 통한 검색 |
---|
로그인 / 회원가입 페이지
회원가입 페이지 | 로그인 페이지 |
---|
회원가입 페이지 상세 기능
- 비밀번호와 비밀번호확인의 값이 일치하지 않으면 회원가입 로직에 예외처리를 주어 동작 x
로그인 페이지 상세 기능
- 회원가입을 통해 만들어진 아이디 패스워드를 입력하면 DB에서 확인 후 토큰을 받아 로그인함
- 카카오 로그인 API를 통해 카카오 로그인 구현
로그인 기능
- 리스트페이지에서의 좋아요 기능
- 웹툰페이지에서의 댓글 기능
- 어드민 페이지에서의 웹 관리 기능
AdminPage


어드민페이지 상세 기능
- 어드민 계정으로 로그인 해야만 접근 가능
- 쿠키의 토큰을 통해 어드민 구별
- 어드민 계정이 아닐시 "접근불가"라는 텍스트만 보여줌
- 웹툰 추가/삭제
- 에피소드 추가/삭제
어드민페이지 디테일
- 웹툰 추가/삭제
- 현재 웹툰 목록에서 ID와 좋아요 옆에 검은색 삼각형을 이용해 각각 내림차순 오름차순 가능
- 웹툰 등록시 웹툰 제목,작가,썸네일 이미지를 입력하면 메인페이지에 어떻게 보일지 미리보기 가능
- 현재 웹툰 목록 위 검색창을 통해 검색어가 포함된 열의 색을 입히고 검색어에도 색을 입혀 찾기 쉽게 함
- 에피소드 추가/삭제
- 리스트 페이지와 동일한 UI를 구현해 어드민 페이지에서 헷갈리지 않게함
- 상단의 웹툰 이름과 작가가 적혀있는 버튼을 통해 관리
End / 시연영상
AWS 서버 유지비용이 발생해 배포는 했지만 DB에 데이터를 사용할 수 없게 되었습니다.
작성된 내용은 모두 정상 동작하며
마지막으로 시연영상 링크를 올려두겠습니다.