DocMolder è un bot Telegram-first pubblico per trasformazioni documentali semplici e guidate.
Posizionamento sintetico: utility professionale, smart e amichevole per PDF, scansioni, immagini ed Excel direttamente in chat.
L'utente apre @docmolder_bot, invia file al bot, sceglie l'azione desiderata e riceve l'output direttamente in chat.
- Esperienza molto semplice via Telegram
- Bot raggiungibile pubblicamente da Telegram
- Supporto multiutente
- Elaborazione asincrona delle operazioni
- Retention breve dei file temporanei
DocMolder vuole restare una utility documentale chat-first:
- focalizzata su trasformazioni pratiche di PDF, foto di documenti e piccoli interventi Excel mirati
- semplice, guidata e affidabile
- orientata a una operazione chiara per volta
Nel perimetro attuale non vuole diventare:
- un editor PDF generalista
- un sistema completo di document management o archiviazione
- un assistente conversazionale che promette comprensione illimitata del linguaggio naturale
Questo perimetro serve come filtro per la roadmap: accettiamo soprattutto evoluzioni che aumentano chiarezza, qualità del risultato e affidabilità del servizio.
- Creazione PDF da immagini
- Scelta tra formato originale immagini o impaginazione A4 con bordi configurabili
- Conversione PDF in scala di grigi
- Compressione PDF solo su richiesta
- Feedback pratico quando la compressione riduce poco o non conviene
- Unione PDF
- Divisione PDF in un file per pagina, con scelta tra ZIP unico e PDF separati
- Estrazione pagine da un PDF
- Riordino pagine di un PDF
- Eliminazione pagine da un PDF
- Rotazione manuale delle pagine di un PDF
- Watermark testuale su PDF
- Sblocco modifica Excel per file già apribili con fogli o struttura protetti
- Correzione automatica dell'orientamento dei PDF quando serve, con possibilità di rifare il file senza auto-rotazione
- Correzione automatica orientamento per immagini
- Raddrizzamento foto documento con profili
Più leggibile,Mantieni coloreeBianco/nero pulito - Sessioni temporanee per raccogliere più file in messaggi successivi
- Storico ultimi job con dettaglio essenziale e possibilità di rilanciare un'elaborazione
- Preset leggeri per scelte ricorrenti di compressione, split e immagini verso PDF, senza salvare contenuti o nomi file
- Self-service essenziale con
/start,/help,/history,/statuse/reset - Deep link Telegram essenziali per guida, storico e stato
- Console admin Telegram accorpata in
/admin, con queue, health, metrics, manutenzione, access review, pause/resume e scorciatoie inline - Metriche Telegram leggere e alert admin meno rumorosi
- Nomi output più leggibili, derivati dal file sorgente e dall'azione eseguita
- L'utente invia uno o più file.
- Il bot riconosce il contesto della sessione.
- Il bot propone solo azioni compatibili con i file ricevuti.
- L'utente sceglie l'azione con pulsanti inline.
- Il bot elabora e restituisce il risultato.
- I file temporanei vengono cancellati automaticamente.
- Nessun salvataggio permanente dei file utente nel perimetro attuale del prodotto
- Pulizia automatica delle cartelle temporanee
- I preset salvano solo impostazioni operative ripetute, non contenuti documento o nomi file
- Limiti configurabili su dimensione file, numero di allegati, burst upload e carico concorrente
Questo repository contiene già una prima implementazione funzionante del flusso:
- configurazione dell'applicazione
- bot Telegram di base
- gestione persistente delle sessioni su SQLite
- tastiere e messaggi iniziali
- caricamento dei file da Telegram
- creazione PDF da immagini
- scelta guidata A4 / formato originale per i PDF creati da immagini
- unione PDF
- divisione PDF in un file per pagina, con scelta tra ZIP unico e PDF separati
- estrazione pagine PDF
- riordino pagine PDF
- eliminazione pagine PDF
- rotazione manuale pagine PDF
- watermark testuale PDF
- sblocco modifica Excel per file
.xlsx,.xlsme.xlsgià apribili - conversione PDF in scala di grigi
- compressione PDF con livelli semplici
- feedback compressione quando la riduzione è minima o non conviene
- correzione automatica dell'orientamento PDF nei flussi compatibili
- correzione orientamento immagini
- raddrizzamento foto documento con feedback su foto scure, sfocate o bordo incerto
- storico lavori utente con recupero rapido del job via rilancio
- self-service utente con
/start,/help,/history,/statuse/reset - tastiere inline contestuali: azioni consigliate in evidenza, azioni avanzate dietro espansione
- console admin Telegram live accorpata in
/admin, con dashboard inline per queue, health, maintenance, metrics, access review, pause/resume e ultimi job disponibili - metriche e retry Bot API per i flussi Telegram più sensibili
La pipeline PDF è stata resa più conservativa rispetto allo scaffold iniziale.
Compressione:
- livello
Leggera: ottimizzazione lossless della struttura PDF - livello
Media: ottimizzazione conservativa con tentativo di ricompressione delle immagini mantenendo il PDF nativo - livello
Forte: prova prima una compressione conservativa, poi una compressione nativa viaGhostscript, e usa la rasterizzazione solo come soluzione di ripiego
Scala di grigi:
- se sul server è disponibile
Ghostscript, il bot prova una conversione più fedele alla struttura del PDF - se
Ghostscriptnon è disponibile, prova prima una conversione nativa delle immagini interne del PDF - solo come ultimo passaggio usa una soluzione visiva di ripiego che garantisce l'output ma può perdere testo ricercabile, layer o metadati avanzati
Questo ci permette di preservare meglio il contenuto nativo dei PDF quando l'ambiente lo consente, senza rinunciare a una soluzione di ripiego affidabile.
Il modo più rapido per lavorare in locale è:
make setup
cp .env.example .env
make runPer la guida completa di setup e test locali, vedi docs/LOCAL_DEV.md.
Per setup e gestione operativa su Oracle VPS con Ubuntu, vedi docs/VPS_RUNBOOK.md.
Per usare Codex su chatgpt.com come postazione di lavoro e deploy senza dipendere dal Mac, vedi docs/CODEX_CLOUD_DEPLOY.md.
Il flusso consigliato da remoto è:
- Codex o GitHub preparano il codice fino a
main - il webhook privato GitHub -> VPS riceve il push su
main - la VPS applica il deploy standard con
deploy/update-vps.sh - eventuali release, tag e GitHub Release restano un passaggio manuale separato
secondo
docs/RELEASE_PROCESS.mdedocs/VERSIONING.md
Per gli aggiornamenti manuali sulla VPS, fallback esplicito:
sudo /opt/docmolder/app/deploy/update-vps.shDocumenti utili:
CHANGELOG.mddocs/BACKLOG.mddocs/BRAND.mddocs/CONTEXT.mddocs/DECISIONS.mddocs/decisions/docs/INDEX.mddocs/LOCAL_DEV.mddocs/VPS_RUNBOOK.mddocs/CODEX_CLOUD_DEPLOY.mddocs/PDF_PIPELINE.mddocs/TELEGRAM_OPERATIONS.mddocs/RELEASE_PROCESS.mddocs/VERSIONING.mddocs/ROADMAP.mddocs/TOOLCHAIN.mddocs/GITHUB_ALIGNMENT.mddocs/GITHUB_MAINTENANCE.md
DOCMOLDER_TELEGRAM_TOKENDOCMOLDER_ALLOWED_USER_IDSfacoltativaDOCMOLDER_ADMIN_USER_IDSfacoltativa gli admin ricevono un messaggio privato dal bot al primo accesso di ogni nuovo utenteDOCMOLDER_DEFAULT_LANGUAGEDOCMOLDER_SESSION_TTL_MINUTESDOCMOLDER_MAX_SESSION_FILESDOCMOLDER_MAX_FILE_SIZE_MBDOCMOLDER_UPLOAD_BURST_LIMITDOCMOLDER_UPLOAD_BURST_WINDOW_SECONDSDOCMOLDER_MAX_ACTIVE_JOBS_PER_USERDOCMOLDER_CLEANUP_INTERVAL_MINUTESDOCMOLDER_STALE_JOB_RETENTION_HOURSDOCMOLDER_JOB_HISTORY_RETENTION_DAYSDOCMOLDER_GHOSTSCRIPT_TIMEOUT_SECONDSDOCMOLDER_ADMIN_DAILY_REPORT_HOURDOCMOLDER_ADMIN_WEEKLY_REPORT_DAYDOCMOLDER_ADMIN_WEEKLY_REPORT_HOURDOCMOLDER_ADMIN_ALERT_WINDOW_MINUTESDOCMOLDER_ADMIN_ALERT_MIN_FINISHED_JOBSDOCMOLDER_ADMIN_ALERT_FAILURE_RATE_PERCENTDOCMOLDER_ADMIN_ALERT_REPEATED_FAILURES_THRESHOLDDOCMOLDER_ADMIN_ALERT_COOLDOWN_MINUTESDOCMOLDER_ADMIN_SLOW_JOB_THRESHOLD_MSDOCMOLDER_HEALTH_MAX_QUEUED_JOBSDOCMOLDER_HEALTH_MAX_RUNNING_JOBSDOCMOLDER_HEALTH_MAX_RUNNING_JOB_AGE_SECONDSDOCMOLDER_HEALTH_MAX_RUNTIME_DIR_BYTESDOCMOLDER_HEALTH_MAX_DATABASE_BYTESDOCMOLDER_HEALTH_MAX_BACKUP_AGE_SECONDSDOCMOLDER_HEALTH_MAX_FINISHED_JOBS_24HDOCMOLDER_HEALTH_MAX_ACTIVE_USERS_7DDOCMOLDER_HEALTH_MAX_FAILURE_RATE_PERCENTDOCMOLDER_HEALTH_FAILURE_RATE_MIN_FINISHED_JOBSDOCMOLDER_HEALTH_MIN_DISK_FREE_BYTESDOCMOLDER_HEALTH_MIN_DISK_FREE_PERCENTDOCMOLDER_HEALTH_MAX_LOAD_PER_CPUDOCMOLDER_HEALTH_MIN_MEMORY_AVAILABLE_BYTESDOCMOLDER_IMAGE_PDF_MAX_SOURCE_SIDE_PXDOCMOLDER_RUNTIME_DIRDOCMOLDER_DATABASE_PATHDOCMOLDER_SQLITE_BACKUP_DIRDOCMOLDER_SQLITE_BACKUP_RETENTION_DAYSDOCMOLDER_TELEGRAM_BRAND_SYNC_ENABLED
La roadmap corrente del progetto è in docs/ROADMAP.md.
Le modifiche rilevanti vengono annotate in CHANGELOG.md, mentre policy e bump versioni sono descritte in docs/VERSIONING.md.
Per il versioning, feature PR e fix PR non devono aggiornare manualmente versione o changelog di release. Il rilascio ufficiale resta un passaggio separato su main dopo il merge funzionale, con la procedura release manuale documentata per creare commit/tag/GitHub Release e deploy del commit di release via VPS.
In sintesi, la priorità attuale è:
- linea 2.x: mantenere stabile il bot pubblico Telegram-first, correggere regressioni emerse dall'uso reale e rafforzare UX pubblica, privacy, retention e osservabilità senza uscire dal perimetro di utility documentale
Comandi utente:
/startper aprire DocMolder/helpper guida rapida, limiti, dati e flussi consigliati/historyper vedere gli ultimi job personali, aprirne i dettagli essenziali o rilanciarli/statusper vedere accesso, service mode, sessione corrente, coda personale e ultimo job/resetper azzerare sessione, ultime scelte rapide e preset, con opzione di cancellazione dati live
Deep link pubblico utile:
/start privacyper riepilogo sintetico su dati, retention, limiti e cancellazione
Comando admin nascosto dalla lista pubblica:
/adminper aprire la console inline con panoramica, coda, health, metriche, manutenzione, pausa/ripresa servizio, access review e ultimi job.
In modalità ristretta, il primo messaggio di un utente non autorizzato genera una richiesta accesso pending per gli admin.