- 실시간 채팅
- 사용자는 제목을 포함하여 채팅방을 생성할 수 있습니다.
- 사용자는 1명 이상의 사용자와 실시간으로 채팅할 수 있습니다.
- 메시지는 실시간으로 전송되어야 하며, 채팅 참여자가 채팅방의 이전 모든 메시지와 새로운 메시지를 볼 수 있습니다.
- 사용자는 30분 내 접속자 수를 알 수 있습니다.
- 30분 내 접속자 수 기준으로 채팅 목록 정렬
- 채팅 목록은 30분 내에 접속한 사용자 수의 내림차순으로 정렬됩니다.
- 채팅 목록에 최근 메시지 노출
- 채팅 목록에는 해당 채팅방의 가장 최근 메시지가 노출됩니다.
- 최근 메시지는 실시간으로 업데이트되어야 하며, 새로운 메시지가 도착할 때마다 자동으로 변경되어야 합니다.
- 데이터베이스 관리
- 데이터베이스 구조는 효율적이고 확장 가능해야 합니다.
- 2개 이상의 데이터베이스를 사용해도 무관합니다.
- 사용자 관리
- 각 사용자는 고유한 식별자(ID)를 가지고 있어야 합니다.
- 회원가입 및 로그인은 구현하지 않아도 되며, 임의의 사용자 ID가 있다고 가정합니다.
- 테스트
- 각 기능은 적절한 테스트를 거쳐야 합니다.
- 원하는 기술 스택과 설계 방식을 선택하여 과제를 진행하시면 됩니다.
- 모든 요구 사항을 다 구현하지 않았더라도, 가능한 선까지 개발 후 제출 부탁드립니다.
- 요구 사항 외 구현하고 싶으신 부분이 있으면 추가적으로 구현해도 무관합니다.
- 과제에는 README 파일을 포함하여 실행 방법을 기술해주세요.
- 개발 과정 중 필요한 가정이 있다면, 해당 가정을 README에 기록해주세요.
- 완성된 프로젝트를 GitHub에 업로드하고, URL을 제출해 주세요.
- Kotlin, Spring Boot, Websocket, MongoDB, Redis, JPA
/chat-server
├── docker
├── http
├── src
│ ├── main
│ │ ├── chat
│ │ │ ├── api
│ │ │ ├── config
│ │ │ ├── handler
│ │ │ ├── model
│ │ │ ├── service
│ │ ├── user
│ │ │ ├── api
│ │ │ ├── model
│ │ │ └── service
└── build.gradle
/docker
폴더에서docker-composes.yml
파일로 mongod, redis 로컬에서 실행 후 서버를 기동합니다./http
폴더에서 엔드포인트 별 테스트를 진행합니다.