1<!--
2SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
3
4SPDX-License-Identifier: CC0-1.0
5-->
6
7# Sift
8
9Collaborative lists with real‑time voting and ranking. Create a room, share the link, add ideas, and sort them together with upvotes, downvotes, or vetoes.
10
11[](https://api.reuse.software/info/git.secluded.site/sift)
12[](https://scratchanitch.dev)
13[](https://deno.land/)
14[](https://www.sqlite.org/)
15[](https://liberapay.com/Amolith/)
16
17<center>
18
19
20
21</center>
22
23## Why Sift?
24
25- Real‑time collaboration: everyone sees changes instantly
26- Simple ranking: upvote, downvote, or veto; items auto‑sort by score
27- Veto with care: vetoed items fall to the bottom and dim
28- Bulk input: paste many lines at once; quick brainstorms welcome
29- Keyboard‑friendly: j/k navigate • 1/2/3 vote • e edit • Del delete • ? help • Ctrl/Cmd+Z undo
30- Clean UI: light/dark themes, responsive, reduced‑motion friendly
31- Easy sharing: rooms are just links; optional room titles for context
32
33## Quick start
34
35Run the server (Deno required):
36
37```bash
38deno run \
39 --allow-net=:8294 \
40 --allow-read=./static/,./lists.db,$HOME/.cache/deno/plug \
41 --allow-write=./lists.db,$HOME/.cache/deno/plug \
42 --allow-env \
43 --allow-ffi \
44 server.ts
45```
46
47Then open <http://localhost:8294> in your browser.
48
49### CLI options
50
51- `--host <hostname>` — Bind to specific interface (default: `localhost`, use `0.0.0.0` for all interfaces)
52- `--port <port>` — Listen on specific port (default: `8294`)
53
54Example binding to all interfaces on port 3000:
55
56```bash
57deno run \
58 --allow-net=:3000 \
59 --allow-read=./static/,./lists.db,$HOME/.cache/deno/plug \
60 --allow-write=./lists.db,$HOME/.cache/deno/plug \
61 --allow-env \
62 --allow-ffi \
63 server.ts --host 0.0.0.0 --port 3000
64```
65
66Note: Update `--allow-net` permission to match your chosen port.
67
68## How it works (for users)
69
701. Create a room and share the link, or join an existing room by code
712. Add items one‑by‑one or paste multiple lines
723. Vote: 1 = up, 2 = down, 3 = veto; Enter also upvotes the selected item
734. Edit or delete items inline; reset votes when starting a new round
745. Optionally set a room title to keep context
75
76Tip: You can deep‑link into a room via `?room=CODE`.
77
78## Notes on privacy & safety
79
80- No accounts or authentication; rooms are protected only by knowing the ID
81- Treat rooms as shared spaces—don’t post sensitive information
82
83## License
84
85- Code: AGPL‑3.0‑or‑later → see [LICENSES/AGPL-3.0-or-later.txt](LICENSES/AGPL-3.0-or-later.txt)
86- Docs/assets: CC0‑1.0 → see [LICENSES/CC0-1.0.txt](LICENSES/CC0-1.0.txt)
87- This project follows [REUSE](https://reuse.software/) best practices