- 항해99 본과정에 앞서 사전 스터디를 진행하며 웹개발 종합반 강의를 완강했다.
- 그 강의에 기반하여 팀원들과 토이 프로젝트를 진행하기로 결정!
- 늦게 합류한만큼 본과정 시작 전까지 시간이 많지 않기에 기본 게시판 CRUD를 구현해보기로 하였다.
프로젝트 주제 선정
- 대나무숲 - 익명 고민 상담소
: 익명으로 고민을 털어놓고, 익명으로 해답을 알려주는 상담소(게시판)
기술 스택
- Frontend : HTML5, CSS3, Bootstrap5.0, JavaScript, Jquery, Ajax
- Backend : Python, Flask
- DB : MongoDB
- Infrastructure : AWS EC2
기능 명세서
🚩 표시는 Option 기능
1. 고민 게시판
- 닉네임, 비밀번호, 제목, 내용, 작성 시간으로 고민 글 작성
- 메인 페이지에서 인기 조회순, 많은 댓글순, 최신순 등으로 나눠 게시글 리스트 보여줌
- 게시글을 수정하거나, 삭제하려면 작성할 때 입력했던 비밀번호 필요
- 게시글 삭제는 정말 삭제할 건지 한번 더 묻기
- 🚩 카테고리(연애, 가족, 취업, 건강, 학교, 고민 등)
2. 댓글 기능
- 닉네임, 비밀번호, 댓글 내용, 작성 시간으로 고민에 대한 해답 작성
- 해당 댓글에 추천 누를 수 있고 추천수가 가장 높은 댓글 상단으로 올리거나, 백그라운드 색상 표시
- 게시글과 마찬가지로 댓글을 수정하거나, 삭제하려면 작성할 때 입력했던 비밀번호 필요
3. 검색 기능
- 키워드를 넣어 해당 키워드가 있는 게시글 검색
- 🚩 범위별(내용, 작성자, 댓글, 모두 포함 등) 검색
🚩 회원 기능
* 참고 자료
- 관련 기사 - “말못할 고민 SNS에”…흥하는 ’익명 고민상담’
- 참고 웹서비스1 - 익명 게시판 esitejoa
- 참고 웹서비스2 - 익명 게시판 animato
- 참고 메인페이지 OKKY
페이지별 와이어 프레임
- 기능 명세서를 토대로 와이어 프레임 작성(Figma 사용)
1. 메인 페이지(고민글 리스트)
- 고민 게시글을 한 번에 리스트 형태로 출력한다.
- 인기순, 조회순, 최신순 버튼을 통해 리스트들을 정렬할 수 있다.
- 상세 조회 페이지로 넘어갈 때마다 조회수가 +1 된다.
2. 고민거리 작성 페이지(고민글 입력)
- 제목, 닉네임, 비밀번호, 내용을 입력받아 DB에 저장한다.
3. 고민거리 상세 페이지(고민글 상세 조회)
- 메인 페이지의 리스트에서 연결되는 상제 페이지이다.
- DB에서 받아온 데이터를 알맞은 위치에 구성한다.
- 고민글 수정, 삭제 시에는 기존 비밀번호와 일치하는지 확인한다.
- 마찬가지로 댓글 작성, 수정, 삭제가 가능하도록 구현한다.
- 댓글 추천 기능으로 해당 고민글의 베스트 답변을 유도한다.
DB schema
- NoSQL의 DB schema 설계는 처음이었지만, 유연하게 수정이 가능해서 여러 시도를 많이 해보았다.
- 대나무숲 서비스의 쿼리는 그다지 복잡하지 않고, 조회에 중점을 뒀기 때문에 Embedding 방식을 사용하였다.
- One-to-Few 구조로 게시글 안 쪽에 댓글이 존재하는 형태이다.
- 연산을 해야 하는 key 값인 board_id, view_count, comment_id, likes는 int형, 나머지는 String 형이다.
- deleted_at key를 사용하여 게시글 데이터가 물리적으로 삭제되지 않도록 구현하였다.
- deleted_at의 기본값은 null이다.
- 사용자가 게시글을 삭제하면, deleted_at을 현재시간으로 update 한다.
- 게시글 리스트 조회 시, deleted_at이 null인 값만 조회한다.
- 참고자료 - 어떻게 mongoDB 스키마 설계를 해야할까?
{
"_id": "ObjectId('mdkalsfmk2')",
"board_id": 1,
"nickname": "eunsol",
"password": "1234",
"title": "라면 먹을지 말지 추천좀",
"desc": "지금 열두시고 저녁 안먹어서 배고픔 먹을까 말까?",
"view_count": 23,
"created_at": "2022-10-31 21:44:23",
"deleted_at": NULL or "2022-11-04 23:44",
"comment": [
{
"comment_id": 1,
"nickname": "gyo",
"password": "1234",
"desc": "먹으셈ㅇㅇ",
"create_at": "2022-10-31 21:44:23",
"likes": 11
}
]
}
'💡 Projects > 익명고민상담소 [대나무숲]' 카테고리의 다른 글
[대나무숲] 2. 부트스트랩 템플릿 / API 설계 / 협업 규칙 (0) | 2022.11.07 |
---|