A fully customizable portfolio website template built using Vue.js, Tailwind CSS, and Lucide Icons. Easily modify the layout, add or remove sections, and showcase your work in a modern, responsive format. This project is perfect for developers, designers, or anyone looking for a clean and customizable online portfolio.
To add a new section, you need to create a corresponding Vue component (e.g., ContactSection.vue
) and manage its data using the JSON configuration file. Here's how to do it step-by-step:
Create the Component:
Create a new Vue component in your components
folder. For example, ContactSection.vue
Define the Section in the JSON File: Next, define the new section in your portfolio-data.json file. This is where you can manage the content of each section.
{
"sections": [
{
"name": "Home",
"path": "home",
"component": "HomeSection",
"pageTitle": "John Doe | Web Developer & Designer"
},
{
"name": "About",
"path": "about",
"component": "AboutSection",
"pageTitle": "About Me | John Doe"
},
{
"name": "Projects",
"path": "projects",
"component": "ProjectsSection",
"pageTitle": "Projects | John Doe"
},
{
"name": "Contact",
"path": "contacts",
"component": "ContactSection",
"pageTitle": "Contact Me | John Doe"
}
]
}
We leverage Vue's provide/inject
pattern to make the section data accessible to child components without the need to pass props down multiple levels. This pattern is particularly useful for managing shared state across components.
For example, take a look at the contactSection
variable in the HomeSection.vue
component:
const sections = inject("sections");
const contactSection = computed(() =>
sections.find((section) => section.name === "Contact")
);
Clone the repository:
git clone https://github.com/your-username/portfolio-template.git
cd portfolio-template/frontend
Install dependencies:
npm install
Run the development server:
npm run dev
Build for production:
npm run build
Deploy: After building, the production-ready files can be found in the dist
folder. Deploy these to your preferred web hosting service.
You have two options for deploying to GitHub Pages:
Run the deployment script from the root of the project:
./deploy_gh_pages.sh
Configure GitHub Pages settings:
gh-pages
branchFor step-by-step instructions on manually deploying your Vue.js project to GitHub Pages, please refer to the official Vue.js documentation: Vue CLI - Deployment to GitHub Pages
To add or remove sections, edit the portfolio.json
file located in the root of the project. Add a new section object or remove an existing one. Each section requires a name, path, component, and pageTitle.
The template currently supports English content. To extend this to other languages:
Contributions are welcome! If you'd like to improve this template or add new features, feel free to open a pull request.
git checkout -b feature-branch
).git commit -m 'Add new feature'
).git push origin feature-branch
).This project is licensed under the MIT License. See the LICENSE file for details.