Cv - Mistrz to nowoczesna, w pełni darmowa aplikacja typu SPA (Single Page Application) do tworzenia profesjonalnych dokumentów CV bezpośrednio w przeglądarce. Aplikacja stawia na prywatność – wszystkie dane przetwarzane są lokalnie (Client-side), bez wysyłania ich na serwer.
- Edycja w czasie rzeczywistym (Live Preview): Podział ekranu na edytor i podgląd. Wszelkie zmiany w formularzu są natychmiast widoczne na wizualizacji dokumentu A4.
- Prywatność danych: Brak backendu. Twoje dane osobowe i zdjęcia nigdy nie opuszczają Twojego urządzenia.
- Dynamiczne sekcje: Możliwość dodawania dowolnej liczby pozycji w sekcjach: Doświadczenie, Edukacja, Certyfikaty, Języki oraz Linki.
- Inteligentny eksport PDF: Generowanie plików PDF z zachowaniem klikalnych linków (LinkedIn, GitHub, Portfolio) mimo renderowania dokumentu jako grafiki.
- Zapis i Odczyt Projektu: Możliwość zapisania stanu pracy do pliku
.jsoni wznowienia edycji w dowolnym momencie. - Automatyczne RODO: Aplikacja startuje z domyślnie wpisaną, aktualną klauzulą o ochronie danych osobowych.
- Obsługa zdjęć: Przetwarzanie zdjęć do formatu Base64 (zaszytych w pliku projektu).
Projekt został napisany w czystym JavaScript (Vanilla JS), HTML5 oraz CSS3 (z wykorzystaniem CSS Grid i Flexbox).
Wykorzystane biblioteki zewnętrzne:
- html2canvas - do renderowania drzewa DOM jako obrazu (Canvas).
- jspdf - do generowania pliku PDF z obrazu.
- SortableJS - (opcjonalnie) do obsługi list.
Aplikacja wykorzystuje pliki JSON do przenoszenia stanu projektu (saveCV / loadCV). Struktura pliku wygląda następująco:
{
"meta": {
"date": "2023-10-27T10:00:00.000Z"
},
"personal": {
"fullName": "Jan Kowalski",
"jobTitle": "Frontend Developer",
"email": "jan@example.com",
"rodo": "Treść klauzuli..."
},
"photo": "data:image/jpeg;base64,/9j/4AAQSkZJr...",
"experience": [
{
"title": "Senior Dev",
"company": "Tech Corp",
"link": "[https://techcorp.com](https://techcorp.com)"
}
],
"skills": "HTML, CSS, JS"
}
- Dane proste: Stringi dla pól tekstowych.
- Zdjęcia: Konwertowane do formatu Base64, dzięki czemu są integralną częścią pliku JSON.
- Tablice obiektów: Dla sekcji dynamicznych (Doświadczenie, Edukacja itp.), co pozwala na elastyczne odtwarzanie formularza przy wczytywaniu.
Jednym z największych wyzwań w generatorach CV opartych na przeglądarce jest zachowanie stylów CSS w pliku PDF. Zastosowano tutaj hybrydowe podejście:
- Renderowanie (Canvas): Biblioteka
html2canvaswykonuje "zrzut ekranu" elementu HTML#cvContenti rysuje go na elemencie<canvas>w pamięci przeglądarki. Pozwala to zachować idealne odwzorowanie układu, fontów i cieni. - Konwersja: Zawartość Canvasa jest zamieniana na obraz (JPEG).
- Generowanie PDF: Biblioteka
jspdfwkleja ten obraz do dokumentu A4. - Mapowanie Linków (Smart Links): Ponieważ Canvas spłaszcza tekst do obrazka, linki przestają działać. Aplikacja rozwiązuje to algorytmem:
- Skanuje oryginalny HTML w poszukiwaniu tagów
<a>. - Pobiera ich współrzędne i wymiary (
getBoundingClientRect). - Przelicza piksele ekranowe na milimetry w dokumencie PDF.
- Nakłada na plik PDF "niewidzialne strefy klikalne" (
pdf.link()) dokładnie tam, gdzie znajdują się linki wizualne.
Ponieważ jest to aplikacja typu Client-side, nie wymaga instalacji Node.js ani konfiguracji serwera.
- Sklonuj repozytorium:
git clone [https://github.com/Programista-Art/Cv-Mistrz.git]
- Otwórz plik
index.htmlw dowolnej nowoczesnej przeglądarce (Chrome, Firefox, Edge).
Projekt udostępniony na licencji MIT. Możesz go dowolnie modyfikować i używać do celów prywatnych oraz komercyjnych.
