Prevents abuse before exposing the app publicly. Limits each client IP to 20 article sends per hour. trust proxy is set so the real client IP is used (not Nginx's loopback) once the app is behind a reverse proxy.
36 lines
971 B
JSON
36 lines
971 B
JSON
{
|
|
"name": "send-to-ereader",
|
|
"version": "0.1.0",
|
|
"description": "Convert web articles to EPUB and email them to your e-reader.",
|
|
"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",
|
|
"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/node": "^25.9.1",
|
|
"@types/nodemailer": "^8.0.0",
|
|
"@types/sanitize-filename": "^1.1.28",
|
|
"typescript": "^6.0.3"
|
|
}
|
|
}
|