p.s. 현재 서버를 닫은 관계로 실행이 되지 않습니다
--
Member.
DB 구조 (ERD)
전체 흐름도
프로젝트 설명 PPT
패션 커뮤니티 활성화를 위한 쇼핑몰 구성
패션 커뮤니티 활성화를 위한 쇼핑몰 구성
- 커뮤니티 활성화
- 프로젝트 경험
- 결제서비스 구현 숙달
기존 서비스와의 차별점
HTML5
CSS3
bootstrap
JavaScript``Scss``Nunjucks
jQuery
Ajax
JSON``axios
Sequelize
MySQL
PostMan``Visual Studio Code
Atom
EC2
RDS
KakaoTalk API
Gitpull
NodeJs
Bootpay
Google Drive
GitHub
"axios": "^0.22.0", "bcrypt": "^5.0.1", "bootpay-js": "^3.3.3", "cookie-parser": "^1.4.5", "dotenv": "^10.0.0", "express": "^4.17.1", "express-session": "^1.17.2", "moment": "^2.29.1", "morgan": "^1.10.0", "multer": "^1.4.3", "mysql": "^2.18.1", "mysql2": "^2.3.0", "nodemon": "^2.0.13", "nunjucks": "^3.2.3", "passport": "^0.5.0", "passport-kakao": "^1.0.1", "passport-local": "^1.0.0", "sequelize": "^6.6.5", "sequelize-cli": "^6.2.0", "socket.io": "^4.2.0"
Sequelize``passport``mysql
Sequelize
passport``mysql
Sequelize``mysql
Sequelize``mysql
Sequelize
passport``Bootpay
Sequelize``mysql
Sequelize``mysql
gitpull(api)
socket.io``rg.rok
Sequelize``mysql
Sequelize``mysql
[상황] nunjucks 동적인 처리 미숙으로 인해 템플릿 에러발생
[문제] nunjucks 동적인 처리 미숙으로 인해 템플릿 에러발생
[해결] public파일 생성후 에러 해결
[상황] 장바구니 구현시 nunjucks 활용
[문제] for문 과 mysql 관계 설정 미숙으로 인해 화면에 렌더링이 안댐
[해결] nunjucks 와 관게쿼리 해결 완료 로 인해 문제해결
[상황] 게시물,장바구니,상품등록,회원가입 구현에 있어서 에러발생
[문제] 게시물,장바구니,상품등록등 등 관계쿼리 사용부분에 있어서 CRUD에 대한 이해부족으로 인해 장애발생
[해결] 추가적인 학습과 관계쿼리 추가로 이해하면서 보안하여 장애 해결
[상황] 코드 병합
[문제] 각자 코드 작성 한것에 대한 코드 병합시 에러발생 (코드 병합시 코드 삭제댐)
[해결] 분업화 및 소통활성화 후에 코드 병합시 순차적으로 병합
[상황] 코드 가 스크립트,링크로 경로를지정해줘도 코드가먹지않는현상
[문제] 동적인파일이먹는곳은 메인,레이아웃등 헤더, 코드가 연결이되는데 그외에 인크루드방식으로 사용하는 html은 코드가 먹통이되는현상이생김
[해결] 인크루드방식코드는 html파일자체에 css,js를 작성했음
- 코드먹통으로인한 SASS사용
[상황] 링크,스크립트경로지정이안되어 SCSS 컴파일한 CSS 동적인요소언어들이 먹지않는현상
[문제] 어떻게든 스크립트형식이나 링크를 해결할려고했으나 구글링을해도 넌적스에대한 관련대체방안들이 너무적어서 참고할요소가 없어서 SCSS를 포기해야되는지 고민
[해결] SCSS파일을 CSS로 컴파일후 겹치는 CSS요소가있는지 각파일마다 확인후 자체적으로 따로 HTML파일안에 스타일을 지정해줌으로써 해결
[상황] ngrock의 문제
[문제] ngrock 이 최대 3명만가능해서 채팅기능이 3명이상 채팅이불가능했던 문제
[해결] ec2서버를열때 rgrock 을 사용하지않고 소켓을 자체적으로 서버를 열어서 인크루드방식으로 바꿈으로서 대량의인원도 문제없도록 해결함
[상황] 게시글을 작성한 유저의 nick 값을 작성자 란에 넣지 못함
[문제] 해당 페이지로 데이터를 보냄과 nunjucks 문으로 그 값을 불러오는데 있어 미숙
[해결] 라우터에서 정보를 get할 때 User model에서 nick을 attributes에 추가해주고 nunjucks 문에서는 board의 User 모델을 불러옴
[상황] 특정 게시물을 눌렀을 때 조회수(viewcount column)값을 올리지 못함
[문제] 렌더링/선언과 할당에 대한 이해 부족
[해결] 해당 게시물이 렌더링 되기 전에 선택된 그 글의 viewcount에 1을 더한값을 할당해 보여줌
[상황] 사용자들끼리 실시간 쇼핑관련 소통을하기위한 채팅
[문제] socket.io서버 를 코드에 추가할 떄 오류 발생
[해결] 서버의 순서도를 재배치 함으로써 문제 해결
[상황] 특정 사용자에게 메세지를 보내려면 해당 사용자의 socket.id를 알아야 함
[문제] socket.id는 브라우저를 킬 때마다 새롭게 생성됨, 고유한 key가 되지 못함
[해결] 해당 회원을 식별할 수 있는 idx 값을 활용: idx값을 속성이름으로 추가, 그 속성의 값은 소켓의 ID값으로 할당함
[상황] 'ooo님이 채팅방에 입장/퇴장 하셨습니다' 기능을 추가해야함
[문제] 시간 부족으로 인해 미완성
[해결] 나중에 보안 할 예정
NodeJs socket.io 깨달은 점
실시간 사용자들끼리의 채팅이기에 socket.id를 사용하는 1:1 채팅을 구현했음. socket.io 특성 상 사용자 지정에 대한 이해도 숙지
데이터베이스 AWS EC2방식 체택 인스턴스 생성후 키값생성 후
서버 연결
데이터베이스 AWS EC2방식 체택 인스턴스 생성후 키값생성 후
서버 연결
AWS의 RDS로 데이터베이스를 공유하여 협업하여 프로젝트를 진행하였고
AWS의 EC2를 활용하여 배포를 하였습니다
서버 연결하기 전 SCREEN을 활용 cmd창을 닫거나 컴퓨터를 종료하여도 서버가 계속 돌아가게 유지했습니다
전체 코드 : 코드
- 폴더 설명
views : html(Nunjucks)
video : video files(front 영상)
vendor : cdn파일(scss, jQuery 모음)
uploads : img파일(게시글 등록, 상품 등록 시 자동생성되어 이미지를url로 mySQL DB에 저장)
routes : 페이지별 라우트 생성(CRUD, sequelize)
public : front 동적(css, js, img)
profileimg : img파일(회원가입 시 자동생성되어 이미지를url로 mySQL DB에 저장)
passport : 로그인 관리
node_modeules
models : DB 테이블 생성(sequelize, 관계도 형성)
imgages/icons : favicon파일
fonts : 다운받은 폰트 모음
config : AWS RDS 연동
서버(app.js) : 코드
-> 각 페이지별 라우터 설정, passport 6002번, express 모듈로 넌적스를 http로 연결
메인페이지입니다 풀스크린방식을 채용했으며 2페이지로 나눠서 제작했습니다
1페이지같은경우는 무한슬라이드방식으로 이미지가 우에서 좌로 흘러가는형태로 제작했으며
백그라운드 HOLIDAY 세일부분은 백그라운드이미지를 Z-INDEX를 줘서 해상도에따른 변화를 잡아줬습니다
넌적스의 extends 형식으로 블록형태로 잡아둔후 작업한 페이지입니다
저희가 리엑트를 배우기전 마지막으로쓸거같은 템플릿엔진이기에 최대한 많은부분을 활용해보고싶었습니다 페이지이동식은
extends로 블록을잡아서 작업하였고
include 방식입니다 해당html파일의 소스의 요소를 영역에 집어넣어 작업하였습니다
Socket.io 를 사용하여 접속자끼리의 실시간 채팅을만들었습니다 마찬가지로 include 방식을 사용하였습니다관리자와의 채팅이가능한 라이브러리입니다 "깃플" 이며 상담요청시 해당 상담사가 1:1매칭되어 채팅기록,db에서 사용자를 불러서
어떤사용자가 시간표시와함께 어떠한 문의를 남겼는지 따로 저장이가능하며 어떠한상담사가 상담했는지도 표시가됩니다
해당 라이브러리에는 상담요청이왔을때 카톡으로 알림이오는것도있어서 매우 편리하다 판단되어 사용해봤습니다
관리자 모드에 post.js에 multer 모듈을 사용하여 이미지업로드를 uploads폴더에 자동 저장하며 url만 데이터베이스에 삽입
get에서 불러온 데이터베이스 값을 twits에 저장하여 하단부분에 렌더링
특정 id값만 불러와 전체상품 데이터베이스(Post)의 해당 특정 id값만 삭제
관리자만 관리자모드에접근하여사용할수있게했습니다
관리자모드에서 저장하게 되면 모든 물품이 하단에 위치하여생성 삭제가능하며
삭제할시 전체 물품 데이터베이스에서 데이터삭제
form 태그 사용 물품의 가격 이름 브랜드 등
장바구니데이터베이스로 정보전달
사용하여
전체상품에서 입력한 태그값을 입력시 검색이 되게해놧으며 검색 후 물품 장바구니에 추가 가능
유튜브첫페이지 전반적인 틀,index 영상
유튜브시연영상1
유튜브시연영상2