A simple tool which lets you scrape twitter accounts and crosspost them to bluesky accounts! Comes with a CLI and a webapp for managing profiles! Works with images/videos/link embeds/threads.
···11-# Use the full Node 22 image for the builder stage
22-# Standard images include build-essential, python, etc., by default
11+# Use the full Node 22 image (essential for Hetzner VPS builds)
32FROM node:22 AS builder
4354WORKDIR /app
6577-# Step 1: Install dependencies
66+# Step 1: Install dependencies first (better for caching)
87COPY package*.json ./
981010-# The --legacy-peer-deps flag helps if there are version conflicts
99+# --legacy-peer-deps helps if there are dependency version conflicts
1110RUN npm install --legacy-peer-deps
12111313-# Step 2: Build the project
1212+# Step 2: Copy source and build
1413COPY . .
1514RUN npm run build
16151717-# --- Production Image ---
1616+# --- Production Stage ---
1817FROM node:22-slim
19182020-# Install only the bare essentials for the runtime
1919+# Install runtime dependencies for SQLite and Chromium
2120RUN apt-get update && apt-get install -y \
2221 chromium \
2222+ libsqlite3-dev \
2323 && rm -rf /var/lib/apt/lists/*
24242525WORKDIR /app
26262727-# Copy built files from builder
2727+# Copy built files from the builder stage
2828COPY --from=builder /app/dist ./dist
2929COPY --from=builder /app/node_modules ./node_modules
3030COPY --from=builder /app/package.json ./package.json
3131COPY --from=builder /app/public ./public
32323333+# Create persistent data directory
3334RUN mkdir -p /app/data
34353536ENV NODE_ENV=production