JK
>ΦΟΡΤΩΣΗ // ΦΟΡΤΩΣΗ
ΑΡΧΙΚΟΠΟΙΗΣΗ ΠΡΟΒΟΛΗΣ
Εργαλείο βιογραφικών επικεντρωμένο στην ιδιωτικότητα που παράγει έγγραφα LaTeX βελτιστοποιημένα για ATS.
Οι παραδοσιακές υπηρεσίες αποθηκεύουν ευαίσθητα δεδομένα στο cloud και παράγουν αρχεία PDF που απορρίπτονται από συστήματα ATS. Αυτό το εργαλείο προσφέρει απόλυτη τοπική προστασία και ακρίβεια LaTeX.
| Τεχνολογία | Έκδοση | Σκοπός | Γιατί επιλέχθηκε |
|---|---|---|---|
| React | 19 | UI framework | Latest concurrent features, lazy loading |
| TypeScript | ~6.0 | Type safety | Prevents runtime errors on complex resume data model |
| Vite | 8.x | Build tool & dev server | Fast HMR, native ESM, code splitting via glob imports |
| Tailwind CSS | v4 | Utility-first styling | Rapid UI development, consistent design tokens |
| Zustand | 5.x | State management | Minimal boilerplate, built-in persist middleware |
| @dnd-kit | core 6, sortable 10 | Drag-and-drop | Accessible, performant sortable lists |
| Go | 1.25+ | Backend runtime | Fast startup, small binaries, excellent concurrency |
| Gin | 1.12 | HTTP framework | High performance, middleware ecosystem |
| Tectonic | 0.16.9 | LaTeX→PDF compiler | Self-contained, no TeX distribution needed |
| Docker | — | Containerization | Reproducible builds, production parity |
| SQLite | modernc.org/sqlite 1.54 | Stats persistence | No CGO dependency, cross-compilation |
| Sentry | 10.x | Error tracking & monitoring | Session replay, performance monitoring, feedback widget |
| Μέθοδος | Διαδρομή | Σκοπός |
|---|---|---|
| POST | /api/compile | Compile LaTeX to PDF (HTTP) |
| GET | /api/compile/ws | WebSocket compile with progress streaming |
| POST | /api/stats/visit | Record page visit |
| POST | /api/stats/download | Record PDF download |
| GET | /api/stats | Get aggregate stats |
| GET | /api/health | Health check (Tectonic + DB status) |
| GET | /metrics | Prometheus metrics |
| Στήλη | Τύπος | Σημειώσεις |
|---|---|---|
| keyPK | TEXT | Counter name: 'visits' or 'downloads' |
| value | INTEGER | Counter value, default 0 |
Single table with 2 key-value rows. WAL mode enabled. Used only for aggregate visit/download statistics — no user data stored.
No relationships. Single table with 2 counter rows.
Απόφαση: All resume data, editing, preview, and LaTeX generation happen in the browser
Λόγος: Privacy-first: all data stays in browser with localStorage persistence
Οφέλη: Zero server costs for editing, user privacy, offline-capable editing
Ανταλλάγματα: No cloud sync, no cross-device access, localStorage size limits
Απόφαση: Use Tectonic instead of pdflatex or other TeX distributions
Λόγος: Self-contained binary, no TeX distribution needed on the server
Οφέλη: Simple Docker image, reproducible builds
Ανταλλάγματα: Slower than pdflatex for complex documents
Απόφαση: Use Zustand for state management with built-in persist middleware
Λόγος: Minimal boilerplate, built-in localStorage persistence
Οφέλη: Simple state management, easy persistence
Ανταλλάγματα: Less ecosystem than Redux
Απόφαση: Use WebSocket instead of HTTP polling for PDF compilation
Λόγος: Real-time progress feedback improves UX during 5-60s compilation
Οφέλη: User sees compilation stages (validating → writing → compiling → done)
Ανταλλάγματα: More complex than HTTP polling
Απόφαση: Each template implements a Template interface with config, Preview, and generateLatex
Λόγος: Multiple visual styles with shared data model
Οφέλη: Extensible, each template self-contained, lazy-loadable via import.meta.glob
Ανταλλάγματα: Code duplication across templates
Απόφαση: Use SQLite for aggregate visit/download counters only
Λόγος: Zero-config embedded DB adequate for 2 counter rows
Οφέλη: No external database dependency, simple deployment
Ανταλλάγματα: Write contention under concurrent access