A third party ATProto appview
1{
2 "name": "rest-express",
3 "version": "1.0.0",
4 "type": "module",
5 "license": "MIT",
6 "scripts": {
7 "dev": "./start-with-redis.sh",
8 "dev:data-plane": "tsx data-plane/server/index.ts",
9 "dev:appview": "DATA_PLANE_URL=http://localhost:5001 tsx server/index.ts",
10 "build": "vite build && esbuild server/index.ts --platform=node --packages=external --bundle --format=esm --outfile=dist/index.js && esbuild data-plane/server/index.ts --platform=node --packages=external --bundle --format=esm --outfile=dist/data-plane-index.js",
11 "start": "npm run build && NODE_ENV=production node dist/index.js",
12 "start:data-plane": "NODE_ENV=production DATA_PLANE_PORT=5001 node dist/data-plane/server/index.js",
13 "start:appview": "NODE_ENV=production DATA_PLANE_URL=http://localhost:5001 PORT=5000 node dist/server/index.js",
14 "check": "tsc",
15 "lint": "eslint . --max-warnings 0",
16 "lint:fix": "eslint . --fix",
17 "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json,css,md}\"",
18 "format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,json,css,md}\"",
19 "db:push": "drizzle-kit push",
20 "check-avatars": "tsx check-avatar-db.ts",
21 "refresh-unnamed-feeds": "tsx scripts/refresh-unnamed-feeds.ts"
22 },
23 "dependencies": {
24 "@atproto/api": "^0.17.0",
25 "@atproto/identity": "^0.4.9",
26 "@atproto/oauth-client-node": "^0.3.8",
27 "@atproto/repo": "^0.8.10",
28 "@atproto/sync": "^0.1.35",
29 "@hookform/resolvers": "^3.10.0",
30 "@jridgewell/trace-mapping": "^0.3.25",
31 "@neondatabase/serverless": "^0.10.4",
32 "@radix-ui/react-accordion": "^1.2.4",
33 "@radix-ui/react-alert-dialog": "^1.1.7",
34 "@radix-ui/react-aspect-ratio": "^1.1.3",
35 "@radix-ui/react-avatar": "^1.1.4",
36 "@radix-ui/react-checkbox": "^1.1.5",
37 "@radix-ui/react-collapsible": "^1.1.4",
38 "@radix-ui/react-context-menu": "^2.2.7",
39 "@radix-ui/react-dialog": "^1.1.7",
40 "@radix-ui/react-dropdown-menu": "^2.1.7",
41 "@radix-ui/react-hover-card": "^1.1.7",
42 "@radix-ui/react-label": "^2.1.3",
43 "@radix-ui/react-menubar": "^1.1.7",
44 "@radix-ui/react-navigation-menu": "^1.2.6",
45 "@radix-ui/react-popover": "^1.1.7",
46 "@radix-ui/react-progress": "^1.1.3",
47 "@radix-ui/react-radio-group": "^1.2.4",
48 "@radix-ui/react-scroll-area": "^1.2.4",
49 "@radix-ui/react-select": "^2.1.7",
50 "@radix-ui/react-separator": "^1.1.3",
51 "@radix-ui/react-slider": "^1.2.4",
52 "@radix-ui/react-slot": "^1.2.0",
53 "@radix-ui/react-switch": "^1.1.4",
54 "@radix-ui/react-tabs": "^1.1.4",
55 "@radix-ui/react-toast": "^1.2.7",
56 "@radix-ui/react-toggle": "^1.1.3",
57 "@radix-ui/react-toggle-group": "^1.1.3",
58 "@radix-ui/react-tooltip": "^1.2.0",
59 "@skyware/firehose": "^0.5.2",
60 "@tanstack/react-query": "^5.60.5",
61 "@types/jsonwebtoken": "^9.0.10",
62 "cbor-x": "^1.6.0",
63 "class-variance-authority": "^0.7.1",
64 "clsx": "^2.1.1",
65 "cmdk": "^1.1.1",
66 "connect-pg-simple": "^10.0.0",
67 "cookie-parser": "^1.4.7",
68 "dataloader": "^2.2.3",
69 "date-fns": "^3.6.0",
70 "drizzle-orm": "^0.39.1",
71 "drizzle-zod": "^0.7.0",
72 "elliptic": "^6.5.5",
73 "embla-carousel-react": "^8.6.0",
74 "express": "^4.21.2",
75 "express-rate-limit": "^8.1.0",
76 "express-session": "^1.18.1",
77 "framer-motion": "^11.13.1",
78 "input-otp": "^1.4.2",
79 "ioredis": "^5.8.0",
80 "jose": "^6.1.0",
81 "jsonwebtoken": "^9.0.2",
82 "key-encoder": "^2.0.3",
83 "lucide-react": "^0.453.0",
84 "memorystore": "^1.6.7",
85 "multiformats": "^13.4.1",
86 "next-themes": "^0.4.6",
87 "passport": "^0.7.0",
88 "passport-local": "^1.0.0",
89 "pg": "^8.16.3",
90 "react": "^18.3.1",
91 "react-day-picker": "^8.10.1",
92 "react-dom": "^18.3.1",
93 "react-hook-form": "^7.55.0",
94 "react-icons": "^5.4.0",
95 "react-resizable-panels": "^2.1.7",
96 "recharts": "^2.15.2",
97 "tailwind-merge": "^2.6.0",
98 "tailwindcss-animate": "^1.0.7",
99 "tw-animate-css": "^1.2.5",
100 "uint8arrays": "^5.1.0",
101 "vaul": "^1.1.2",
102 "wouter": "^3.3.5",
103 "ws": "^8.18.0",
104 "zod": "^3.24.2",
105 "zod-validation-error": "^3.4.0"
106 },
107 "devDependencies": {
108 "@eslint/js": "^9.37.0",
109 "@replit/vite-plugin-cartographer": "^0.3.1",
110 "@replit/vite-plugin-dev-banner": "^0.1.1",
111 "@replit/vite-plugin-runtime-error-modal": "^0.0.3",
112 "@tailwindcss/typography": "^0.5.15",
113 "@tailwindcss/vite": "^4.1.3",
114 "@types/connect-pg-simple": "^7.0.3",
115 "@types/cookie-parser": "^1.4.9",
116 "@types/elliptic": "^6.4.18",
117 "@types/express": "4.17.21",
118 "@types/express-session": "^1.18.0",
119 "@types/node": "20.16.11",
120 "@types/passport": "^1.0.16",
121 "@types/passport-local": "^1.0.38",
122 "@types/react": "^18.3.11",
123 "@types/react-dom": "^18.3.1",
124 "@types/ws": "^8.5.13",
125 "@typescript-eslint/eslint-plugin": "^8.46.1",
126 "@typescript-eslint/parser": "^8.46.1",
127 "@vitejs/plugin-react": "^4.7.0",
128 "autoprefixer": "^10.4.20",
129 "dotenv": "^17.2.3",
130 "drizzle-kit": "^0.31.4",
131 "esbuild": "^0.25.0",
132 "eslint": "^9.37.0",
133 "eslint-config-prettier": "^10.1.8",
134 "eslint-plugin-prettier": "^5.5.4",
135 "eslint-plugin-react": "^7.37.5",
136 "eslint-plugin-react-hooks": "^7.0.0",
137 "eslint-plugin-react-refresh": "^0.4.24",
138 "globals": "^16.4.0",
139 "postcss": "^8.4.47",
140 "prettier": "^3.6.2",
141 "tailwindcss": "^3.4.17",
142 "tsx": "^4.20.6",
143 "typescript": "^5.6.3",
144 "vite": "^6.0.0"
145 },
146 "optionalDependencies": {
147 "bufferutil": "^4.0.8"
148 }
149}