@l1nsn0w/dox 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -0
- package/dox.js +95206 -0
- package/package.json +36 -0
package/README.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# dox
|
|
2
|
+
|
|
3
|
+
A self-hosted todo — for one person, or a few.
|
|
4
|
+
|
|
5
|
+
A single Go binary on your server, a thin TUI client on your laptop. The
|
|
6
|
+
server holds every byte of truth; the client never caches. Whoever registers
|
|
7
|
+
first becomes the owner and decides who else gets in.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
> **Heads up:** dox is in early, active development — things will move and
|
|
12
|
+
> occasionally break between versions. Issues and pull requests warmly
|
|
13
|
+
> welcome at [github.com/lin-snow/dox](https://github.com/lin-snow/dox).
|
|
14
|
+
|
|
15
|
+
## Deploy
|
|
16
|
+
|
|
17
|
+
The server is one container. One command, one persistent volume:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
docker run -d --name dox \
|
|
21
|
+
-p 8080:8080 \
|
|
22
|
+
-v /opt/dox/data:/app/data \
|
|
23
|
+
sn0wl1n/dox:latest
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Or with `compose.yml`:
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
services:
|
|
30
|
+
dox:
|
|
31
|
+
image: sn0wl1n/dox:latest
|
|
32
|
+
ports: ["8080:8080"]
|
|
33
|
+
volumes: ["./data:/app/data"]
|
|
34
|
+
restart: unless-stopped
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Use
|
|
38
|
+
|
|
39
|
+
Install the client, then run it:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm install -g @l1nsn0w/dox # or: bun add -g @l1nsn0w/dox
|
|
43
|
+
dox
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The TUI handles onboarding (register · login · accept invite) and everything
|
|
47
|
+
after.
|
|
48
|
+
|
|
49
|
+
## Stack
|
|
50
|
+
|
|
51
|
+
- **Server** — Go · grpc-gateway · sqlc · goose · SQLite
|
|
52
|
+
- **Client** — TypeScript · Ink · Bun
|
|
53
|
+
- **Contract** — `proto/dox/v1/` (auth, user, project, invite, todo)
|
|
54
|
+
|
|
55
|
+
IDs are ULID, timestamps are `int64` unix milliseconds, and only two routes
|
|
56
|
+
are public: `/v1/auth/register` and `/v1/auth/redeem`. Everything else needs
|
|
57
|
+
a device bearer token.
|
|
58
|
+
|
|
59
|
+
## Develop
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
just gen # proto → Go + TS, sqlc → Go DB bindings
|
|
63
|
+
just serve # run the server locally
|
|
64
|
+
just cli -- list # run the CLI against the local server
|
|
65
|
+
just release v0.1.0 # tag + push → triggers Docker Hub release
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
See [`docs/onboarding.md`](docs/onboarding.md) for how the auth/onboarding
|
|
69
|
+
flow actually works.
|
|
70
|
+
|
|
71
|
+
## License
|
|
72
|
+
|
|
73
|
+
[AGPL-3.0](LICENSE)
|