Postr-TUI
Postr-TUI is a terminal-based blog and forum client built with Python and Textual, and database support for both PostgreSQL and SQLite.
It allows users to connect to a public hosted server, run their own private local server, or connect to a custom server URL. Users can register, log in, create posts, reply to posts, delete their own content, and use a remembered login system.
Features
- Terminal user interface built with Textual
- Public, private, and custom server modes
- User login and registration
- Remember-me system using local config and system keyring
- Create, view, edit, and delete posts
- Author-only post editing and deletion
- Create and view replies
- Selectable replies
- Author-only reply deletion
- Admin moderation support for deleting inappropriate posts/replies
- Public hosting support with Railway
- PostgreSQL support for hosted deployment
- SQLite fallback for private local hosting
- Packaged for installation from PyPI as
postr-tui
Installation
Install from PyPI:
pip install postr-tui
Server Mode
When Postr-TUI starts, you can choose how to connect.
Public Mode
In thsi mode you connect to a public server where people can post and reply to blogs etc.
Private Mode
In this mode you connect to your own local server if you want to run one yourself, it will connect to:
http://127.0.0.1:5000
as a default.
Custum Mode
Allows you to enter any compatible Postr server URL.
This is useful for self-hosting, testing, or connecting to a server hosted elsewhere.
Running a Private Local Server
git clone https://github.com/Chi-ChunL/Postr.git
cd Postr
Install dependencies:
pip install -r requirements.txt
And then run the server:
python -m server.server
Then now you can run the client at another terminal or another device by doing:
python -m client.main
Database Support
Postr supports two main database modes.
###PostgreSQL if DATABASE_URL is set, Postr uses PostgreSQL
###SQLite If DATABASE_URL is not set, Postr automatically falls back to SQLite.
This is intended for local private hosting.
The local database file is created as:
postr.db
Project Structure
Postr/
├── client/
│ ├── __init__.py
│ ├── main.py
│ ├── features.py
│ ├── login.py
│ ├── serverSelect.py
│ ├── config.py
│ ├── credentials.py
│ └── postr.tcss
├── server/
│ ├── __init__.py
│ ├── server.py
│ ├── db.py
│ └── auth.py
├── .github/
│ └── workflows/
│ └── publish.yml
├── pyproject.toml
├── requirements.txt
├── README.md
└── .gitignore
Main Controls
| Key | Action |
|---|---|
N |
Create a new post |
E |
Edit selected post, or reply |
D |
Delete selected post |
C |
Show or hide reply composer |
Shift + Enter |
Submit reply |
X |
Delete selected reply |
R |
Reload posts |
L |
Log out / switch account |
Esc |
Back / quit |
Login And Registration
Postr includes a login screen with seperate Login and Register tabs.
- Use the left and right arrow keys to switch between tabs.
- Press Enter in the username or password field to submit.
- Use the Remember Me option to save login details locally.
- Passwords are stored using the system keyring, not directly inside the config file.
Remember Me System
Postr stores non-sensitive settings in a local config file such as:
- last username
- last server URL
- remember-me preference
Passwords are stored seperately and all passwrods are hashed
Current Status
Postr-TUI currently supports:
- hosted public server mode
- private local server mode
- custom server mode
- posting
- replies
- selectable reply deletion
- author-only edit/delete permissions
- admin moderation
- PyPI installation
- GitHub Actions publishing
Security Notice
This is an App in development and there may be vulnerablility that is unknown to me, if you want to add something, open an issue or PR on my (GitHub)
Metadata
Release files for postr-tui 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| postr_tui-0.1.5.tar.gz | 17.1 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| postr_tui-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.6 kB
Release files / postr_tui-0.1.5.tar.gz
| Download URL | postr_tui-0.1.5.tar.gz |
|---|---|
| Size | 17.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8006c9b704a6b89e9f763fb6ef8aae463e0bc1c99c1f8d60e2b6596e85b63e12
|
|
BLAKE2b-256 checksum How to use checksums |
6749777782912c2b2c96df8ae4ea1cece3ff33a2cbdd3cf145eb9fbf98a009e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 29, 2026.
Transparency logRelease files / postr_tui-0.1.5-py3-none-any.whl
| Download URL | postr_tui-0.1.5-py3-none-any.whl |
|---|---|
| Size | 18.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
030d6735c6a7f423e46541ced00f7da4d18d190b20c85e4efc0e1a8417592735
|
|
BLAKE2b-256 checksum How to use checksums |
87495faae45436c990bf0baecf9975dbcd1f574652b55be1efe9f01ac49225f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 29, 2026.
Transparency logSecurity for postr-tui 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for postr_tui-0.1.5.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 29, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.