GithubHelp home page GithubHelp logo

inq-inq-inq-inq-inq / webtoon-moa Goto Github PK

View Code? Open in Web Editor NEW
2.0 0.0 2.0 3.82 MB

웹툰 플랫폼 3곳의 컨텐츠들을 한 곳에 모아 손쉽게 접근이 가능한 서비스

License: MIT License

JavaScript 41.14% CSS 22.81% EJS 36.05%
css ejs-template-engine html javascript jquery mysql node-js-express

webtoon-moa's Introduction

📚 Webtoon-Moa

📽 시연 영상

webtoon_moa

⚙️ 개발 환경(Development Environment)

분류 개발환경
운영체제 Windows 11 64bit / Mac OS
개발도구 Visual Studio Code, Postman, pm2
프레임워크 Express.js 4.16.1
데이터베이스 MySQL (Release 8.0.29)
버전 관리 Github, Git
오픈소스 및 외부 라이브러리 네이버 웹툰, 카카오 웹툰, 카카오 페이지 크롤링, [카카오, 네이버 로그인 API], nodemailer

🛠 세부 기술 스택(Tech Stack)

백엔드(Back-end)

  • Node.js
  • Express.js
  • Javascript

데이터베이스(Database)

  • MySQL (Release 8.0.29)

프론트엔드(Front-end)

  • HTML
  • CSS
  • JavaScript
  • JQuery
  • Ajax

📝 도메인 모델 분석(Domain Model Analysis)

회원(User)

  • 회원과 웹툰의 관계 : 회원은 여러 개의 웹툰을 찜할 수 있다. 또한, 하나의 웹툰은 여러 명의 회원에 의해 찜해질 수 있다. (N:N)

웹툰(Webtoon)

  • 웹툰과 회원의 관계 : 회원은 여러 개의 웹툰을 찜할 수 있다. 또한, 하나의 웹툰은 여러 명의 회원에 의해 찜해질 수 있다. (N:N)

📝 테이블 정의서(Entity Details)

회원(USER) 테이블

컬럼명 한글명 TYPE KEY NOT NULL
USER_ID 회원 고유번호 BIGINT PK Y
IDENTIFIER 회원 아이디 VARCHAR Y
PASSWORD 비밀번호 VARCHAR Y
USERNAME 회원 이름 VARCHAR Y
EMAIL 이메일 VARCHAR Y

즐겨찾기(FAVORITES) 테이블

컬럼명 한글명 TYPE KEY NOT NULL
FAVORITES_ID 즐겨찾기 고유번호 BIGINT PK Y
USER_ID 회원 고유번호 BIGINT FK Y
WEBTOON_ID 웹툰 고유번호 BIGINT FK Y

웹툰(WEBTOON) 테이블

컬럼명 한글명 TYPE KEY NOT NULL
WEBTOON_ID 웹툰 고유번호 BIGINT PK Y
TITLE 웹툰 이름 VARCHAR Y
AUTHOR 웹툰 작가이름 VARCHAR Y
IMG_URL 웹툰 대표 이미지 URL VARCHAR Y
WEB_URL 원본 웹툰 상세 페이지 VARCHAR Y
PLATFORM_NAME 플랫폼 이름 VARCHAR Y
GENRE_NAME 장르 이름 VARCHAR Y
WEEK 요일(1~7:월-일) INT Y
CLICK_COUNT 조회수 BIGINT Y

🔗 엔티티-관계 모델(Entity Relationship Diagram)

Entity_Details

⚙️ 로컬 데이터베이스 세팅

  1. MySQL 을 자신의 컴퓨터에 설치한다. 이 때, 로컬 패스워드는 11111111 로 설정한다.
  2. 설치가 완료되었으면 Terminal(Mac OS) or CMD(Windows)에 들어가서 다음과 같이 작성한다.
mysql -u root -p

접속이 안된다면 내 컴퓨터의 mysql이 깔려있는 폴더의 bin 폴더로 이동해서 다시 시도해보자.

접속이 되면 처음에 설치할 때 입력했던 패스워드를 작성하면 접속이 완료된다.

  1. 데이터베이스를 만든다.
CREATE DATABASE webtoon-moa;
  1. 데이터베이스를 사용한다고 선언한다.
USE webtoon-moa;
  1. src 파일에 있는 init.sql의 내용을 복사해서 붙여넣기 후 실행한다.
  2. 프로젝트 파일(src)의 터미널 창에서 node.js 로 init.js 를 실행한다.
src % node init.js

📐 트러블 슈팅(Trouble Shooting)

Back-end

