From f9de2963202120527d9eac191496e14f50b14239 Mon Sep 17 00:00:00 2001 From: Krishna Penukonda Date: Thu, 16 Jul 2026 10:16:25 +0000 Subject: [PATCH] docs: add canonical feature list --- AGENTS.md | 2 ++ FEATURES.md | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 FEATURES.md diff --git a/AGENTS.md b/AGENTS.md index 000e3aa..2236c7d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,6 +6,8 @@ Anti-draft public live-writing tool for fighting perfectionism: if text exists, Unfinal is a tiny writing space where each URL is a live document. Visitors can read in real time; authenticated writers can edit, all changes are public in real-time. +See `FEATURES.md` for the canonical concise list of product and internal features. + ## Tech Stack Elixir/Phoenix LiveView app with Phoenix PubSub, Clerk OAuth/OIDC auth stored in signed session cookies, `.env` config, and S3-compatible object storage for document persistence. diff --git a/FEATURES.md b/FEATURES.md new file mode 100644 index 0000000..ef20ed1 --- /dev/null +++ b/FEATURES.md @@ -0,0 +1,22 @@ +# Features + +Unfinal is an anti-draft public live-writing tool for publishing text as soon as it exists. + +1. Live document pages let public readers watch text update in real time. +2. Personal namespaces let each claimed user publish their own notebook. +3. User-created public documents live under `/n/...`, with other routes reserved for application and owner use. +4. Nested document URLs let users organize pages inside a namespace. +5. Visitors can read public documents without logging in. +6. Namespace owners can edit only their own claimed namespace. +7. A claim page lets authenticated users reserve one namespace. +8. Namespace sidebars provide a page index for navigating documents. +9. Namespace owners can delete non-root pages. +10. The `/live` page lists documents currently being edited and documents edited recently. +11. Readers receive live document updates without manually refreshing. +12. Writer presence tracks active editing activity for live documents. +13. Login is powered by Clerk; the current implementation uses Clerk OAuth because the app has no JavaScript frontend framework. +14. Edits are automatically persisted while the writer types. +15. Documents are durably stored in SQLite. +16. Production backups are supported through Litestream to S3/R2-compatible storage. +17. Deployment automation builds assets, runs migrations, validates backup restore, and restarts services. +18. CI checks cover tests, migrations, schema consistency, and deployment readiness.