Development Guide
Development Guide
Quick Start
Prerequisites
- Ruby 3.0+
- Bundler
- Node.js (optional, for JS optimization)
Setup
# Install dependencies
bundle install
npm install # Optional
# Start development server
bundle exec jekyll serve --livereload
File Structure Overview
Core Configuration Files
_config.yml
- Main Jekyll configurationGemfile
- Ruby dependenciespackage.json
- Node.js dependencies
Content Directories
_pages/
- Static pages (About, CV, etc.)_publications/
- Research publications_talks/
- Presentations and talks_posts/
- Blog posts_portfolio/
- Resources and tools
Data Files (_data/
)
authors.yml
- Author informationnavigation.yml
- Site navigationui-text.yml
- UI text strings
Assets
assets/css/
- Stylesheetsassets/js/
- JavaScript filesimages/
- Image assets
Common Tasks
Adding a New Publication
- Create a new file in
_publications/
with format:YYYY-MM-DD-title.md
- Use this front matter template:
---
title: "Publication Title"
collection: publications
permalink: /publication/short-name
date: 2024-01-01
excerpt: "Brief description of the publication"
venue: 'Journal/Conference Name'
image: 'publication-image.png'
---
- Add the publication content below the front matter
Adding a New Talk
- Create a new file in
_talks/
with format:YYYY-MM-DD-title.md
- Use this front matter template:
---
title: "Talk Title"
collection: talks
permalink: /talk/short-name
date: 2024-01-01
excerpt: "Brief description of the talk"
venue: 'Conference/Event Name'
location: 'City, Country'
---
Updating Author Information
Edit _data/authors.yml
to update:
- Personal information
- Social media links
- Professional details
Modifying Navigation
Edit _data/navigation.yml
to:
- Add/remove menu items
- Change page URLs
- Reorder menu items
Styling and Customization
Theme Customization
- Edit
assets/css/main.scss
to modify styles - Update
_config.yml
for theme settings - Modify
_sass/
files for advanced styling
JavaScript Functionality
- Main JS file:
assets/js/_main.js
- Build optimized version:
npm run build:js
- Watch for changes:
npm run watch:js
Deployment
Local Testing
# Build the site
bundle exec jekyll build
# Serve locally
bundle exec jekyll serve
Production Deployment
- Push changes to
main
branch - GitHub Actions automatically builds and deploys
- Site is available at
https://nikhilkurian.github.io
Troubleshooting
Common Issues
- Build Errors
- Check Ruby version compatibility
- Ensure all gems are installed:
bundle install
- Verify YAML syntax in configuration files
- Missing Dependencies
- Install Ruby dev headers:
sudo apt install ruby-dev
- Install build tools:
sudo apt install build-essential
- Install Ruby dev headers:
- Image Issues
- Ensure images are in the
images/
directory - Check file paths in front matter
- Verify image file extensions
- Ensure images are in the
- Navigation Problems
- Check
_data/navigation.yml
syntax - Verify page URLs exist
- Ensure proper indentation in YAML files
- Check
Debug Mode
# Enable verbose output
bundle exec jekyll build --verbose
# Check for specific issues
bundle exec jekyll doctor
Best Practices
Content Management
- Use consistent naming conventions
- Include proper front matter for all content
- Add descriptive excerpts for better SEO
- Use appropriate image formats (PNG/JPG)
Code Quality
- Add comments to custom code
- Follow Jekyll best practices
- Test changes locally before deploying
- Keep dependencies updated
SEO Optimization
- Use descriptive page titles
- Include meta descriptions
- Optimize image alt text
- Maintain proper heading structure
Useful Commands
# Development
bundle exec jekyll serve --livereload
bundle exec jekyll serve --drafts
# Building
bundle exec jekyll build
bundle exec jekyll build --incremental
# JavaScript
npm run build:js
npm run watch:js
# Dependencies
bundle update
bundle outdated
npm update
Resources
This guide is maintained as part of the website repository.