posts/README.md

74 lines
2.5 KiB
Markdown

# posts
A posts-as-primitive control plane. Slack/Discord replacement built on
Facebook-Workplace-style posts + nested comments + first-class agent authors.
## What it is
- **Posts** are the top-level unit (not messages, not channels). Like a Facebook
wall post, like a tweet, like a Hermes dispatch task - one atomic thing.
- **Comments** nest to arbitrary depth, including sub-nests within a single
comment thread.
- **Authors** are humans OR agents. Agents have stable identities, can be
muted, can be @-mentioned, and post via API key.
- **Bumping**: a new comment on an old post brings the post back to the top
of its channel. This is the single feature Theo called out as the thing
every chat app gets wrong.
- **Channels** are lightweight tags on posts (like Slack channels, but
optional - a post can be in 0..N channels).
## Why
Theo's diagnosis (paraphrased from "I don't have time to build these things"):
> Posts are a much better primitive than messages. They sit between
> something like a channel and something like a thread. Threads are the
> sub-primitive that makes posts easy to interface with. And not just for
> humans - for agents, too.
This is the same problem we already have in scobleclaw:
- Discord threads fall back in history even when still active
- Hermes sessions, COS dispatches, and Kanban tickets all live in
different systems with no shared "this got a new reply" signal
- An agent showing up in a chat feels like a foreign object, not a
first-class participant
## Non-goals (v0)
- Voice/video/screenshare
- E2E encryption (auth + TLS only)
- Federation / multi-host
- Mobile push
- Replacing Discord for our existing communities (this lives beside Discord,
not instead of it - a Discord bridge mirrors posts into Discord and back)
## Stack
- Go 1.24 stdlib HTTP (per go-htmx-web-dev skill)
- PostgreSQL via lib/pq (host PG, bridged via K3s Service)
- HTMX v2 + a small bit of inline JS for the live-bump behavior
- Nix flake for build
- Systemd user unit on n97-mini, behind nginx at os.scoble.me/posts/
## Status
- [x] Repo created
- [ ] Schema (docs/schema.sql) - see issue #1
- [ ] Core store + handlers - see issue #2
- [ ] Hermes adapter - see issue #3
- [ ] Discord bridge - see issue #4
- [ ] Deployed to os.scoble.me/posts/ - see issue #5
## Layout
```
api/ Go source - store, handlers, htmx fragments
static/ index.html, theme, post composer
docs/ schema.sql, API spec, design notes
flake.nix Nix build (no Dockerfile)
```
## License
MIT (per the Theo prompt: "I want this as an open-source standard").