···11# ligo.at
2233-A decentralized links page powered by the [AT Protocol][atproto].
33+A decentralized links page on top of [AT Protocol][atproto].
4455## dependencies
66···10101111Use the `generate_secrets.py` script or run `make .env`.
12121313+## synchronization
1414+1515+`ligo.at` reads directly from the users' PDS. A small cache is used to serve profile pages quicker. The cache is updated on every profile write, and when requesting a profile with the `?reload` query parameter (any value, even empty). `ligo.at` also reads from the [Jetstream][jetstream], so updates made to a profile outside of `ligo.at` should also be available instantly.
1616+1317## run
14181519Either start a debug server with `make debug` or a production one with `make run`. Production needs the `PORT` environment variable.
16202121+The Jetstream ingestor can be started with `make ingestor`.
2222+2323+### systemd
2424+2525+Two systemd service files are found in the `dist` folder. They can be used to run both the server and the jetstream ingestor.
2626+1727[atproto]: https://atproto.com
1828[uv]: https://docs.astral.sh/uv/
2929+[jetstream]: https://atproto.wiki/en/wiki/reference/networking/jetstream
+1-1
pyproject.toml
···22name = "ligo-at"
33version = "0.0.1"
44description = "Decentralized links page on top of AT Protocol"
55-readme = "readme.md"
55+readme = "README.md"
66requires-python = ">=3.13"
77dependencies = [
88 "aiodns>=3.5.0",