Adds a second flow alongside the URL-to-EPUB pipeline: - New POST /send-file endpoint accepts multipart/form-data with a `file` and `readerEmail`, attaches the file to an email, and ships it to the reader as-is. No conversion — the device decides what it accepts (EPUB, PDF, MOBI, FB2, ...). - 25 MB cap enforced both client-side and server-side (multer). - Shares the same 20/hour rate limit as /send-article (now sendLimiter). - UI: dropzone with drag/drop + click-to-pick + visible filename feedback. - Shared e-reader email input across both flows. - Codeberg source link added to the footer. - Version bumped 0.1.0 → 0.2.0.
38 lines
1 KiB
JSON
38 lines
1 KiB
JSON
{
|
|
"name": "send-to-ereader",
|
|
"version": "0.2.0",
|
|
"description": "Convert web articles to EPUB and email them to your e-reader, or upload a file (EPUB, PDF, etc.) directly.",
|
|
"homepage": "https://atanasov.fi",
|
|
"main": "app.js",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "tsx watch ./src/app.ts",
|
|
"build": "tsc",
|
|
"start": "node dist/app.js",
|
|
"prod": "npm run build && npm run start"
|
|
},
|
|
"keywords": [],
|
|
"author": "Stefan Atanasov",
|
|
"license": "GPL-3.0-only",
|
|
"dependencies": {
|
|
"@lesjoursfr/html-to-epub": "^6.1.0",
|
|
"@mozilla/readability": "^0.6.0",
|
|
"dotenv": "^17.4.2",
|
|
"express": "^5.2.1",
|
|
"express-rate-limit": "^8.5.2",
|
|
"jsdom": "^29.1.1",
|
|
"multer": "^2.1.1",
|
|
"nodemailer": "^8.0.7",
|
|
"sanitize-filename": "^1.6.4",
|
|
"tsx": "^4.22.3"
|
|
},
|
|
"devDependencies": {
|
|
"@types/express": "^5.0.6",
|
|
"@types/jsdom": "^28.0.3",
|
|
"@types/multer": "^2.1.0",
|
|
"@types/node": "^25.9.1",
|
|
"@types/nodemailer": "^8.0.0",
|
|
"@types/sanitize-filename": "^1.1.28",
|
|
"typescript": "^6.0.3"
|
|
}
|
|
}
|