an app to share curated trails
sidetrail.app
1{
2 "name": "sidetrail",
3 "version": "0.1.0",
4 "private": true,
5 "workspaces": [
6 "db",
7 "ingester",
8 "realtime"
9 ],
10 "scripts": {
11 "dev": "next dev",
12 "dev:ingester": "npm run -w sidetrail-ingester dev",
13 "dev:realtime": "npm run -w sidetrail-realtime dev",
14 "build": "rm -rf .next/cache/* && next build --webpack",
15 "start": "next start",
16 "lint": "eslint --ext .js,.jsx,.ts,.tsx .",
17 "typecheck": "tsc --noEmit",
18 "check": "npm run lint && npm run typecheck",
19 "format": "prettier --write .",
20 "format:check": "prettier --check .",
21 "prepare": "husky",
22 "postinstall": "patch-package && npm run lex:build",
23 "lex:build": "lex build --lexicons ./lexicons --out ./lib/lexicons --clear --importExt \"\"",
24 "db:push": "drizzle-kit push",
25 "db:studio": "drizzle-kit studio",
26 "sync": "tsx scripts/sync.ts",
27 "test": "npx vitest run",
28 "test:watch": "npx vitest",
29 "deploy:app": "railway up --service sidetrail --ci",
30 "deploy:ingester": "railway up --service ingester --ci",
31 "deploy:realtime": "railway up --service realtime --ci",
32 "deploy:all": "npm run deploy:app && npm run deploy:ingester && npm run deploy:realtime"
33 },
34 "dependencies": {
35 "@atproto/api": "^0.17.4",
36 "@atproto/identity": "^0.4.9",
37 "@atproto/lex": "^0.0.4",
38 "@atproto/oauth-client-node": "^0.3.11",
39 "@atproto/syntax": "^0.4.2",
40 "@opentelemetry/api": "^1.9.0",
41 "@opentelemetry/instrumentation-pg": "^0.61.1",
42 "@radix-ui/react-dialog": "^1.1.15",
43 "@radix-ui/react-dropdown-menu": "^2.1.16",
44 "@types/pg": "^8.15.6",
45 "@types/ws": "^8.18.1",
46 "@vercel/otel": "^2.1.0",
47 "drizzle-orm": "^0.45.1",
48 "eslint-plugin-react-hooks": "^7.0.1",
49 "hls.js": "^1.6.13",
50 "ioredis": "^5.8.2",
51 "iron-session": "^8.0.4",
52 "lru-cache": "^11.2.4",
53 "next": "16.3.0-canary.63",
54 "pg": "^8.16.3",
55 "react": "^19",
56 "react-dom": "^19",
57 "react-error-boundary": "^6.0.0",
58 "ws": "^8.18.3"
59 },
60 "devDependencies": {
61 "@eslint/js": "^9.39.1",
62 "@types/node": "^22.14.1",
63 "@types/react": "^19.2.7",
64 "@types/react-dom": "^19.2.3",
65 "@vitest/ui": "^4.0.1",
66 "drizzle-kit": "^0.31.8",
67 "eslint": "^9.39.1",
68 "husky": "^9.1.7",
69 "lint-staged": "^16.2.6",
70 "patch-package": "^8.0.0",
71 "prettier": "^3.6.2",
72 "server-only": "^0.0.1",
73 "typescript": "^5.9.3",
74 "typescript-eslint": "^8.46.4",
75 "vitest": "^4.0.1"
76 },
77 "engines": {
78 "node": ">=22.16.0"
79 },
80 "lint-staged": {
81 "*": "prettier --write --ignore-unknown"
82 }
83}