React, Node.js, mongoDB, mongoose, JWT
- 회원가입: 아이디, 비밀번호, 닉네임, 학번, 전공을 입력하고 회원가입을 진행할 수 있습니다.
- 로그인, 로그아웃: 아이디, 패스워드를 입력하여 로그인과 로그아웃 버튼을 통해 로그아웃을 할 수 있습니다.
- (질문게시판) 글 작성, 수정, 삭제: 로그인한 사용자는 댓글을 달 수 있고 자신의 댓글만 수정 및 삭제가 가능합니다.
- 댓글 작성, 수정, 삭제: 로그인한 사용자는 댓글을 달 수 있고 자신의 댓글만 수정 및 삭제가 가능해요.
- 검색 : 검색 기능을 통해 원하는 제목의 게시글을 확인 할 수 있습니다.
- 북마크: 로그인한 사용자는 북마크 기능을 통해 원하는 글들을 모아서 확인할 수 있습니다.
메인 페이지

- 로그인 여부에 따라 로그인 버튼 혹은 글쓰기 버튼이 보이게 되며 접속 중인 사용자 닉네임을 표시합니다.
- 글 목록은 최신순으로 표시되며 제목, 작성자, 작성 일자를 표시합니다.
- 자세히 보기 버튼을 누르면 해당 글의 상세 페이지로 이동합니다.
로그인

- 사용자는 아이디와 패스워드를 입력하여 로그인을 요청합니다.
- 서버는 DB에 해당 사용자 정보가 존재한다면 토큰을 발급하고 로그인 요청을 승인합니다.
- 로그인 성공 시 메인페이지로 이동합니다.
회원가입

- 닉네임은 공백을 제외한 2자~10자 사용할 수 있어요.
- 아이디, 닉네임 중복확인 여부를 서버에 요청을 보내면 기존 사용자의 아이디, 닉네임과 중복되는지 체크합니다.
- 모든 조건을 충족한다면 가입정보와 패스워드(bcrypt 모듈을 활용하여 salt 해시 알고리즘으로 암호화된 값)를 DB에 저장합니다.
- 회원가입이 성공적이라면 메인 페이지로 이동합니다.
질문게시판


- 로그인한 사용자만 글 작성이 가능합니다.
- 제목과 내용을 작성하여 글쓰기 버튼을 누르면 게시글을 등록할 수 있습니다.
- 누구든지 글의 제목, 작성자, 작성일, 댓글을 확인할 수 있습니다.
- 댓글은 최신순으로 보이며 자신이 작성한 댓글만 수정 및 삭제를 할 수 있습니다.
- 해당 글의 작성자만 수정 및 삭제 버튼이 보이며 해당 기능을 이용할 수 있습니다.
후기게시판


- 로그인한 사용자만 글 작성이 가능합니다.
- 제목과 내용을 작성하여 글쓰기 버튼을 누르면 게시글을 등록할 수 있습니다.
- 누구든지 글의 제목, 작성자, 작성일을 확인할 수 있습니다.
- 해당 글의 작성자만 수정 및 삭제 버튼이 보이며 해당 기능을 이용할 수 있습니다.
스펙게시판


- 로그인한 사용자만 글 작성이 가능합니다.
- 제목과 내용을 작성하여 글쓰기 버튼을 누르면 게시글을 등록할 수 있습니다.
- 누구든지 글의 제목, 작성자, 작성일을 확인할 수 있습니다.
- 해당 글의 작성자만 수정 및 삭제 버튼이 보이며 해당 기능을 이용할 수 있습니다.
공통기능
- 로그인이 필요한 기능은 모두 토큰을 확인하여 정상적인 사용자인지 체크합니다. (미들웨어)자세히
기능 | Method | URL | request | response | |
---|---|---|---|---|---|
메인 페이지 | 화면 표시 | GET | / | index.html | |
접속 정보 | GET | /user | nickname | ||
로그인 | 화면 표시 | GET | /login | login.html | |
사용자 접속 | POST | /login | { id, password } | success || empty || fail | |
회원가입 | 화면 표시 | GET | /register | register.html | |
등록 요청 | POST | /register | { id, password, password_re, nickname } | success || empty || wrong_id || wrong_nickname || wrong_password || already_id || already_nickname || diff_password | |
글 작성 페이지 | 화면 표시 | GET | /new | new.html | |
질문게시판 글 리스트 | GET | /questions | { postId, title, nickname, date }... | ||
질문게시판 글 조회 | GET | /questions/:postId | { postId, title, nickname, date }... | ||
질문게시판 글 작성 | GET | /list | { postId, title, nickname, date }... | ||
글 리스트 | GET | /list | { postId, title, nickname, date }... | ||
글 작성 | POST | /new | { title, content} | success || empty || fail | |
상세 페이지 | 화면 표시 | GET | /:postId | detail.html | |
글 상세 정보 | GET | /list/:postId | {title, nickname, content, date} | ||
글 수정 | PUT | /list/:postId | { title, content } | success || empty || fail | |
글 삭제 | DELETE | /list/:postId | success || fail | ||
댓글 목록 | GET | /comment/:postId | {nickname, comment, date}... | ||
댓글 작성 | POST | /comment/:postId | { comment } | success || empty || fail | |
댓글 수정 | PUT | comment/:commentId | { commentId, comment } | success || empty || fail | |
댓글 삭제 | DELETE | comment/:commentId | success || fail |