# 핵심 요구사항 추출
- 요구사항을 정확히 추출해내지 못하여 구현 하는 도중에 계속 요구사항이 추가적으로 발생한다.
- 타겟층 : 사이드 프로젝트 및 스터디를 함께할 사람들을 필요로 하는 주니어 개발자
- 핵심 요구사항
- 활동을 개설할 수 있다.
- 스터디
- 사이드 프로젝트
- 그 외 또 추가될 수 있음.. (해커톤, 교육)
- 참가하고자 하는 활동을 구할 수 있다.
- 활동에서 발생하는 산출물들을 한눈에 확인할 수 있다.
- 활동의 일정을 조율할 수 있다.
## 용어정리
- 활동
- 스터디나 프로젝트 항목의 바로 하위 항목
- '어떤 주제'의 스터디나, '어떤 주제'의 프로젝트를 의미한다.
- 정의되어야 할 활동 내용
- 세션
- 활동 중에 물리적으로 진행되는 모임의 단위를 말한다.
- 활동 운영자의 재량으로, 참가자의 의사를 반영하여 생성할 수 있다.
- 정의되어야 할 세션 내용
## 유스케이스에 따른 기능 정리
### 0. [사용자] 전체 사용자
- 활동을 검색할 수 있다.
- 활동명을 통한 검색
- 필터를 통한 검색
- 산출물을 조회할 수 있다.
- 공개된 산출물 확인 O
- 공개되지 않은 산출물 확인 X
- 로그인 가능
### 1. [로그인 전 사용자] 전체 방문자
- 회원가입 가능
- 로그인 전 사용자는 마이페이지 X
### 2. [로그인 사용자] 전체 사용자
- 본인의 정보를 수정할 수 있다.
- 프로필 사진
- 이름
- 기술 스택 뱃지
- (이메일은 변경 불가능)
- 비밀번호 (변경 시 인증 필요)
- 휴대폰 번호 (변경 시 인증 필요)
- 탈퇴할 수 있다.
- 특정 활동에 대한 댓글을 달 수 있다.
- 산출물에 대한 댓글을 달 수 있다.
- 타 사용자의 정보를 부분적으로 확인할 수 있다.
### 2. [로그인 사용자] 활동 운영자 -> admin
- 남이 쓴 글 삭제 X (활동 참가자더라도)
- 남이 쓴 활동에 대한 댓글 삭제 X
#### 2.1 활동을 개설할 수 있다.
- 활동 상세 정보의 등록
- 상세 정보에 지원 시 지원 동기 같은 항목으로 무엇을 적어야 할 지...
#### 2.2 활동을 관리할 수 있다.
- 운영중인 활동들을 모아서 조회할 수 있다.
- 활동 상세 정보의 수정
- 활동 참가 요청 수락/거절할 수 있다.
- 참가자의 정보를 조회할 수 있다. (이름, 관심스택, 자기소개, 도주횟수 + 지원 시 적은 지원동기 등..)
- 활동 시작과 종료를 선언할 수 있다.
#### 2.3 활동 세션을 개설할 수 있다.
- 활동 세션 정보의 등록
#### 2.4 활동 세션을 관리할 수 있다.
- 활동 세션 정보의 수정
- 세션 내 산출물들에 대해
- 조회 O
- 삭제 X
- 수정 X
### 3. [로그인 사용자] 활동 참가자 -> participant
#### 3.1 마음에 드는 활동을 찜해둘 수 있다.
#### 3.2 참여활동들을 모아서 조회할 수 있다.
#### 3.3 활동에 지원할 수 있다.
- 지원시 폼을 작성할 수 있다.
- 한번 작성한 답변은 수정할 수 없다.
#### 3.4 활동을 탈퇴할 수 있다.
#### 3.5 활동 세션에 산출물을 작성할 수 있다.
- 산출물 생성
- 산출물 공개 범위 적용
- 비공개 -> 산출물이 속해 있는 활동 참가자들 끼리만 확인 가능
- 공개 -> 모두 확인 가능 (로그인 하든 안하든)
#### 3.6 산출물을 관리할 수 있다.
- 산출물 수정
- 공개 범위의 수정도 가능
- 산출물 삭제
#### 3.7 산출물들을 조회할 수 있다.
- 참여한 활동의 다른 산출물들을 조회할 수 있다.
#### 3.8 산출물을 찜해 볼 수 있다.
### 4. [관리자] 페이지 관리자
## 추가적인 의견들
- 거절당하면 재신청하기 버튼으로
- 사용자 레벨 부여
- 사용자 프로필 이미지위에 마우스 호버시 사용자의 공개 가능한 간략한 정보 제공
- 댓글에 대한 신고 기능의 적용
- 산출물 인기순 조회 기능