transient.chat/README.md

94 lines
4.1 KiB
Markdown
Raw Normal View History

2026-05-12 23:50:49 +00:00
# Transient Chat
> Everything is ephemeral. Encryption first.
2026-05-12 23:50:49 +00:00
**Transient.chat** is a lightweight, encryption-first in-memory chat platform designed for real-time, impermanent conversation.
2026-05-12 23:50:49 +00:00
There are no profiles. No feeds. No tracking. No persistent databases.
Just on-demand private encrypted rooms, zero plaintext in server memory, message expiration, and integrated toggleable watch parties.
2026-05-12 23:50:49 +00:00
---
## About
- **Encryption-First:** Client-side zero-knowledge E2EE using AES-256-GCM and PBKDF2 (100,000 iterations). All text and voice messages are encrypted in browser before sending.
- **Encrypted In-Memory Storage:** The server only ever holds ephemeral ciphertext and IVs in memory. No plaintext or raw audio is ever stored in memory or written to disk.
- **On-Demand Private Rooms:** Rooms are created on demand and protected by passwords.
- **Active Server Browser:** The server browser exclusively lists active rooms currently occupied by users.
- **Integrated Watch Party:** Any room can toggle YouTube synchronized playback on and off in real time.
- **Ephemeral Voice Notes:** Record and send encrypted voice messages with optional autoplay.
- **1-Hour Expiration & Room Purge:** Messages expire after 1 hour. When all users leave a room, the room, its password, video state, and messages vanish completely.
2026-05-12 23:50:49 +00:00
---
## Features
- Zero-knowledge end-to-end encryption without complicated keyring management
- Ephemeral in-memory ciphertext storage (zero plaintext)
- On-demand room creation and password verification
- Active-only server browser
- Integrated YouTube Watch Party toggle in all rooms
- Ephemeral audio notes (WebM / Opus) with optional autoplay
- Room owner moderation (kick users)
- Admin dashboard for IP/username bans and system notifications
- Pure Vanilla CSS and lightweight modern architecture
2026-05-12 23:50:49 +00:00
---
## Deployment
This app is intended to be deployed on **[DigitalOcean App Platform](https://www.digitalocean.com/products/app-platform/)** or any container/PaaS as a Python Flask application.
2026-05-12 23:50:49 +00:00
Set environment variables for admin login:
2026-05-12 23:50:49 +00:00
```env
ADMIN_USERNAME=your_admin_name
ADMIN_PASSWORD=your_secure_password
```
---
## Project Structure
```
transient.chat/
├── app.py # Flask app factory and launcher
├── config.py # Loads environment variables
├── models/
│ ├── state.py # In-memory shared state & password hashing
│ └── cleanup.py # Background cleanup thread for empty rooms & expired msgs
2026-05-12 23:50:49 +00:00
├── blueprints/ # Modular route definitions
│ ├── auth.py # Handle registration and token validation
│ ├── chat.py # Encrypted message relay and polling
│ ├── rooms.py # Active rooms browser and password join/create
│ ├── admin.py # Admin dashboard endpoints
│ ├── watchparty.py # YouTube synchronized playback control
2026-05-12 23:50:49 +00:00
│ └── static_routes.py
├── static/
│ ├── index.html # Landing page & handle registration
│ ├── chat.html # Unified encrypted chat & watch party interface
│ ├── server_list.html # Active rooms server browser & room creation
│ ├── faq.html # Frequently asked questions & security details
│ ├── admin.html # Admin dashboard interface
2026-05-12 23:50:49 +00:00
│ └── assets/ # Frontend resources
│ ├── css/ # Vanilla CSS stylesheets
│ │ ├── styles.css
│ │ ├── chat.css
│ │ ├── watchparty.css
│ │ └── admin.css
│ ├── js/ # Frontend JavaScript
│ │ ├── crypto.js # Web Crypto API (PBKDF2 + AES-GCM)
│ │ ├── chat.js # Unified encrypted chat & watch party
│ │ ├── server_list.js # Active rooms & password join modal
2026-05-12 23:50:49 +00:00
│ │ ├── index.js
│ │ └── admin.js
│ ├── sounds/ # Notification audio clips (.wav)
│ └── images/ # Logos and branding
2026-05-12 23:50:49 +00:00
└── requirements.txt # Python dependencies
```
---
Nothing is archived.
Nothing is retained.
**Everything is ephemeral.**