This is the source code for my personal portfolio website, built with Eleventy.
The project has been refactored to use Nunjucks templating for better maintainability.
_data/: Contains global data files.projects.json: Stores all project data (title, description, links, images). Add new projects here.site.js: Global site data (e.g., current year).
_includes/: Contains Nunjucks templates.layout.njk: The main base layout for all pages.components/: Reusable components (Navigation, Footer, ProjectCard, etc.).
html/: Contains the individual page templates.index.html: The home page, which loops throughprojects.jsonto display projects.[ProjectName].html: Individual project pages.
css/: CSS files, organized by component/section..eleventy.js: Eleventy configuration file.
- Open
_data/projects.json. - Add a new entry to the appropriate category array (e.g., "games", "web").
{ "title": "My New Project", "link": "MyProject.html", "img": "Images/...", "logos": ["Images/Logos/Tool.png"], "description": "Description here..." } - Create a new HTML file in
html/(e.g.,MyProject.html). - Add the front matter:
--- layout: layout.njk title: My New Project permalink: "{{ page.fileSlug }}.html" --- - Add your page content.
-
Install dependencies:
npm ci
-
Run the development server:
npx @11ty/eleventy --serve
The site will be available at
http://localhost:8080.
The site is automatically deployed to GitHub Pages via GitHub Actions when changes are pushed to the main branch.
See .github/workflows/deploy.yml for details.