Metadata-Version: 2.4
Name: ric-chat-app
Version: 0.1.5
Summary: A small TLS-encrypted terminal chat app (server + curses client).
Author: Ricardo Carrillo
License: MIT
Project-URL: Homepage, https://github.com/rickycarrillo3/ric_chat_app
Project-URL: Repository, https://github.com/rickycarrillo3/ric_chat_app
Keywords: chat,tls,curses,sockets,terminal
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"

# ric-chat-app

A small, TLS-encrypted terminal chat app — a threaded socket **server** and a
**curses client**, plus a demo **time bot**. All traffic is encrypted and pinned
to a self-signed certificate (encryption + MITM protection).

## For chatters (install & run)

```bash
pip install ric-chat-app
join-chat
```

That's it — `join-chat` connects to the hosted server out of the box, over TLS.
Pick a name when prompted and start chatting. Type `!exit` to leave.

Want the current time in chat? If the time bot is running, send `!time`.

## Running your own server

The package ships only the `join-chat` client command. To host your own server,
clone the repo and run the server module directly:

```bash
pip install ric-chat-app
# generate the server's key pair (see DEPLOYMENT.md for the exact command)
python -m ric_chat.server
```

Point clients at your server with an environment variable or a `.env` file in the
directory you run from:

```bash
CHAT_MODE=remote SERVER_HOST=<your.server.ip> join-chat
# or CHAT_MODE=local for a server on 127.0.0.1
```

## Commands

| Command        | What it does                                  |
|----------------|-----------------------------------------------|
| `join-chat`    | Launches the curses chat UI (the only installed command) |

Self-hosters run the server and demo bot as modules:
`python -m ric_chat.server` and `python -m ric_chat.bots.time_bot`.

## Developing

```bash
git clone https://github.com/rickycarrillo3/ric_chat_app
cd ric_chat_app
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest
```

See **[DEPLOYMENT.md](DEPLOYMENT.md)** for the full picture: how TLS pinning works,
the package layout, the CI/CD pipeline, and how to deploy/update the VPS.
