Rocket.Chat에서 영감을 받아 만든 실시간 메신저 애플리케이션입니다.
- 실시간 채팅: WebSocket을 사용한 실시간 메시지 전송
- 다중 채널: 여러 채널을 생성하고 전환할 수 있습니다
- 사용자 관리: 온라인 사용자 목록 확인
- 직관적인 UI: Rocket.Chat 스타일의 모던한 인터페이스
- 시스템 메시지: 사용자 입장/퇴장 알림
- 메시지 히스토리: 이전 메시지 기록 조회
- FastAPI: 현대적인 Python 웹 프레임워크
- WebSocket: 실시간 양방향 통신
- Pydantic: 데이터 검증 및 모델링
- Uvicorn: ASGI 서버
- HTML5/CSS3: 모던 웹 표준
- JavaScript (Vanilla): 순수 자바스크립트
- WebSocket API: 실시간 통신
- Python 3.8 이상
- pip (Python 패키지 관리자)
pip install -r requirements.txtpython main.py또는 uvicorn으로 직접 실행:
uvicorn main:app --host 0.0.0.0 --port 8000 --reloadhttp://localhost:8000
python_test/
├── main.py # FastAPI 메인 서버
├── models.py # 데이터 모델 (Pydantic)
├── requirements.txt # Python 의존성
├── README.md # 프로젝트 문서
└── static/ # 정적 파일
├── index.html # 메인 HTML
├── style.css # 스타일시트
└── app.js # 클라이언트 JavaScript
- 로그인: 사용자 이름을 입력하고 "입장하기" 클릭
- 채널 선택: 왼쪽 사이드바에서 채널을 클릭하여 이동
- 메시지 전송: 하단 입력창에 메시지를 입력하고 전송
- 새 채널 만들기: "+" 버튼을 클릭하여 새 채널 생성
GET /: 메인 페이지GET /api/channels: 모든 채널 목록 조회POST /api/channels: 새 채널 생성GET /api/channels/{channel_name}/messages: 채널의 메시지 조회GET /api/users: 모든 사용자 조회
WS /ws/{channel_name}/{username}: 실시간 채팅 연결
- TEXT: 일반 텍스트 메시지
- SYSTEM: 시스템 메시지
- JOIN: 사용자 입장 메시지
- LEAVE: 사용자 퇴장 메시지
WebSocket을 사용하여 모든 사용자에게 즉시 메시지가 전달됩니다.
여러 채널을 만들고 자유롭게 전환할 수 있습니다. 각 채널은 독립적인 대화 공간입니다.
현재 버전은 인메모리 저장소를 사용합니다. 서버 재시작 시 데이터가 초기화됩니다.
- 데이터베이스 연동 (MongoDB, PostgreSQL)
- 사용자 인증 (JWT)
- 파일 업로드 기능
- 프라이빗 메시지 (DM)
- 메시지 검색 기능
- 이모지 및 리액션 지원
- 알림 기능
- 모바일 반응형 디자인 개선
MIT License
이 프로젝트는 Rocket.Chat에서 영감을 받았습니다.
버그 리포트, 기능 제안, Pull Request를 환영합니다!
질문이나 제안사항이 있으시면 이슈를 생성해주세요.