상단 로고

유튜브 페이지 제작 프로젝트

유튜브 목업
24.03.11 - 24.03.29개인 프로젝트반응형
프로젝트 개요
유튜브 오픈 API를 사용하여 동영상 페이지 제작
프로젝트 목적
유튜브 API 사용 경험
Tailwind CSS 활용 경험
React Router를 사용하여 CSR 방식으로 제작
React Query를 사용한 상태관리 경험
Postman을 이용한 API 관리, 테스트 경험
사용 언어
React, Tailwind CSS
주요 기능
인기 동영상 기능 구현
검색 기능 구현
동영상 재생 기능 구현
채널 연관 동영상 리스트 구현
반응형 디자인
트러블슈팅 경험
문제: 메인 페이지와 연관 리스트에 중복되는 코드가 발생
해결: 하나의 컴포넌트에 prop으로 type 값을 전달해주고 값에 따라 다른 레이아웃으로 재사용하여 해결
느낀 점
API 사용 시 횟수 제한이 있기 때문에 mock data를 사용하여 테스트 하는 방법을 배움
React Router를 사용하여 필요한 데이터만 라우팅 하는 법을 깨달음
React Query로 Hook의 문제점을 보완하며 상태관리 하는 것을 경험함
Demo Link

Preview

  • youtube 추가

    메인 페이지

    - 인기 동영상, 검색 기능 구현

    - API를 사용하여 인기 동영상과 검색 목록 출력하기

  • 상세 페이지

    - 동영상 재생 기능 구현

    - IFrame Player API를 사용하여 동영상 재생하기

    youtube 수정
  • youtube 삭제

    상세 페이지

    - 현재 동영상 채널의 연관 동영상 기능 구현

    - API를 사용하여 현재 동영상 채널의 연관 동영상 출력하기

투두 리스트 제작 프로젝트

투두 목업
2024.01.26개인 프로젝트
프로젝트 개요
리액트 컴포넌트를 활용하여 목록을 관리하는 페이지 제작
프로젝트 목적
React 활용 능력 함양
useState, useEffect를 통한 상태관리로 목록 기능 구현
Context를 통한 전역 데이터 관리 경험
PostCSS 사용 경험
사용 언어
React, PostCSS
주요 기능
목록 추가, 삭제 기능 구현
전체, 진행 중, 완료 카테고리 구현
다크모드 구현
페이지 새로고침 시 데이터 유지 기능 구현
트러블슈팅 경험
문제: 모든 label 클릭 시 첫 번째 항목의 checkbox가 체크되는 현상 발생
해결: 항목 생성 시 동일한 id를 사용하여 발생한 오류로, uuid를 통해 랜덤 값을 id로 부여하여 해결
느낀 점
useState 사용 시 컴포넌트가 리렌더링될 때마다 초깃값이 다시 전달되기 때문에 함수를 콜백함수로 호출해야 한단 걸 깨달음
useEffect을 사용하여 JSON으로 변환한 데이터를 LocalStorage에 저장하여 유지하는 법을 배움
Context를 사용하여 전역 데이터를 관리하는 경험을 함
PostCSS를 통해 css를 모듈화하여 오버라이딩을 방지하는 법을 배움
Demo Link

Preview

  • todo 추가

    메인 페이지

    - 할 일 추가, 삭제 기능 구현

    - 입력된 값을 객체로 만들어서 배열 데이터에 추가하기

  • 메인 페이지

    - 다크모드 구현

    - Context로 전역 데이터를 관리하여 다크모드 구현하고 상태 유지하기

    todo 수정
  • todo 삭제

    메인 페이지

    - 페이지 새로고침 시 데이터 유지 기능 구현

    - useEffect를 사용하여 JSON으로 변환한 데이터를 LocalStorage에 저장하여 유지하기

캐논아카데미 홈페이지(사용자) 리뉴얼 프로젝트

캐논 사용자 목업
2023.04.27 ~ 2023.05.19팀 프로젝트MOBILE버전
프로젝트 개요
학습자를 위한 MOBILE에 최적화된 LMS(학습지원시스템) 웹 사이트 개발
프로젝트 목적
페르소나 설정을 통해 UI/UX분석 경험
학습자용 정보구조, 화면구조, 데이터베이스 설계 경험
PHP, SQL 데이터베이스를 사용한 장바구니 기능 구현
오픈 라이브러리와 API 사용 경험
사용 언어
HTML, CSS, SASS, JavaScript, jQuery, PHP, MySQL
맡은 역할·기능
메인 페이지, 강의, 검색 페이지 개발
메인 페이지 강의 - 이중 탭메뉴 기능 구현
메인 페이지 수강평 - 자동 슬라이드 기능 구현
강의 페이지 리스트 - 탭메뉴로 목록 출력 기능 구현
강의 페이지 상세보기 - 강의 데이터 출력 기능 구현
검색 페이지 - 태그 검색 기능 구현
트러블슈팅 경험
문제: 메인 강의에 이중 탭메뉴가 각각 동작하지 않고 중복으로 작동되는 현상 발생
해결: 첫 번째 탭메뉴는 라디오버튼을 활용한 css로, 두 번째 탭메뉴는 자바스크립트로 구현하여 따로 동작하도록 해결
느낀 점
게시판 글쓰기와 챗봇 기능을 구현하며 다양한 라이브러리와 API 사용법을 배움
PHP 정규 표현식을 사용하며 문자열을 표현하는 방법을 배움
프로젝트 PDF Demo Link

