# zensky I 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. zensky 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. The 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. You 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) If 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) ## Building and Running Build with `make build`, then run `./srv`. The server listens on port 8000 by default. ## Running as a systemd service To run the server as a systemd service: ```bash # Install the service file sudo cp srv.service /etc/systemd/system/srv.service # Reload systemd and enable the service sudo systemctl daemon-reload sudo systemctl enable srv.service # Start the service sudo systemctl start srv # Check status systemctl status srv # View logs journalctl -u srv -f ``` To restart after code changes: ```bash make build sudo systemctl restart srv ``` ## Authorization exe.dev provides authorization headers and login/logout links that this template uses. When proxied through exed, requests will include `X-ExeDev-UserID` and `X-ExeDev-Email` if the user is authenticated via exe.dev. ## Database This template uses sqlite (`db.sqlite3`). SQL queries are managed with sqlc. ## Code layout - `cmd/srv`: main package (binary entrypoint) - `srv`: HTTP server logic (handlers) - `srv/templates`: Go HTML templates - `db`: SQLite open + migrations (001-base.sql)