A modern, responsive personal CV/portfolio website built with Nuxt 3, Vue 3, TypeScript, and Tailwind CSS.
- Fully responsive, dark-themed design with Tailwind CSS
- Built with Nuxt 3, Vue 3, and TypeScript
- Sections for About, Work Experience, Education, and Contact
- Smooth scroll navigation with active-section highlighting
- Expandable multi-role work-experience cards
- Legal pages: Privacy Policy, Legal Notice, Terms of Use, and Sitemap
- CI/CD pipeline with automated tests and coverage reporting
├── components/ # Vue components
│ ├── cv/ # CV section components (About, Experience, Education, Contact)
│ └── layout/ # Layout components (Navbar, Footer)
├── composables/ # Vue composables for data access
│ ├── useProfile.ts # Profile data composable
│ ├── useEducation.ts # Education data composable
│ ├── useExperiences.ts # Work-experience data composable
│ └── data/ # Static data files and TypeScript types
├── pages/ # Application pages
│ ├── index.vue # Main CV page
│ └── policies/ # Legal pages (privacy, legal notice, terms, sitemap)
├── plugins/ # Nuxt plugins (PrismJS syntax highlighting)
├── public/ # Static assets (images, logos)
└── tests/ # Vitest unit tests
- Node.js v22+
- Yarn
yarn installStart the development server at http://localhost:3000:
yarn devBuild for production:
yarn buildPreview the production build locally:
yarn previewGenerate a fully static site:
yarn generateThe project uses Vitest and @vue/test-utils for unit testing.
Run the tests once:
yarn testRun tests in watch mode (re-runs on file changes):
yarn test:watchRun tests with a coverage report:
yarn test:coverageAll CV content is managed through static data files in composables/data/:
| File | Description |
|---|---|
profileData.ts |
Name, title, bio, photo URL, and social links |
experiencesData.ts |
Work-experience entries with roles and technologies |
educationData.ts |
Academic qualifications |
Update these files to reflect your own information — no other files need to change.
The website uses Tailwind CSS. Customise the design via:
tailwind.config.js— colours, fonts, shadows, and animations- Component files in
components/— layout and structure