은둔형 청년을 위한 커뮤니티
1주차: 앱 기획 목표 수립, 요구사항 분석 및 역할 분담
2주차: 핵심 기능 정의 확정 및 초기 설계 작업
3주차: API 연동 설계 및 연동 준비 작업
4주차: 프론트–백엔드 API 연동 및 데이터 전처리
5주차: 회원가입 및 로그인 기능 완성, 인증 시스템 구축
6주차: 커뮤니티 모집글(소모임/소통글) 등록 및 조회 기능 구현
7주차: 게시글 상세 보기 및 1:1 매칭/참여 신청 기능 구현
8주차: 댓글/대댓글 기능 구현 및 연동
9주차: 실시간 소통 기능 고도화 및 안정성 테스트
10주차: 전체 기능 통합 테스트 및 오류 대응 시스템 구축
11주차: 사용자 피드백 수집 및 서비스 안정성 강화
12주차: 서비스 최적화 및 오류 최소화
13주차: 앱 최종 점검 및 사용자 테스트 수행
spring security랑 JWT를 이용한 토큰 기반의 인증 방식으로 설계
반환 메시지는 사용자 요청에 맞게 고려하여 정한다.
-
로그인 요청
사용자가 ID와 패스워드를 입력하고 로그인 버튼을 클릭하면,
클라이언트는 서버의 로그인 API (예:POST /api/auth/login)로 요청을 전송한다. -
사용자 조회
- Spring Security의
UserDetailsService는 요청된 ID를 기반으로 DB에서 사용자 정보를 조회한다. - ID가 존재하지 않으면 인증 실패(
401 Unauthorized)와 메시지를 반환한다.
- Spring Security의
-
패스워드 검증
- 사용자가 존재할 경우,
PasswordEncoder가 입력된 패스워드와 DB 저장 암호화 패스워드를 비교한다. - 불일치 시, 인증 실패 메시지를 반환한다.
- 사용자가 존재할 경우,
-
인증 성공 처리
- 패스워드 검증 성공 시, 인증 완료.
- 서버는 사용자 정보를 기반으로 Access Token과 Refresh Token(JWT)을 생성.
- 생성된 토큰을 ResponseBody로 전달하고, 클라이언트는 이를 저장·관리한다.
- 필수 필드: 이름, 휴대폰 번호, ID, 패스워드, 패스워드 재확인
- 선택 필드: 주소
- 클라이언트에서
GET /api/users/check-id?id={userId}호출. - 성공: "사용 가능한 아이디입니다."
- 실패: "이미 존재하는 아이디입니다."
- 필수 필드 비어있지 않은지 확인.
- 고유값(ID, 휴대폰 번호) 중복 여부 확인.
- 패스워드와 패스워드 재확인 값 일치 여부 확인.
-
회원가입 요청
- 사용자가 모든 정보를 입력 후
POST /api/users/signup요청 전송.
- 사용자가 모든 정보를 입력 후
-
유효성 검증
- 실패 시: 사유와 함께
400 Bad Request반환.
- 실패 시: 사유와 함께
-
패스워드 암호화
PasswordEncoder(예:BCryptPasswordEncoder)로 패스워드 암호화.
-
DB 저장
- 해시된 패스워드를 포함해 사용자 정보를 DB에 저장.
-
성공 응답
201 Created반환.
`
- 통신 프로토콜:
websocket또는sockjs사용. - 메시징 프로토콜:
stomp사용. - 실시간성 보장: Redis 사용.
- 채팅방 생성 가능.
- 생성된 채팅방 목록 확인 가능.
- 채팅방 이름 클릭 시 입장 가능.
- 채팅방에서 메시지 전송 및 수신 가능.
- 사용자 간 양방향 통신 보장.
- 채팅방은 일정 간격으로 자동 새로고침 → 실시간 갱신.