[very crude, wip] post to bsky without the distraction of feeds
1# zensky
2
3I came up with the idea of this web app because I wanted to be able to post something without getting sucked into the abyss of endless doomscrolling which I am *very* prone to doing.
4
5zensky only lets you write posts and hit send. You can read posts that you have *just* sent out on zensky. That's it. You can't read any other posts.
6
7The whole thing was vibe coded using Shelley, the built-in AI chatbot in an exe.dev VM. I plan to use this to understand Go project structure. I haven't audited shit -- not even the build and run instructions below this section -- so just be aware of that. Afaik Shelly did pretty good though and it both amazes and scares the shit out of me that AI agents are capable of this.
8
9You can try it out on: https://cooki.exe.xyz (due to some quirks of exe.dev VMs, it only works if you use `https` and not `http` in the url)
10
11If you see "Service unavailable" that means I -- intentionally or unintentionally -- shut down the process. Feel free to dm me on bluesky to request to turn it back on. Response not guaranteed (but most of the time i will, unless im rly busy or taking a break from the internet, just thought it'd be safer to say that)
12
13## Building and Running
14
15Build with `make build`, then run `./srv`. The server listens on port 8000 by default.
16
17## Running as a systemd service
18
19To run the server as a systemd service:
20
21```bash
22# Install the service file
23sudo cp srv.service /etc/systemd/system/srv.service
24
25# Reload systemd and enable the service
26sudo systemctl daemon-reload
27sudo systemctl enable srv.service
28
29# Start the service
30sudo systemctl start srv
31
32# Check status
33systemctl status srv
34
35# View logs
36journalctl -u srv -f
37```
38
39To restart after code changes:
40
41```bash
42make build
43sudo systemctl restart srv
44```
45
46## Authorization
47
48exe.dev provides authorization headers and login/logout links
49that this template uses.
50
51When proxied through exed, requests will include `X-ExeDev-UserID` and
52`X-ExeDev-Email` if the user is authenticated via exe.dev.
53
54## Database
55
56This template uses sqlite (`db.sqlite3`). SQL queries are managed with sqlc.
57
58## Code layout
59
60- `cmd/srv`: main package (binary entrypoint)
61- `srv`: HTTP server logic (handlers)
62- `srv/templates`: Go HTML templates
63- `db`: SQLite open + migrations (001-base.sql)