📌이채민

  • 로그인 시 DB에서 사용자 정보를 찾아올 때, JSON 값으로 반환되는줄 알고 세션에 그대로 저장했다가 세션에서 값을 못불러오는 문제 발생 → DB에서 값을 가져오면 JSON Array로 반환되었기 때문에 세션에 첫번째 인덱스 값을 넣어주니 해결되었다.
  • 크롤링할 때 모든정보를 가져와지지 않는 문제점 → 이미지가 일부 안가져와지는 문제를 해결하지 못하였다. img 태그가 두개인데 무조건 첫번째꺼를 가져오게 되었다.

📌성유진

  • 렌더링할 때 정확한 값이 띄워지지 않는 문제점 → 렌더링 하기전에 값을 디코딩해서 뷰로 뿌려주었다.
  • ejs파일에 DB 정보 출력시 공백 에러 - 출력페이지에 urlencondedParser 사용선언, 출력메시지를 문자열 변수에 포함하여 해결
  • 즐겨찾기 출력시 사용자별로 출력 불가 - 테이블간 외래키 사용하여 INNER JOIN하여 해결
  • nodemailer 메일 전송 불가 문제 -  메일 어플리케이션 사용 용도 비밀번호 생성(계정권한 부여),  메일에서 사용할 인증코드 용 데이터는 따로 테이블 생성하여 해결

Front-end

📌조수빈

  • jQuery 클릭 이벤트 버블링 - .stopPropagation() 사용, 부모 태그로의 이벤트 전파 중단하여 해결
  • ReferenceError (실행 순서 문제) - $(document).ready(function(){}) 를 사용하여 스크립트가 다 준비된 상태에서 함수를 실행하는 방식으로 해결
  • 뒤로 가기 시 데이터가 refresh 되지 않는 문제 (Ajax 비동기 통신) - $(window).bind("pageshow", function (event) {}) 를 사용하여 뒤로 가기 이벤트를 감지하고, 뒤로 가기 이벤트가 일어나면 reload 함수를 통해 데이터를 refresh 해주어 해결

📌최소연

  • [웹툰 카드], 웹툰 제목이 긴 경우 배열이 씹히는 현상 발생 - 제목의 길이를 제한해두고 잘린 제목은 생략부호 처리. css에서 아래와 같이 작성
  • overflow: hidden;text-overflow: ellipsis;-o-text-overflow: ellipsis;white-space: nowrap;max-width: 130px;
    • overflow: hidden으로 정해둔 사이즈가 넘어가는 경우에는 해당 글자 뒤를 안보이게 설정
    • text-overflow: ellipsis; 정해둔 사이즈가 넘어가면 …(생략부호) 처리가 되도록 함
    • white-space: nowrap; 공백문자가 있는 경우 줄바꿈 처리하지 않도록 함
    • max-width로 길이를 명확히 제한하여, 해당 사이즈를 넘어갈 경우에는 … 처리가 되도록 하였음.
  • 즐겨찾기 버튼 클릭시 색상 변경 문제 발생
  • 기존: 새로운 함수를 선언하여 색상 변경 시도 -> 두번 클릭해야 작동, 즐겨찾기 해제시 색상 변경이 작동하지 않는 문제 발생
  • 해결 -> 기존 즐겨찾기 코드(값 넘겨주는)에 색상 변경 코드만 추가
    • 해당 변수에서 text값만 변경해주면 채워주는 하트로 변경이 가능하기 때문에 (google icon코드 사용) text()를 사용하여 text값만을 변경해주는 방식으로 해결

🖥 사용자 인터페이스(UI)

메인 페이지

즐겨찾기 페이지

검색 페이지

로그인, 회원가입

아이디, 비밀번호 찾기

📍 영상 링크

영상링크

webtoon-moa's People

Contributors

akman12914 avatar cokelee777 avatar soi-ha avatar sxbxn avatar

Stargazers

 avatar  avatar

Forkers

soi-ha akman12914

webtoon-moa's Issues

로그인 API 구현

  1. 로그인 폼 정보 model로 담아서 전달
  2. 로그인할 회원정보 데이터베이스에서 조회
  3. 로그인 검증
  4. 로그인 세션 유지

웹툰 조회 API 구현

  1. 조회순 검색
  2. 인기순 검색
  3. 플랫폼별 검색
  4. 인덱스 페이지 - 해당 요일 모든 웹툰검색

OAuth2 로그인 구현

  1. Kakao 로그인 및 강제 회원가입 진행
  2. Naver 로그인 및 강제 회원가입 진행

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.