alf: the atproto Latency Fabric
alf.fly.dev/
1{
2 "name": "alf",
3 "version": "1.0.0",
4 "description": "ALF (Atproto Latency Fabric) — drafts store and scheduler for ATProto records",
5 "license": "Apache-2.0",
6 "main": "dist/index.js",
7 "engines": {
8 "node": ">=24"
9 },
10 "scripts": {
11 "dev": "tsx watch --clear-screen=false src/index.ts",
12 "build": "tsc",
13 "start": "node dist/index.js",
14 "typecheck": "tsc --noEmit",
15 "lint": "eslint src --config config/eslint.config.js",
16 "test": "jest --config config/jest.config.js",
17 "test:watch": "jest --watch --config config/jest.config.js",
18 "test:coverage": "jest --coverage --config config/jest.config.js",
19 "diagrams": "d2 --layout elk assets/diagram-lifecycle.d2 assets/diagram-lifecycle.svg && d2 --layout elk --scale 2 assets/diagram-flow.d2 assets/diagram-flow.png"
20 },
21 "dependencies": {
22 "@newpublic/recurrence": "file:packages/recurrence",
23 "@atproto/api": "^0.19.0",
24 "@atproto/common": "^0.5.13",
25 "@atproto/crypto": "^0.4.5",
26 "@atproto/identity": "^0.4.12",
27 "@atproto/lexicon": "^0.6.1",
28 "@atproto/oauth-client-node": "^0.3.17",
29 "@atproto/repo": "^0.8.12",
30 "@atproto/xrpc-server": "^0.10.14",
31 "@types/luxon": "^3.7.1",
32 "better-sqlite3": "^12.5.0",
33 "cors": "^2.8.5",
34 "dotenv": "^16.0.3",
35 "express": "^4.21.2",
36 "jose": "^5.9.6",
37 "kysely": "^0.27.4",
38 "luxon": "^3.7.2",
39 "multiformats": "^9.9.0",
40 "pg": "^8.13.1",
41 "pino": "^8.21.0",
42 "pino-http": "^9.0.0",
43 "prom-client": "^15.1.3"
44 },
45 "devDependencies": {
46 "@mermaid-js/mermaid-cli": "^11.12.0",
47 "@types/better-sqlite3": "^7.6.13",
48 "@types/cors": "^2.8.17",
49 "@types/express": "^5.0.0",
50 "@types/jest": "^29.5.14",
51 "@types/node": "^22.5.5",
52 "@types/pg": "^8.11.10",
53 "@types/supertest": "^6.0.3",
54 "eslint": "^9.0.0",
55 "jest": "^29.7.0",
56 "supertest": "^7.2.2",
57 "ts-jest": "^29.4.6",
58 "tsx": "^4.19.0",
59 "typescript": "^5.6.0",
60 "typescript-eslint": "^8.0.0"
61 }
62}