transient.chat/README.md
2026-05-12 18:50:49 -05:00

3.2 KiB

Transient Chat

Everything is ephemeral.

Transient.chat is a lightweight, in-memory chat platform designed for real-time, impermanent conversation.

There are no profiles. No feeds. No likes.
Just temporary rooms, simple handles, message expiration, and live synced watchrooms.


About

  • All messages automatically disappear after 1 hour
  • Empty rooms are purged — nothing is saved
  • Users are identified by transient handles, released when inactive
  • No databases, no disk writes, no persistence of any kind
  • Watchrooms allow embedded synced YouTube viewing and conversation
  • Works without WebSockets using traditional HTTP polling

This project is a throwback to early internet chatrooms — lightweight, anonymous, and inherently temporary.

Perfect for those who miss casual chat with no expectations or archives.


Features

  • Regional and topical chatroom lists
  • Synchronized YouTube playback in "watchparty" mode
  • Ephemeral message and session design
  • Audio indicators and user join/leave sounds
  • Owner moderation (kick users from rooms)
  • Admin panel for IP/username bans
  • Admin routes protected by environment-based Basic Auth
  • No database dependency (runs entirely in volatile memory)

Deployment

This app is intended to be deployed on DigitalOcean App Platform
as a Python Flask application.

You should:

  • Point DigitalOcean to this repo
  • Specify Python as the runtime
  • Set environment variables for your admin login:
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
│   └── cleanup.py     # Background cleanup thread
├── blueprints/        # Modular route definitions
│   ├── auth.py
│   ├── chat.py
│   ├── rooms.py
│   ├── admin.py
│   ├── watchparty.py
│   └── static_routes.py
├── static/
│   ├── index.html
│   ├── chat.html
│   ├── watchparty_chat.html
│   ├── server_list.html
│   ├── faq.html
│   ├── admin.html
│   └── assets/        # Frontend resources
│       ├── css/       # Stylesheets
│       │   └── styles.css
│       ├── js/        # JavaScript files
│       │   ├── admin.js
│       │   ├── chat.js
│       │   ├── faq.js
│       │   ├── index.js
│       │   ├── server_list.js
│       │   └── watchparty_chat.js
│       ├── sounds/    # .wav audio clips
│       │   ├── user-in.wav
│       │   ├── user-out.wav
│       │   └── message.wav
│       └── favicon.ico
└── requirements.txt   # Python dependencies

Contributing

Pull requests and issues are welcome.

If you'd like to add features, improve styling, or help build out exportable modules, feel free to fork and contribute to the project.


Nothing is archived.
Nothing is retained.
Everything is ephemeral.