**1차 개발기간 : 2023.11.4 ~ 2023.11.14
![](https://private-user-images.githubusercontent.com/96507825/282683214-0bd3b5e5-ef73-43f5-becd-7cb213411a19.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU5NzA4NDEsIm5iZiI6MTcyNTk3MDU0MSwicGF0aCI6Ii85NjUwNzgyNS8yODI2ODMyMTQtMGJkM2I1ZTUtZWY3My00M2Y1LWJlY2QtN2NiMjEzNDExYTE5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEwVDEyMTU0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJkMmZlMzhjOGRkYzg3YmEzMzk0ZDJkN2I2ODI2NDVhYjQyM2NiMGNhZTVjMTBlZTYzZmQwNWY1ZTJiODQwZGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.S4mz0mp80N9OJmTgAWFaFXoXGehA_L7XE7clZ1vMdB4)
로그인 | 회원가입 |
---|---|
로그인 - (아이디/비밀번호검사) | 회원가입- 파이어베이스연동 |
로그인 - 성공 | 회원가입- 유효성검사 |
소셜-카카오로그인 | 소셜-구글로그인 |
검색 | 책 내용-가격 및 할인가 |
---|---|
페이지네이션 | 포스트맨 사용 |
- 회원가입, 로그인,로그아웃 2개의 기능 구현
- 로그인 시 로컬스토리지 및 구글파이어베이스(인증)에 저장 되어 있는 ID/Paswword 가져와서 정보가 맞으면 로그인 성공, 틀리면 로그인 실패
- RESTful API을 이용하여 카카오 및 구글 소셜로그인 구현, nickname(카카오), email(구글) 가져와서 로컬스토리지에 저장 -> (게시판 작성 시 필요)
- 모든 필드을 충족 후 회원가입 가능 구현(유효성 검사)
- 회원가입 시 ID/Password/Nickname 로컬스토리지 및 구글파이어베이스(인증)에 저장.
- RESTful API 카카오(도서)를 이용하고, Postman을 통해서 {Key : Value} 값 매핑
- 책이름을 입력하고/Enter 누르면 사용자에게 가격, 할인가격, 책 상태(판매,절판) 제공
- 할인가(빨간색), 책 상태(초록색)으로 제공
- 페이지 당 책 내용 20개씩 제공
- 글쓰기(Create),읽기(Read),수정(Update),삭제(Delete) CRUD 구현
- 로컬스토리지를 이용하여 상태 값 관리 (세션 및 쿠키 이용 X)
- index 쿼리스트링으로 페이지 값 부여 및 객체 관리
- 게시판 게시글 3개로 제한 및 페이지네이션 구현
- NodeJS
- npm install express-generator -g
$ git clone https://github.com/Ohsaam/bookSideProject.git
$ cd bookSideProject
bookSideProject
├─ .vscode
│ └─ settings.json
├─ app.js
├─ bin
│ └─ www
├─ package-lock.json
├─ package.json
├─ public
│ ├─ images
│ │ ├─ header01.png
│ │ ├─ header02.png
│ │ ├─ header03.png
│ │ ├─ header04.png
│ │ └─ loading.gif
│ ├─ javascripts
│ │ ├─ authLogic.js
│ │ ├─ board.js
│ │ └─ firebase.js
│ └─ stylesheets
│ └─ style.css
├─ routes
│ ├─ index.js
│ └─ users.js
└─ views
├─ auth
│ ├─ join.ejs
│ └─ login.ejs
├─ board
│ ├─ board.ejs
│ ├─ modify.ejs
│ ├─ read.ejs
│ └─ write.ejs
├─ book
│ └─ bookList.ejs
├─ error.ejs
├─ footer.ejs
├─ header.ejs
├─ home.ejs
├─ index.ejs
└─ users
├─ cart.ejs
└─ mypage.ejs
![](https://private-user-images.githubusercontent.com/96507825/282711967-8e163d8b-51f7-4a77-8114-a830af13c5f0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU5NzA4NDEsIm5iZiI6MTcyNTk3MDU0MSwicGF0aCI6Ii85NjUwNzgyNS8yODI3MTE5NjctOGUxNjNkOGItNTFmNy00YTc3LTgxMTQtYTgzMGFmMTNjNWYwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEwVDEyMTU0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEzNTBkOWQ5Y2VkNmYxNDVhNmQzYzBiMzUxYmFkYmEwNGY5MWZlYzQ0ZjgwZGI0MTc2NWFmYmJkODI0NWViZmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Q-hExMH_wLnyL8Ggyya6_WbautmlxpdSlDuOHXP4v4I)
![](https://private-user-images.githubusercontent.com/96507825/282712068-c895c482-4338-48d2-b016-9cf48ec00921.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU5NzA4NDEsIm5iZiI6MTcyNTk3MDU0MSwicGF0aCI6Ii85NjUwNzgyNS8yODI3MTIwNjgtYzg5NWM0ODItNDMzOC00OGQyLWIwMTYtOWNmNDhlYzAwOTIxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEwVDEyMTU0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI5NDljYWM5NmZhYjg1OGRlNzlkMDFlYmE1MjAyMWNmNDM2MWMwNjkxNzI5NTBjZGMyYzFhOGIxZDY1ODI0YjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.CzSI5bC3JlaKv6o-1A_hjgWPPCCUhrIeFlpLG80VvM0)
우선 제일 아쉬운 부분이 기존에 진행했던 깃헙 레포지토리를 private로 바꿨다. 그 이유는 내 API Key를 노출 시켰기 때문이다. 참.. 처음에 env. 파일 설정을 하고 API키를 부여하는지 프로젝트가 마무리 될 쯤 알게됐다. 회사였으면 정말 큰일 날 뻔 했다. 이렇게 또 하나 배웠다. 보안상 이슈가 제일 중요한 부분인데 이 부분을 신경쓰지 못했다는 점이 아쉬웠다.
처음으로 파이어베이스라는 NoSQL를 사용하면서 RDBMS랑 무엇이 다른가? 라는 생각을 처음으로 하게 되었다. "정해진 스키마가 있는가?" 에 대한 고찰을 처음으로 한 것 같다. NoSQL로 어떻게 저장되는지 자바에서는 어떻게 처리하는지에 대한 의문을 가졌다. 앞으로 프로젝트를 진행한다면 RDBMS랑 Nosql 2개의 서버를 이용해서 프로젝트를 진행해보고 싶다.
배움은 즐겁다. 모르는 부분이 많다는 것은 아직 부족하다고 생각한다. Book 프로젝트를 통해서 더 발전하는 계기가 되었다.