Draft
Conversation
Co-authored-by: DamienDrozd <79458391+DamienDrozd@users.noreply.github.com>
Co-authored-by: DamienDrozd <79458391+DamienDrozd@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add PDF reader to CV section
Add interactive PDF reader for CV section
Oct 11, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Replaced the static JPG image in the CV section with an interactive PDF reader, allowing users to zoom, navigate, and download the CV directly from the portfolio.
Changes Made
New PDF Viewer Implementation
react-pdflibrary to display CV as an interactive PDF documentTechnical Solutions
Server-Side Rendering (SSR) Fix:
The main challenge was that react-pdf requires browser APIs that aren't available during Next.js server-side rendering. Solved by:
ssr: falsefor the Document and Page componentsuseEffectto configure PDF.js worker only in the browserPDF.js Worker Configuration:
public/directory for local servingUser Experience Improvements
Screenshots
PDF Reader with Controls
The PDF displays with a control bar featuring:
Full Page View
Files Modified
src/components/CVSection.tsx- Complete rewrite with PDF reader functionalitypackage.json- Added react-pdf@10.2.0 and pdfjs-dist@5.4.296Files Added
public/media/Drozd_Damien_CV_FullStack.pdf- PDF version of CVpublic/pdf.worker.min.mjs- PDF.js worker for client-side renderingTesting
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
fonts.googleapis.com/usr/local/bin/node /home/REDACTED/work/portfolio/portfolio/node_modules/next/dist/compiled/jest-worker/processChild.js(dns block)next-server (v15.5.0)(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
Je veux ajouter une section CV en mettant un lecteur de PDF
The following is a snapshot of a chat conversation between a user and an AI coding assistant. Prioritize later messages in the conversation.
User: Pour le ProjectsSection et ExperiencesSection j'aimerais créer un nouveau composant qui fusionnerait les deux sous forme d'une frise chroologique. ce composant se situerai sur la page principale.
Garde les anciens composants qui sont utiles sur d'autres pages
AI: Je vais créer un nouveau composant Timeline qui fusionnera les projets et expériences sous forme de frise chronologique. D'abord, laissez-moi examiner les composants existants pour comprendre leur structure.
AI: Maintenant, je vais créer un nouveau composant Timeline qui combine les projets et expériences dans une frise chronologique. Je vais d'abord créer le composant principal :
AI: Maintenant, je vais créer le composant TimelineItem qui représente chaque élément de la timeline :
AI: Je vais installer framer-motion pour les animations, puis modifier le composant en cas d'erreur :
AI: Maintenant, je vais mettre à jour la page principale pour utiliser le nouveau composant Timeline au lieu des deux composants séparés :
AI:
AI:
AI: Maintenant, vérifions que les erreurs ont été résolues et testons le projet :
AI: Il semble y avoir un problème de cache avec TypeScript. Essayons de redémarrer le serveur de développement :
AI: Les fichiers existent bien. Essayons de lancer le serveur de développement pour voir si tout fonctionne :
AI: Vérifions que le serveur démarre correctement en consultant la sortie :
AI: Parfait ! Le serveur est maintenant en cours d'exécution sur le port 3001. Créons également une version simplifiée sans animation au cas où il y aurait des problèmes avec framer-motion. D'abord, vérifions le résultat en ouvrant le navigateur :
AI: Maintenant, créons aussi une version alternative du TimelineItem sans framer-motion au cas où il y aurait des problèmes :
AI:
AI:
AI:
AI: Vérifions que tout fonctionne maintenant :
AI: Essayons de corriger cette erreur d'importation en redémarrant TypeScript :
AI: La compilation semble réussir avec le serveur Next.js. Vérifions en consultant la page web. Créons une petite page de test pour voir si notre timeline fonctionne :
AI: Essayons avec un chemin relatif différent :
AI:
AI: Maintenant, essayons de redémarrer le serveur pour forcer une recompilation complète :
AI: Parfait ! Le serveur est maintenant sur le port 3000. Vérifions si notre timeline fonctionne :
AI: Testons également la page de test :
AI: Maintenant, créons également un composant responsive amélioré pour les petits écrans. Ajoutons quelques styles responsive à la timeline :
AI:
AI:
AI:
AI: Maintenant, ajoutons l'affichage de l'année en mobile dans le contenu de la carte :
AI:
AI: Testons maintenant notre timeline améliorée :
AI: Pour finir, créons un fichier README pour documenter les nouveaux composants :
AI: Parfait ! J'ai créé un nouveau composant Timeline qui fusionne les projets et expériences sous forme de frise chronologique. Voici un récapitulatif de ce qui a été implémenté :
✅ Composants créés
TimelineSection.tsx- Composant principal avec :TimelineItem.tsx- Composant pour chaque élément avec :✅ Modifications apportées
page.tsx) : Remplacement des deux sections par la nouvelleTimelineSectionAI: et
AI: restent disponibles pour d'autres pages
🎨 Caractéristiques visuelles
Le composant est maintenant intégré dans votre portfolio et accessible sur
http://localhost:3000. Les anciens composants sont conservés pour une éventuelle utilisation sur d'autres pages du site.User: Fais en sorte que sur téléphone la frise se condanse d'un seul coté, avec la ligne a gauche et les cartes a droite
AI: Je vais modifier les composants Timeline pour que sur mobile, la frise soit condensée avec la ligne à gauche et toutes les cartes à droite. Laissez-moi d'abord examiner les fichiers actuels et effectuer les modific...
Created from VS Code via the GitHub Pull Request extension.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.