annot.at is a service for syncing static websites, such as blogs, to atproto and standard.site annot.at
elixir atproto standardsite
3

Configure Feed

Select the types of activity you want to include in your feed.

Set up a tangled CI workflow

Using the new microvm engine to run postgres, with some postgres config to run over tcp instead of a unix socket to match the default Phoenix project setup.

The steps match `mix precommit` but with the flags that make them fail instead of just fixing, eg `mix format --check-formatted` instead of just `mix format`.

authored by

Johanna Larsson and committed by
Tangled
(Jul 3, 2026, 3:07 PM +0300) 536c1361 773957a5

+36 -1
+35
.tangled/workflows/ci.yml
··· 1 + when: 2 + - event: ["push", "pull_request"] 3 + branch: ["main"] 4 + 5 + engine: microvm 6 + image: nixos 7 + 8 + dependencies: 9 + - beam29Packages.elixir_1_20 10 + - beam29Packages.erlang 11 + 12 + services: 13 + postgresql: 14 + enable: true 15 + enableTCPIP: true 16 + authentication: | 17 + host all all 127.0.0.1/32 trust 18 + host all all ::1/128 trust 19 + 20 + steps: 21 + - name: setup 22 + command: | 23 + mix local.hex --force 24 + mix local.rebar --force 25 + mix deps.get 26 + - name: compile 27 + command: mix compile --warnings-as-errors 28 + - name: format 29 + command: mix format --check-formatted 30 + - name: credo 31 + command: mix credo --strict 32 + - name: test 33 + command: mix test --warnings-as-errors 34 + - name: unused 35 + command: mix deps.unlock --check-unused
+1 -1
lib/annot_at_web/controllers/live/posts_live.ex
··· 106 106 {if publishing?(@publishing, entry), do: "Publishing…", else: "Publish"} 107 107 </.button> 108 108 <span :if={not has_date?(entry)} class="flex-none text-xs text-ink/40">No 109 - date</span> 109 + date</span> 110 110 </div> 111 111 </div> 112 112