사용자 ID: qwer, PASS: 1234

Preview

  • canon 강의

    메인 페이지의 강의

    - 사용자의 편의를 위해 강의 목록을 이중 탭메뉴와 swiper.js 플러그인을 사용하여 슬라이드로 구현

    - 두 개의 탭메뉴를 라디오버튼과 자바스크립트로 나눠서 각각 동작하게 하기

  • 메인 페이지의 수강평

    - 정보 제공을 위한 수강평을 swiper.js 플러그인을 사용하여 슬라이드로 구현

    - preg_replace를 활용한 정규 표현식 변환으로 회원 이름을 별표 처리하기

    - 빈 별과 채워진 별 이미지를 겹친 후 별점에 따라 채워진 별 이미지를 clip으로 잘라서 출력하기

    canon 수강평
  • canon 검색

    검색 페이지

    - form 태그를 사용하여 검색 기능 구현

    - a의 title 속성을 활용해서 href를 변경하는 방법으로 검색 결과 출력하기

캐논아카데미 홈페이지(관리자) 리뉴얼 프로젝트

캐논 관리자 목업
2023.03.28 ~ 2023.04.18팀 프로젝트PC버전
프로젝트 개요
관리자를 위한 PC에 최적화된 LMS(학습지원시스템) 웹 사이트 개발
프로젝트 목적
관리자용 정보구조, 화면구조, 데이터베이스 설계 경험
관계형 데이터베이스 경험
오픈 API 사용 경험
사용 언어
HTML, CSS, JavaScript, jQuery, PHP, MySQL
맡은 역할·기능
1:1문의, 쿠폰 관리 페이지와 로그인, 회원가입 페이지 개발
각 페이지의 탭메뉴와 검색, 페이지네이션 기능 구현
1:1문의 관리 페이지 - 답변 여부에 따라 나누어서 출력, 답변 기능 구현
쿠폰 관리 페이지 - 쿠폰 목록 출력, 관리 기능 구현
로그인 페이지 - 아이디 저장, 로그인 기능 구현
회원가입 페이지 - 아이디 중복 확인, 회원가입 기능 구현
트러블슈팅 경험
문제: 탭메뉴와 페이지네이션의 동작 방식 차이 때문에 페이지가 새로고침되는 현상 발생
해결: 탭메뉴 li에 parameter 값을 부여해서 클릭 시 url 값을 변경하여 이동하는 방식으로 해결하며 페이지를 제어하는 방식을 배움
느낀 점
관계형 데이터베이스를 통해 여러개의 테이블을 효율적으로 관리하는 능력을 키움
PHP에서 조건문을 사용하여 다양하게 데이터를 출력하는 경험을 함
url 파라미터 값으로 페이지 이동을 제어하는 방법을 배움
프로젝트 PDF Demo Link

관리자 ID: admin, PASS: admin

Preview

  • canon 목록

    모든 페이지

    - 탭메뉴와 검색, 페이지네이션 기능 구현

    - 탭메뉴 li에 parameter 값을 부여해서 클릭 시 페이지의 url 값을 변경하여 해당하는 목록 보이게 하기

    - form 태그를 사용하여 검색 기능

    - 한 페이지당 원하는 만큼의 데이터를 불러오는 pagination 구현

  • 1:1문의 페이지

    - 답변 등록 기능 구현

    - MySQL에서 하나의 테이블에 문의와 답변을 입력 받고 질문의 아이디 컬럼을 이용하여 질문이면 공백, 답변이면 질문의 아이디를 부여하는 방식으로 구분

    - 답변이 등록되어 질문의 아이디를 가진 답변이 생기는 질문은 답변완료 상태로 출력하기

    canon 답변
  • canon 로그인

    회원가입 페이지

    - 아이디 중복 확인 기능 구현

    - 입력한 아이디와 중복되는 아이디가 있는지 확인하기

이마트 홈페이지 리뉴얼 프로젝트

