A polished personal site built with Jekyll and GitHub Pages to showcase my programming projects, blog posts, and CV. The site combines lightweight animations, a dark/light theme toggle, and modular content collections to keep the portfolio easy to maintain and extend.
- Responsive layout using Bootstrap 5 with a hero section, project grid, and blog cards
- Dark/light theme toggle with animated particle background on the homepage
- Scroll-triggered animations and smooth page transitions powered by vanilla JavaScript
- Structured project collection (
_projects/) with individual detail pages - Blog section sourced from Markdown posts in
_posts/ - SEO-ready configuration (
jekyll-seo-tag, Open Graph metadata, social previews)
- Install prerequisites
- Ruby (>= 3.0 recommended)
- Bundler (
gem install bundler)
- Install dependencies
bundle install
- Run the site locally
bundle exec jekyll serve --livereload - Open http://127.0.0.1:4000 in your browser. Changes to Markdown, HTML, CSS, and JS files are picked up automatically.
_config.yml # Global site metadata, URLs, plugins
_layouts/ # Base templates (default, project, etc.)
_includes/ # Reusable components (head, navbar, footer)
_posts/ # Blog posts (Markdown, dated filenames)
_projects/ # Project metadata & content (Markdown, front matter)
blog/index.html # Blog listing page
projects/index.html # Project grid overview
css/ # Custom styles (global + particle animation)
js/ # Scroll animations and page transition scripts
images/ # Profile photo and other assets
_site/ # Generated output (ignored by Git)
Gemfile # Ruby dependencies for GitHub Pages
- Site metadata: Update titles, descriptions, and social links in
_config.yml. - Homepage content: Edit
index.htmlfor hero text, highlights, and call-to-action links. - Projects: Add new Markdown files in
_projects/with front matter (title,summary,github_repo, etc.). Each file becomes a dedicated project page. - Blog posts: Create new Markdown files under
_posts/using theYYYY-MM-DD-title.mdnaming convention. - Styling: Adjust global styles in
css/style.cssand animation-specific rules incss/dots_animation.css. - Scripts: Tweak scroll effects in
js/scroll-animations.jsand navigation transitions injs/page-transitions.js.
This repository is ready for GitHub Pages. Push changes to the default branch and GitHub Pages will build and publish the site automatically. To produce a static build locally run:
bundle exec jekyll buildThe generated HTML lives in _site/.
- Clear the
_site/directory if you notice stale content after switching branches. - Run
bundle updatewhen GitHub Pages upgrades its dependency set (see the pages-gem changelog). - Use
JEKYLL_ENV=production bundle exec jekyll buildto replicate the production build locally with minified assets.
- Code: Licensed under the MIT License. You are free to use, modify, and distribute the code with attribution.
- Content (text, images, personal materials): © Nicolas Schneider. These may not be reused or redistributed without permission. For inquiries regarding content reuse, please contact me.