Repository navigation
Expand file tree
/
Copy pathpackage.json
More file actions
143 lines (143 loc) · 5.83 KB
/
Copy pathpackage.json
File metadata and controls
143 lines (143 loc) · 5.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
{
"name": "mailflare",
"version": "0.5.2",
"private": true,
"scripts": {
"dev": "npm run db:bundle && vp dev --port 3000",
"build": "npm run db:bundle && vp build",
"build:next": "npm run db:bundle && MAILFLARE_RUNTIME=node next build",
"start": "vp preview --port 3000",
"lint": "vp lint .",
"deploy": "npm run build && npm run deploy:worker",
"deploy:worker": "wrangler deploy",
"deploy:local": "npm run deploy",
"upload": "npm run build && wrangler versions upload",
"preview": "npm run build && vp preview --port 3000",
"cf-typegen": "wrangler types --env-interface CloudflareEnv ./cloudflare-env.d.ts",
"push:keys": "node scripts/generate-vapid-keys.mjs",
"db:bundle": "node scripts/generate-migration-bundle.mjs",
"db:generate": "drizzle-kit generate",
"db:migrate:local": "wrangler d1 migrations apply DB --local",
"db:migrate:remote": "wrangler d1 migrations apply DB --remote",
"migrate": "wrangler d1 migrations apply DB",
"db:seed": "curl -X POST http://localhost:3000/api/seed",
"build:node": "npm run db:bundle && MAILFLARE_RUNTIME=node next build && node scripts/build-server.mjs",
"start:node": "MAILFLARE_RUNTIME=node NODE_ENV=production node dist/server.mjs",
"dev:node": "npm run db:bundle && node scripts/build-server.mjs && MAILFLARE_RUNTIME=node node dist/server.mjs"
},
"cloudflare": {
"bindings": {
"CF_TOKEN": {
"description": "Runtime Cloudflare API token used by Mailflare onboarding to call the Zones, DNS, and Email Routing APIs. Cloudflare's deploy/build token is not passed to the app, so create this separately at https://dash.cloudflare.com/profile/api-tokens with `Zone Read`, `DNS Edit`, `Email Routing Edit`, and `Email Routing Rules Write` permissions for the zones you will connect. Add `Email Sending Edit` to enable outbound mail. Paste only the token secret value, without `Bearer`."
},
"TURNSTILE_SECRET_KEY": {
"description": "Cloudflare Turnstile secret key used to verify login and first-run registration challenges. Pair with NEXT_PUBLIC_TURNSTILE_SITE_KEY at build time."
},
"NEXT_PUBLIC_TURNSTILE_SITE_KEY": {
"description": "Cloudflare Turnstile public site key used by the login and first-run registration widgets."
},
"CF_EMAIL_WORKER_NAME": {
"description": "Worker name used when creating Cloudflare Email Routing rules. Set this to the deployed Worker name; if you rename the Worker, update this value too."
},
"GITHUB_UPDATE_TOKEN": {
"description": "Fine-grained GitHub token for the installation repository with Actions: write permission. Used by the admin update endpoint to dispatch deploy-update.yml."
},
"GITHUB_UPDATE_REF": {
"description": "Optional branch used to dispatch updates. Leave blank to use the repository default branch."
},
"GITHUB_UPDATE_REPO": {
"description": "Your github repository that connect to cloudflare worker"
},
"CF_EMAIL": {
"description": "Legacy Global API Key auth only. Use this with `CF_API_KEY` instead of `CF_TOKEN`."
},
"CF_API_KEY": {
"description": "Legacy Global API Key auth only. Prefer `CF_TOKEN` for new deployments."
}
}
},
"license": "SEE LICENSE IN LICENSE",
"dependencies": {
"@ai-sdk/openai-compatible": "^3.0.55",
"@ai-sdk/react": "^4.0.116",
"@modelcontextprotocol/server": "^2.1.0",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-label": "^2.1.8",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-separator": "^1.1.8",
"@radix-ui/react-slot": "^1.2.4",
"@radix-ui/react-tabs": "^1.1.13",
"@radix-ui/react-toast": "^1.2.15",
"@tanstack/react-query": "^5.100.11",
"@vinext/cloudflare": "1.0.0-beta.11",
"ai": "^7.0.113",
"bcryptjs": "^3.0.3",
"better-sqlite3": "^13.0.3",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"css-tree": "^3.2.1",
"dayjs": "^1.11.20",
"dompurify": "^3.4.16",
"drizzle-orm": "^0.45.2",
"lucide-react": "^1.16.0",
"mimetext": "^3.0.28",
"nanoid": "^5.1.16",
"next": "16.3.3",
"nodemailer": "^10.0.9",
"parse-srcset": "^1.0.2",
"parse5": "^8.0.1",
"postal-mime": "^2.7.4",
"qrcode": "^1.5.4",
"react": "^19.2.6",
"react-dom": "^19.2.6",
"react-hot-toast": "^2.6.1",
"react-markdown": "^10.1.0",
"react-server-dom-webpack": "^19.2.6",
"remark-gfm": "^4.0.1",
"sass": "^1.105.0",
"smtp-server": "^3.19.12",
"tailwind-merge": "^3.6.0",
"vinext": "1.0.0-beta.13",
"workers-ai-provider": "^4.0.0",
"zod": "^4.4.3"
},
"devDependencies": {
"@cloudflare/vite-plugin": "^1.61.0",
"@cloudflare/workers-types": "^5.20260828.1",
"@next/eslint-plugin-next": "16.3.3",
"@tailwindcss/postcss": "^4",
"@typescript-eslint/eslint-plugin": "8.59.4",
"@typescript-eslint/parser": "8.59.4",
"@types/bcryptjs": "^2.4.6",
"@types/better-sqlite3": "^9.6.0",
"@types/css-tree": "^3.2.0",
"@types/node": "^20.19.41",
"@types/nodemailer": "^8.0.1",
"@types/qrcode": "^1.5.6",
"@types/react": "^19.1.7",
"@types/react-dom": "^19.1.7",
"@types/smtp-server": "^3.5.13",
"@vitejs/plugin-react": "^6.0.0",
"@vitejs/plugin-rsc": "^0.5.34",
"drizzle-kit": "^0.31.10",
"esbuild": "^0.28.2",
"eslint": "^9",
"eslint-plugin-react": "7.37.5",
"eslint-plugin-react-hooks": "7.1.1",
"jsdom": "^30.1.2",
"tailwindcss": "^4",
"tsx": "^4.23.13",
"typescript": "^5.7.4",
"vite": "npm:@voidzero-dev/vite-plus-core@1.0.0",
"vite-plus": "1.0.0",
"wrangler": "^4.127.1"
},
"overrides": {
"@esbuild-kit/core-utils": {
"esbuild": "^0.25.4"
},
"vite": "npm:@voidzero-dev/vite-plus-core@1.0.0"
},
"type": "module"
}