From 37326b9535e1aca85bf29ec788970d4adf6dd5a5 Mon Sep 17 00:00:00 2001 From: CaffeineFueled Date: Mon, 25 May 2026 18:51:29 +0200 Subject: [PATCH] docs: CHANGE feature overview + ADD feature information to /system/info page #22 --- README.md | 43 ++++++++++++++++++++++++------------------- app.py | 12 ++++++++++++ 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 2deca5a..3fe4b37 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Aukpad -Simple **live collaboration notepad** with websockets and FastAPI. +Simple **temporary live collaboration notepad** with websockets and FastAPI — pads expire automatically after a configurable retention period. [Issue tracker](https://git.uphillsecurity.com/cf7/aukpad/issues) | `Libera Chat #aukpad` @@ -16,23 +16,34 @@ The goal is to keep it simple! For feature-rich solutions please check out [hedg ## Features **Use cases:** -- shared notepad on multiple machines +- shared notepad across multiple machines - collaboration on the same notepage with multiple people (notes, config, etc) -- config changes in aukpad > `curl -o app.conf https://aukpad.com/{pad_id}/raw` > change config in aukpad > repeat `curl` command +- piping configs: `curl -o app.conf https://aukpad.com/{pad_id}/raw` → edit in aukpad → repeat -**Available**: -- live collab notepad -- line numbers -- custom path `{pad_id}` for more privacy (1–64 chars, `[a-zA-Z0-9_-]`) -- optional caching with valkey/redis -- pad creation with HTTP post requests with curl (see *Usage*) -- `{pad_id}/raw` HTTP endpoint -- optional password protection (HTTP endpoint accessible with GET /{pad_id}/raw?pw=mysecurepasswordhunter2) +**Editor:** +- real-time WebSocket collaboration with cursor preservation across remote edits +- per-pad password protection (PBKDF2-SHA256), with a built-in password generator in the UI +- line numbers; Tab inserts 4 spaces +- dark / light mode (auto-detects system preference, manual toggle) +- copy-to-clipboard and "new pad" buttons, live peer count in the header -**Ideas**: +**Endpoints:** +- custom pad path `{pad_id}` (1–64 chars, `[a-zA-Z0-9_-]`); auto-generated IDs are 8-char `[a-z0-9]` +- `POST /` — create a pad from request body (curl-friendly, see *Usage*) +- `GET /{pad_id}/raw` — raw text (auth via `?pw=…` for protected pads) +- `GET /system/info` — instance configuration page +- WebSocket `/ws/{pad_id}` — live collaboration + +**Deployment:** +- optional Valkey/Redis cache for cross-restart persistence +- configurable text-size, connection, room, and retention limits +- per-IP rate limiting (pad creation + failed password attempts), reverse-proxy aware +- distroless, non-root, read-only-rootfs container image + +**Ideas:** [Check out the open feature requests](https://git.uphillsecurity.com/cf7/aukpad/issues?q=&type=all&sort=&state=open&labels=12&milestone=0&project=0&assignee=0&poster=0&archived=false) -**Not planned**: +**Not planned:** - accounts / RBAC --- @@ -130,12 +141,6 @@ For security concerns or reports, please contact via `hello a t uphillsecurity d --- -## Notes - -- [Github Mirror available](https://github.com/CaffeineFueled1/aukpad) - ---- - ## License **Apache License** diff --git a/app.py b/app.py index cb453bb..7d5b619 100644 --- a/app.py +++ b/app.py @@ -590,6 +590,18 @@ def get_system_info():

Instance

{DESCRIPTION}

+

Simple temporary live collaboration notepad with websockets and FastAPI — pads expire automatically after a configurable retention period.

+
+ +
+

Features

+