이마트 목업
2023.02.06 ~ 2023.03.15팀 프로젝트적응형
프로젝트 개요
시가총액 100대 기업 중 한 곳을 선정하여 기존 홈페이지를 적응형 웹으로 리뉴얼
프로젝트 목적
적응형 웹 제작 능력 함양
Git, GitHub를 통한 형상관리, 협업 경험
PHP, SQL 데이터베이스를 사용한 데이터 입력, 출력 경험
카카오 지도 API 활용
meta tag를 통한 SEO(검색엔진 최적화) 경험
사용 언어
HTML, CSS, JavaScript, jQuery, PHP, MySQL
맡은 역할·기능
PC와 MOBILE 메인 페이지와 입사 지원, 지원 현황 페이지 개발
메인 페이지 - 풀페이지 스크롤 기능 구현
메인 페이지 매장 정보 - 매장명 선택 시 정보 변경 기능 구현
채용 페이지 지원하기 - 데이터 입력 기능 구현
채용 페이지 지원현황 - 데이터 출력 기능 구현
트러블슈팅 경험
문제: 모바일 GNB의 서브 메뉴를 연속으로 빠르게 탭하면 탭한만큼 동작하는 현상 발생
해결: stop 메서드를 추가하여 탭할 시에 이전 동작을 취소시켜서 해결
느낀 점
기획자, 디자이너의 요구대로 구현하기 위해 여러번 회의를 하며 소통 능력을 키움
GitHub를 통해 협업하며 버전 관리의 중요성을 느낌
MySQL로 테이블을 만들고 PHP로 데이터를 수집, 출력하며 데이터베이스에 대해 이해하게 됨
프로젝트 PDF Demo Link - PC Demo Link - MOBILE

Preview

  • 이마트 풀페이지

    메인 페이지

    - fullpage.js 플러그인 사용하여 풀페이지 스크롤 기능 구현

  • 메인 페이지의 매장 정보

    - JavaScript를 사용하여 정보 변경 기능 구현

    - 아이콘에 마우스 오버 시 replace로 파일 확장자를 변경하여 움직이는 아이콘 출력

    이마트 매장 정보
  • 이마트 지원하기

    메인 페이지의 지원하기

    - PHP를 사용하여 데이터 입력, 출력 기능 구현

FREITAG 홈페이지 리뉴얼 프로젝트

프라이탁 목업
2023.02.08 ~ 2023.02.15개인 프로젝트적응형
프로젝트 개요
선호하는 브랜드를 선정하여 기존 홈페이지를 적응형 웹으로 리뉴얼
프로젝트 목적
적응형 웹 제작 능력 함양
장치 유형 식별을 위한 userAgent 사용 경험
JavaScript의 effect, event 메서드 활용
Ajax를 사용한 JSON 데이터 출력 경험
사용 언어
HTML, CSS, JavaScript, jQuery, Ajax
주요 기능
PC와 MOBILE 메인 페이지 개발
메인 페이지 상단 배너 - 자동 슬라이드, 내비게이션 버튼 기능 구현
메인 페이지 어바웃 - 탭메뉴 기능 구현
메인 페이지 아이템 - 아코디언 기능 구현
메인 페이지 이벤트 - 자동 슬라이드 기능 구현
메인 페이지 SNS - Ajax를 사용하여 더 보기 기능 구현
트러블슈팅 경험
문제: 메인 슬라이드를 처음 실행했을 때 fadeOut이 순차적으로 처리되어 이미지가 깜빡이는 현상 발생
해결: css에서 미리 첫 번째 슬라이드를 제외한 나머지의 display 속성을 none 하는 방법으로 해결하며 자바스크립트의 비동기 처리에 대해 이해함
느낀 점
혼자 개발하는 과정에서 스스로 문제점을 찾고 해결하며 뿌듯함을 느낌
JavaScript로 여러 효과를 구현하며 응용 하는 능력을 키움
JSON으로 데이터를 쉽게 관리하는 방법을 배움
Demo Link - PC Demo Link - MOBILE

Preview

  • 프라이탁 어바웃

    메인 페이지의 어바웃

    - 사용자의 흥미를 유발하는 동적인 탭메뉴 기능 구현

    - JavaScript로 forEach문을 사용하여 클릭한 li에 해당하는 콘텐츠만 display 속성 block 하기

    - offset 속성을 활용하여 li의 left와 width값을 구하고 클릭 시 검정 배경이 이동하기

  • 메인 페이지의 아이템

    - 사용자가 원하는 콘텐츠만 볼 수 있는 아코디언 기능 구현

    - JavaScript로 for of문을 사용하여 클릭한 콘텐츠만 클래스 부여하여 서식 바꾸기

    프라이탁 아이템
  • 프라이탁 SNS

    메인 페이지의 SNS

    - 웹페이지 속도 향상을 위한 더 보기 기능 구현

    - Ajax를 사용하여 비동기 방식으로 JSON 데이터를 불러오고 더 보기 클릭 시 출력되게 하기