{ "name": "mailboxes", "version": "0.2.1", "private": true, "description": "Self-hosted email client with an AI agent — send, receive, search and draft replies from your own domain, running entirely on Cloudflare Workers (D1 + R2 + Workers AI).", "license": "AGPL-3.0-only", "author": "Doforu", "repository": { "type": "git", "url": "git+https://github.com/doforu-labs/Mailboxes.git" }, "bugs": { "url": "https://github.com/doforu-labs/Mailboxes/issues" }, "homepage": "https://github.com/doforu-labs/Mailboxes#readme", "keywords": [ "email", "self-hosted", "cloudflare-workers", "ai-agent", "d1", "r2", "react-router", "hono" ], "engines": { "node": ">=20" }, "type": "module", "cloudflare": { "label": "Mailboxes", "products": [ "Workers", "D1", "R2", "Workers AI" ] }, "scripts": { "build": "react-router build && node scripts/inject-deploy-guard.mjs", "cf-typegen": "wrangler types", "db:create": "wrangler d1 create mailboxes-db", "db:migrate": "wrangler d1 migrations apply DB --remote", "db:migrate:local": "wrangler d1 migrations apply DB --local", "db:preview": "wrangler d1 migrations apply DB --preview", "deploy": "npm run build && wrangler d1 migrations apply DB --remote && wrangler deploy", "deploy:full": "npm run build && wrangler deploy && wrangler d1 migrations apply DB --remote", "postinstall": "npx --yes patch-package", "predev": "npx --yes patch-package", "dev": "react-router dev", "preview": "npm run build && vite preview", "setup": "node scripts/setup.mjs", "test": "node --experimental-test-module-mocks --import tsx --test 'workers/**/*.test.ts'", "typecheck": "npm run cf-typegen && react-router typegen && tsc -b" }, "dependencies": { "@cloudflare/kumo": "^1.13.0", "@phosphor-icons/react": "^2.1.10", "@tanstack/react-query": "^5.99.0", "@tiptap/extension-color": "3.32.0", "@tiptap/extension-highlight": "3.32.0", "@tiptap/extension-image": "3.32.0", "@tiptap/extension-link": "3.32.0", "@tiptap/extension-text-align": "3.32.0", "@tiptap/extension-text-style": "3.32.0", "@tiptap/extension-underline": "3.32.0", "@tiptap/react": "3.32.0", "@tiptap/starter-kit": "3.32.0", "dompurify": "^3.3.3", "drizzle-orm": "^0.45.1", "hono": "^4.7.11", "i18next": "^26.4.2", "i18next-browser-languagedetector": "^8.2.1", "isbot": "^5.1.27", "lucide-react": "^1.24.0", "playwright": "^1.61.1", "postal-mime": "^2.6.1", "react": "19.2.4", "react-dom": "19.2.4", "react-i18next": "^17.0.15", "react-router": "^7.18.4", "sonner": "^2.0.7", "zod": "^3.25.76", "zustand": "^5.0.12" }, "overrides": { "@cloudflare/kumo": { "zod": "$zod" }, "braces": "^3.0.3", "micromatch": "^4.0.8", "@tiptap/core": "3.32.0", "@tiptap/pm": "3.32.0", "@tiptap/extensions": "3.32.0", "@tiptap/extension-blockquote": "3.32.0", "@tiptap/extension-bold": "3.32.0", "@tiptap/extension-bubble-menu": "3.32.0", "@tiptap/extension-bullet-list": "3.32.0", "@tiptap/extension-code": "3.32.0", "@tiptap/extension-code-block": "3.32.0", "@tiptap/extension-document": "3.32.0", "@tiptap/extension-dropcursor": "3.32.0", "@tiptap/extension-floating-menu": "3.32.0", "@tiptap/extension-gapcursor": "3.32.0", "@tiptap/extension-hard-break": "3.32.0", "@tiptap/extension-heading": "3.32.0", "@tiptap/extension-horizontal-rule": "3.32.0", "@tiptap/extension-italic": "3.32.0", "@tiptap/extension-list": "3.32.0", "@tiptap/extension-list-item": "3.32.0", "@tiptap/extension-list-keymap": "3.32.0", "@tiptap/extension-ordered-list": "3.32.0", "@tiptap/extension-paragraph": "3.32.0", "@tiptap/extension-strike": "3.32.0", "@tiptap/extension-text": "3.32.0" }, "devDependencies": { "@cloudflare/vite-plugin": "^1.64.0", "@cloudflare/workers-types": "^5.20261019.1", "@playwright/test": "^1.61.1", "@react-router/dev": "^7.18.4", "@react-router/node": "^7.18.4", "@tailwindcss/vite": "^4.1.4", "@types/dompurify": "^3.0.5", "@types/node": "^20.19.37", "@types/react": "^19.1.2", "@types/react-dom": "^19.1.2", "patch-package": "^8.0.1", "tailwindcss": "^4.3.2", "tsx": "^4.23.0", "typescript": "^5.8.3", "vite": "^6.3.3", "vite-tsconfig-paths": "^5.1.4", "wrangler": "^4.151.2" } }