@tastekim/chat-cli
Version:
๐ฌConnect with developers worldwide through an interactive terminal chat experience while you code!๐ป
244 lines (173 loc) โข 10.9 kB
Markdown
# ๐ฌ Chat CLI
<div align="center">
<img src="https://velog.velcdn.com/images/tastekim_/post/4bb7992d-70e9-4340-b588-559b90d7a0f8/image.png">
[](https://badge.fury.io/js/@tastekim%2Fchat-cli)
[](https://opensource.org/licenses/MIT)
[](https://nodejs.org/)
**A Chat CLI that lets you communicate with developers from all over the world while you're at work, naturally and unobtrusively.**
*ํฐ๋ฏธ๋๋ก ์
๋ฌด์ค์๋ ๋์น ์๋ณด๊ณ ์์ฐ์ค๋ฝ๊ฒ ์ธ์ ๋ชจ๋ ๊ฐ๋ฐ์์ ์ํตํ ์ ์๋ ์ฑํ
CLI*
[๐ Quick Start](#๐-quick-start) โข [โจ Features](#-features) โข [๐ Documentation](#-documentation) โข [โ Support](https://buymeacoffee.com/tastekim)
</div>
---
## ๐ Overview | ๊ฐ์
Chat CLI is a modern, terminal-based chat application that brings real-time communication directly to your command line. Built with TypeScript and powered by WebSocket technology, it offers a seamless and intuitive chat experience without leaving your terminal.
Chat CLI๋ ์ค์๊ฐ ์ปค๋ฎค๋์ผ์ด์
์ ๋ช
๋ น์ค๋ก ์ง์ ๊ฐ์ ธ์ค๋ ํ๋์ ์ธ ํฐ๋ฏธ๋ ๊ธฐ๋ฐ ์ฑํ
์ ํ๋ฆฌ์ผ์ด์
์
๋๋ค. TypeScript๋ก ๊ตฌ์ถ๋๊ณ WebSocket ๊ธฐ์ ๋ก ๊ตฌ๋๋๋ฉฐ, ํฐ๋ฏธ๋์ ๋ฒ์ด๋์ง ์๊ณ ๋ ์ํํ๊ณ ์ง๊ด์ ์ธ ์ฑํ
๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
## ๐ Quick Start | ๋น ๋ฅธ ์์
### Installation | ์ค์น
```bash
# Install globally | ์ ์ญ ์ค์น
npm install -g @tastekim/chat-cli
# Run immediately | ์ฆ์ ์คํ
chat-cli
```
### Basic Usage | ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
```bash
# Start chatting | ์ฑํ
์์
chat-cli
# Help | ๋์๋ง
chat-cli --help
```
## โจ Features | ๊ธฐ๋ฅ
### ๐ฏ Core Features | ํต์ฌ ๊ธฐ๋ฅ
- ๐ฌ **Real-time messaging** | ์ค์๊ฐ ๋ฉ์์ง
- ๐ผ๏ธ **Image sharing support** | ์ด๋ฏธ์ง ๊ณต์ ์ง์
- ๐ **Multiple chat rooms** | ๋ค์ค ์ฑํ
๋ฐฉ
- ๐ **Custom room creation** | ์ปค์คํ
๋ฐฉ ์์ฑ
- ๐ฅ **Multi-user support** | ๋ค์ค ์ฌ์ฉ์ ์ง์
- ๐ **Auto-reconnection** | ์๋ ์ฌ์ฐ๊ฒฐ
### ๐จ User Experience | ์ฌ์ฉ์ ๊ฒฝํ
- ๐ฅ๏ธ **Beautiful terminal UI with rounded borders** | ๋ฅ๊ทผ ํ
๋๋ฆฌ๋ก ์๋ฆ๋ค์ด ํฐ๋ฏธ๋ UI
- โจ๏ธ **Intuitive keyboard shortcuts** | ์ง๊ด์ ์ธ ํค๋ณด๋ ๋จ์ถํค
- ๐ฏ **Responsive layout** | ๋ฐ์ํ ๋ ์ด์์
- ๐ **Dynamic room switching** | ๋์ ๋ฐฉ ์ ํ
### ๐ ๏ธ Developer Features | ๊ฐ๋ฐ์ ๊ธฐ๋ฅ
- ๐ **WebSocket protocol** | WebSocket ํ๋กํ ์ฝ
- ๐ **Rich command-line interface** | ํ๋ถํ ๋ช
๋ น์ค ์ธํฐํ์ด์ค
- ๐ท๏ธ **TypeScript support** | ํ์
์คํฌ๋ฆฝํธ ์ง์
- ๐ฆ **Modern ES modules** | ํ๋์ ์ธ ES ๋ชจ๋
## ๐ Documentation | ๋ฌธ์
### Keyboard Shortcuts | ํค๋ณด๋ ๋จ์ถํค
| Shortcut | Action | ์ค๋ช
|
|----------|--------|------|
| `Ctrl + C` | Exit | ์ข
๋ฃ |
| `Enter` | Send message | ๋ฉ์์ง ์ ์ก |
| `Tab` | Toggle rooms/Commands | ๋ฐฉ ๋ชฉ๋ก ํ ๊ธ/๋ช
๋ น์ด |
| `Backspace` | Delete character | ๋ฌธ์ ์ญ์ |
| `Escape` | Exit | ์ข
๋ฃ |
### Chat Commands | ์ฑํ
๋ช
๋ น์ด
| Command | Action | ์ค๋ช
|
|---------|--------|------|
| `/help` | Show help | ๋์๋ง ํ์ |
| `/create-room` | Create new room | ์ ๋ฐฉ ์์ฑ |
| `/join <room>` | Join room | ๋ฐฉ ์ฐธ์ฌ |
| `/leave` | Leave current room | ํ์ฌ ๋ฐฉ ๋๊ฐ๊ธฐ |
| `/users` | List users | ์ฌ์ฉ์ ๋ชฉ๋ก |
| `/rooms` | List rooms | ๋ฐฉ ๋ชฉ๋ก |
| `/clear` | Clear chat | ์ฑํ
๊ธฐ๋ก ์ง์ฐ๊ธฐ |
| `/quit` | Exit app | ์ฑ ์ข
๋ฃ |
| `/1, /2, /3...` | Switch to room | ๋ฐฉ ๋ฒํธ๋ก ์ ํ |
### Room Management | ๋ฐฉ ๊ด๋ฆฌ
Chat CLI provides a modern, dynamic room management system:
Chat CLI๋ ํ๋์ ์ด๊ณ ๋์ ์ธ ๋ฐฉ ๊ด๋ฆฌ ์์คํ
์ ์ ๊ณตํฉ๋๋ค:
#### Starting with Lobby | ๋ก๋น์์ ์์
- **๐ Lobby** - Default starting room | ๊ธฐ๋ณธ ์์ ๋ฐฉ
- **๐ฅ Multi-user support** - See real-time user count | ์ค์๊ฐ ์ฌ์ฉ์ ์ ํ์ธ
- **๐ Auto-reconnection** - Seamless connection management | ์ํํ ์ฐ๊ฒฐ ๊ด๋ฆฌ
#### Room Features | ๋ฐฉ ๊ธฐ๋ฅ
- **๐ Public rooms** - Open to everyone | ๋ชจ๋ ์ฌ๋์๊ฒ ์ด๋ฆฐ ๊ณต๊ฐ ๋ฐฉ
- **๐ Private rooms** - Password protected | ๋น๋ฐ๋ฒํธ ๋ณดํธ ๋น๊ณต๊ฐ ๋ฐฉ
- **๐ฅ Real-time user count** - See who's online | ์ค์๊ฐ ์จ๋ผ์ธ ์ฌ์ฉ์ ์
- **๐ Dynamic room switching** - Switch between joined rooms | ์ฐธ์ฌํ ๋ฐฉ ๊ฐ ๋์ ์ ํ
- **๐ฌ Unread indicators** - Green dot for new messages | ์ ๋ฉ์์ง ์๋ฆผ (๋
น์ ์ )
#### Creating Rooms | ๋ฐฉ ์์ฑ
1. Use `/create-room` command | `/create-room` ๋ช
๋ น์ด ์ฌ์ฉ
2. Enter room name (1-15 characters) | ๋ฐฉ ์ด๋ฆ ์
๋ ฅ (1-15์)
3. Choose public or private | ๊ณต๊ฐ ๋๋ ๋น๊ณต๊ฐ ์ ํ
4. Set password if private | ๋น๊ณต๊ฐ์ธ ๊ฒฝ์ฐ ๋น๋ฐ๋ฒํธ ์ค์
#### Joining Rooms | ๋ฐฉ ์ฐธ์ฌ
1. Use `/join <room-name>` command | `/join <๋ฐฉ์ด๋ฆ>` ๋ช
๋ น์ด ์ฌ์ฉ
2. Enter password if required | ํ์์ ๋น๋ฐ๋ฒํธ ์
๋ ฅ
3. Switch between rooms using `/1`, `/2`, `/3`... | `/1`, `/2`, `/3`... ์ผ๋ก ๋ฐฉ ์ ํ
### Interface Layout | ์ธํฐํ์ด์ค ๋ ์ด์์
Chat CLI features a responsive, three-panel layout:
Chat CLI๋ ๋ฐ์ํ 3ํจ๋ ๋ ์ด์์์ ์ ๊ณตํฉ๋๋ค:
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ต Chat CLI - Room โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโค
โ ๐ Rooms โ ๐ฌ Chat โ ๐ฅ Users โ
โ โ โ โ
โ 1. # Lobby โ [Message bubbles with โ ๐ค You โ
โ (5) โข โ rounded borders] โ ๐ฅ Other โ
โ โ โ โ
โ 2. # Room2 โ ๐ญ typing indicator... โ โ
โ (2) โ โ โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโค
โ โ ๐ฌ Type a message... โ โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโ
```
#### Responsive Design | ๋ฐ์ํ ๋์์ธ
- **Wide terminals (80+ cols)**: Full 3-panel layout | ๋์ ํฐ๋ฏธ๋: ์ ์ฒด 3ํจ๋
- **Medium terminals (60-79 cols)**: 2-panel layout | ์ค๊ฐ ํฐ๋ฏธ๋: 2ํจ๋
- **Small terminals (<60 cols)**: Single chat panel | ์์ ํฐ๋ฏธ๋: ๋จ์ผ ์ฑํ
ํจ๋
### Configuration | ์ค์
User data is automatically managed:
์ฌ์ฉ์ ๋ฐ์ดํฐ๋ ์๋์ผ๋ก ๊ด๋ฆฌ๋ฉ๋๋ค:
```bash
~/.chat-cli/
โโโ config.json # User preferences | ์ฌ์ฉ์ ์ค์
โโโ user.json # User information | ์ฌ์ฉ์ ์ ๋ณด
```
## ๐ง Requirements | ์๊ตฌ์ฌํญ
- **Node.js** 22.14.0 or higher | 22.14.0 ์ด์
- **Terminal** with color support and Unicode | ์ปฌ๋ฌ ๋ฐ ์ ๋์ฝ๋ ์ง์ ํฐ๋ฏธ๋
- **Network connection** for real-time features | ์ค์๊ฐ ๊ธฐ๋ฅ์ ์ํ ๋คํธ์ํฌ ์ฐ๊ฒฐ
- **Minimum terminal size**: 60x15 characters | ์ต์ ํฐ๋ฏธ๋ ํฌ๊ธฐ: 60x15 ๋ฌธ์
## ๐จ Design Features | ๋์์ธ ํน์ง
### Modern UI Elements | ํ๋์ ์ธ UI ์์
- **๐จ Color-coded elements** - Intuitive color system | ์ง๊ด์ ์ธ ์์ ์์คํ
- **๐ฑ Responsive layout** - Adapts to terminal size | ํฐ๋ฏธ๋ ํฌ๊ธฐ์ ๋ง์ถฐ ์ ์
- **๐ฌ Message bubbles** - Chat-app style message display | ์ฑํ
์ฑ ์คํ์ผ ๋ฉ์์ง ํ์
- **๐ต Status indicators** - Visual connection and activity status | ์๊ฐ์ ์ฐ๊ฒฐ ๋ฐ ํ๋ ์ํ ํ์
### Typography & Icons | ํ์ดํฌ๊ทธ๋ํผ ๋ฐ ์์ด์ฝ
- **๐ Consistent typography** - Clear, readable text | ์ผ๊ด๋ ํ์ดํฌ๊ทธ๋ํผ
- **๐ฏ Contextual icons** - Meaningful visual cues | ์๋ฏธ ์๋ ์๊ฐ์ ๋จ์
- **๐ Gradient title** - Beautiful app branding | ์๋ฆ๋ค์ด ์ฑ ๋ธ๋๋ฉ
## ๐ค Contributing | ๊ธฐ์ฌํ๊ธฐ
We welcome contributions! Please feel free to submit a Pull Request.
๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค! ์ธ์ ๋ ์ง Pull Request๋ฅผ ์ ์ถํด ์ฃผ์ธ์.
1. Fork the repository | ์ ์ฅ์ ํฌํฌ
2. Create your feature branch | ๊ธฐ๋ฅ ๋ธ๋์น ์์ฑ
3. Commit your changes | ๋ณ๊ฒฝ์ฌํญ ์ปค๋ฐ
4. Push to the branch | ๋ธ๋์น์ ํธ์
5. Open a Pull Request | Pull Request ์ด๊ธฐ
## ๐ License | ๋ผ์ด์ ์ค
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ [LICENSE](LICENSE) ํ์ผ์ ์ฐธ์กฐํ์ธ์.
## ๐ Version History | ๋ฒ์ ๊ธฐ๋ก
### Latest Updates (v1.4.8+) | ์ต์ ์
๋ฐ์ดํธ
- **๐จ UI/UX Improvements** | UI/UX ๊ฐ์
- Rounded borders for all UI components | ๋ชจ๋ UI ์ปดํฌ๋ํธ์ ๋ฅ๊ทผ ํ
๋๋ฆฌ
- Enhanced visual consistency | ํฅ์๋ ์๊ฐ์ ์ผ๊ด์ฑ
- Better responsive design | ๊ฐ์ ๋ ๋ฐ์ํ ๋์์ธ
- **โก Performance Enhancements** | ์ฑ๋ฅ ํฅ์
- Optimized input handling | ์ต์ ํ๋ ์
๋ ฅ ์ฒ๋ฆฌ
- Improved WebSocket management | ๊ฐ์ ๋ WebSocket ๊ด๋ฆฌ
- Better memory usage | ํฅ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
- **๐ง Technical Improvements** | ๊ธฐ์ ์ ๊ฐ์
- Simplified input processing | ๋จ์ํ๋ ์
๋ ฅ ์ฒ๋ฆฌ
- Enhanced error handling | ํฅ์๋ ์ค๋ฅ ์ฒ๋ฆฌ
- Better code organization | ๊ฐ์ ๋ ์ฝ๋ ๊ตฌ์กฐ
## โ Support | ํ์
If you find this project helpful, consider buying me a coffee! Your support helps keep this project alive and enables continuous improvements.
์ด ํ๋ก์ ํธ๊ฐ ๋์์ด ๋์
จ๋ค๋ฉด ์ปคํผ ํ ์ ์ฌ์ฃผ์ธ์! ์ฌ๋ฌ๋ถ์ ํ์์ ์ด ํ๋ก์ ํธ๋ฅผ ์ง์์ํค๊ณ ์ง์์ ์ธ ๊ฐ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
<div align="center">
[](https://buymeacoffee.com/tastekim)
**[โ Buy me a coffee](https://buymeacoffee.com/tastekim)**
*Your generous support is greatly appreciated! | ์ฌ๋ฌ๋ถ์ ๋๊ทธ๋ฌ์ด ํ์์ ๊น์ด ๊ฐ์ฌ๋๋ฆฝ๋๋ค!*
</div>
---
<div align="center">
**Made with โค๏ธ by [tastekim](https://github.com/tastekim)**
*Chat CLI - Bringing conversations to your terminal | Chat CLI - ๋ํ๋ฅผ ํฐ๋ฏธ๋๋ก*
</div>