From 1ac80e2a56517394606a5afe6d40d9097a78c92d Mon Sep 17 00:00:00 2001 From: Stefan Date: Thu, 13 Aug 2026 23:43:33 +0300 Subject: [PATCH] feat: added dockerfile, made the guide closable --- .dockerignore | 5 +++++ Dockerfile | 21 +++++++++++++++++++++ package.json | 14 ++++++++++++-- public/index.html | 20 +++++++++++++++----- src/app.ts | 5 +++++ 5 files changed, 58 insertions(+), 7 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e92b4a6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +node_modules +dist +uploads +.env +.git diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a6cba45 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +# Build stage: compile TypeScript +FROM node:22-alpine AS build +WORKDIR /app +COPY package.json package-lock.json ./ +RUN npm ci +COPY tsconfig.json ./ +COPY src ./src +RUN npm run build + +# Runtime stage: production deps only +FROM node:22-alpine +WORKDIR /app +ENV NODE_ENV=production +COPY package.json package-lock.json ./ +RUN npm ci --omit=dev +COPY --from=build /app/dist ./dist +COPY public ./public +RUN mkdir -p uploads && chown node:node uploads +USER node +EXPOSE 3000 +CMD ["node", "dist/app.js"] diff --git a/package.json b/package.json index 88f49a9..8ed8741 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,25 @@ { "name": "send-to-ereader", - "version": "0.2.0", + "version": "0.2.2", "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", + "repository": { + "type": "git", + "url": "https://git.atanasov.fi/atanasov/send-to-ereader.git" + }, "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" + "prod": "npm run build && npm run start", + "build-prod-push": "docker buildx build --push --platform linux/amd64 -t $(npm pkg get config.docker.registry | xargs)/$(npm pkg get name | xargs):$(npm pkg get version | xargs) -t $(npm pkg get config.docker.registry | xargs)/$(npm pkg get name | xargs):latest ." + }, + "config": { + "docker": { + "registry": "git.atanasov.fi/atanasov" + } }, "keywords": [], "author": "Stefan Atanasov", diff --git a/public/index.html b/public/index.html index 17f3a86..28aca97 100644 --- a/public/index.html +++ b/public/index.html @@ -70,6 +70,16 @@ font-size: 14px; } + .setup-info summary { + cursor: pointer; + } + + .setup-info summary h2 { + display: inline; + font-size: 15px; + margin: 0; + } + .setup-info code { background: #fff; padding: 2px 4px; @@ -209,8 +219,8 @@
-
-

guide

+
+

guide

  1. whitelist send@read.atanasov.fi on your device — one-time setup: @@ -275,7 +285,7 @@ localStorage for future use; nothing is stored on the server
  2. -
+
@@ -344,7 +354,7 @@