**1. 프로젝트 개요**
	*** 프로젝트 목적 및 필요성**
	저희 프로젝트는 교내 동아리원 모집을 위해 홍보 포스터 제작과 반별 포스터 부착, 
  그리고 동아리원의 기본 정보를 받기 위한 구글폼 이용 등의 불편함이 있었고 중복 
  지원 문제점을 개선하고자 “봉양 클럽” 프로젝트를 기획하게 되었습니다.
	
	문제점
	- 동아리 홍보를 하기 위해 홍보 포스터를 만들어야 함
	- 각 반마다 홍보 포스터 부착해야 함
	- 동아리원 모집을 위해 구글폼을 사용해야 함
	- 동아리를 중복 지원하는 사람이 생길 수 있음

	*** 프로젝트 제작 범위**
	일반 사용자
	- 로그인(조수빈)
	- 메인 페이지(조수빈)
	- 동아리 홍보 상세 확인 및 신청(조수빈)
	- 비밀번호 변경 페이지(임준형)
	- 동아리 생성 페이지(임준형)
	- 동아리 홍보 신청 페이지(임준형)
	- 동아리 홈페이지(임준형)
	  - 동아리 공지 확인
	  - 동아리 탈퇴
	- 동아리 일지 작성 페이지(임준형)
	
	동아리장
	- 동아리 홈페이지(임준형)
	  - 동아리장 변경
	  - 동아리 공지 등록
	  - 동아리 홍보 신청
	  - 동아리원 가입 신청 확인
	  - 동아리원 확인
	
	관리자
	- 동아리원 신청 수락/거절 페이지(조수빈)
	- 동아리 생성 신청 수락/거절 페이지(조수빈)

	*** 프로젝트 제작 일정**
	3월
	- 기획
		- 프로젝트 기획
		- 기능적 요구사항 명세
		- 프로젝트 일정 계획
	- 디자인
		- 동아리 생성 페이지
		- 동아리 홍보 신청 페이지
		- 동아리 홈 페이지
		- 비밀번호 변경 페이지(재)
		- 메인페이지
		- 로그인
	- 백엔드
		- 로그인
		- JSON 데이터를 한글 파일로 변환
		- 데이터베이스 ERD 작성
		- 데이터베이스 테이블 정의
	
	4월
	- 디자인
		- 동아리 일지 작성 페이지
		- 동아리원 확인 페이지
		- 동아리 공지 등록 페이지
		- 동아리원 신청 수락 거절 페이지
		- 동아리 생성 신청 수락 거절 페이지
		- 동아리 홍보 상세 확인 및 신청
		- UX 테스트
	- 프론트엔드
    - 로그인
    - 메인페이지
    - 비밀번호변경
    - 동아리 일지 작성
	- 백엔드
    - 회원가입(엑셀 데이터를 데이터베이스에 저장)
    - 동아리 생성 신청
    - 동아리 홍보 신청
	
	5월
	- 프론트엔드
    - 메인페이지
    - 동아리원 확인
    - 동아리원 신청 수락 거절
    - 동아리 생성 신청 수락 거절
    - 동아리 홍보 상세 확인 및 신청
    - 동아리 홈
    - 동아리 홍보 신청
    - 동아리 생성
    - 동아리 공지 등록
	- 백엔드
    - 학생 → 동아리 신청
    - 동아리 일지 작성
    - 비밀번호 변경

	6월
	- 프론트엔드
    - 반응형 테스트
    - 유지보수
	- 백엔드
    - SMS 알림 구현
    - 웹 소켓 개발
    - 유지보수

**5. 기술적 문제**
	*** 기술적 문제 및 도전과제**
	백엔드
	- 각종 데이터를 엑셀로 받아와 데이터베이스에 일괄적으로 저장하는 기능
	- 클라이언트에서 받은 JSON 데이터를 한글 파일로 변환하는 기능
	- 시스템에서 사용자에게 알림 전송 기능
	
	프론트엔드
	-  서비스의 UI가 다양한 크기와 해상도의 장치(휴대폰, PC)에서 적절하게 표시되어야 함
	- life cycle 최적화가 되지 않아 로딩 속도가 느려져 사용자 경험이 나빠질 수 있음
	- 구버전의 브라우저에서 제공하지 않는 style을 사용하여 css가 적용되지 않을 수 있음
	- 코드를 구조화 하지 않으면 유지보수가 어려워 질 수 있음

	*** 기술적 해결책 및 방법론**
	백엔드
	- Apache POI 라이브러리를 이용하여 엑셀 데이터를 읽어서 DB에 저장
	- WebSocket을 이용하여 이용하여 어떠한 이벤트가 발생했을때 사용자에게 알림이 전달되도록 함
	- ALIGO API를 이용한 사용자 SMS알림 구현
	
	프론트엔드
	- 레이아웃 설계시 휴대폰과 컴퓨터 두가지로 나누어 디자인함
	- 함수 재호출이 되는 부분을 최소화을 확인하여 코드 최적화
	- 구버전의 브라우저에서 제공하지 않는 css style를 확인하며 사용을 지양
	- 코드를 구조화하고 어디에 사용되는지 이해하기 쉬운 네이밍을 사용

**6. 프로젝트 관리**
	*** 프로젝트 관리 계획**
	백엔드
	- 예상치 못한 오류를 예방하기 JUnit을 이용하여 테스트 코드를 작성하여 테스  트 진행
	- 사용자의 보안을 강화하기 위해 인증을 개선하고 예외 처리 진행
	- 응답 속도 및 확장성을 높이기 위해 DB 쿼리 개선
	- Swagger를 이용하여 API 명세서 작성
	
	프론트엔드
	- 사용자에게 받은 피드백을 반영하여 UX/UI를 개선
	- 휴대폰, PC를 제외한 다양한 크기와 해상도 장치에 맞춰 반응형 디자인 개선
	- 로딩시간이 길어질 경우 실행속도가 지연 되는 곳을 확인 후 효율적으로 서버의 데이터를 보여 줄 수 있는 방법으로 개선

	*** 위험 관리 계획**
	- 로그인: 비밀번호 유효성 검사 및 로그인 시도 제한 등을 설정
	
	- JSON 데이터를 한글 파일로 변환: 파일의 크기와 형식을 제한하여 서버 과부화 및 무분별한 리소스 낭비를 예방
	
	- 동아리 생성 신청 및 동아리 홍보 신청: 권한 없는 사용자가 동아리 생성 신청 또는 홍보 신청을 하지 못하도록 권한 확인
	
	- 비밀번호 변경: 비밀번호 유효성 검사를 실시하고, 비밀번호 변경 시도 제한
	
	- CORS 헤더를 설정하여 승인되지 않은 외부 사이트의 API 요청을 차단