This is the code repository for my personal website, jasonmorris.com.
- Built with Eleventy static site generator
- Fully responsive design using logical CSS properties
- Strong focus on accessibility (strives for WCAG 2.2 AAA conformance)
- Performance optimized (Lighthouse score of 100 is average)
- Blog with categories and tags
- Built-in media handling for images, videos, and audio
- RSS feed with XSL stylesheet
- Automated accessibility testing in CI/CD pipeline
- Tagged PDF resume generation with DocRaptor
- Comprehensive linting and validation
- Static Site Generator: Eleventy (11ty)
- CSS Processing: PostCSS, Autoprefixer, CSSnano
- JavaScript: ESLint, Terser
- Fonts: Atkinson Hyperlegible, Source Code Pro
- Media: Eleventy-img for image optimization
- Testing: HTML-validate, Pa11y, stylelint
- Version Control: Git
- CI/CD: GitHub Actions
- Node.js (LTS version)
- npm
- Git
- Clone the repository:
git clone https://github.com/jsnmrs/jasonmorris.git
cd jasonmorris
- Install dependencies:
npm install
Start the development server:
npm run dev
This will:
- Start Eleventy in development mode with live reload
- Watch and compile CSS files
- Watch and compile JavaScript files
Build the site for production:
npm run build
This command:
- Cleans the output directory
- Runs all linting tasks
- Builds CSS and JavaScript
- Generates the static site
- Validates the output
npm run dev
- Start development servernpm run build
- Production buildnpm run lint
- Run all lintersnpm run validate
- Validate HTML outputnpm run format
- Format code with Prettiernpm run clean
- Clean build directories
Create new blog posts in the posts
directory using Markdown:
---
title: Post Title
date: 2024-01-24
layout: post
tags:
- post
- category
category: category
permalink: "{{ category }}/{{ title | slug }}/index.html"
meta: "Post description"
---
Content goes here...
Add new pages in the pages
directory using either Markdown or HTML.
Use the picture
shortcode for responsive images:
{% picture "image-name", "jpg", "240", "320", "1600", "Alt text", "Optional caption" %}
Embed YouTube videos:
{% youtube "VIDEO_ID", "poster-name", "jpg", "800", "450", "Video title" %}
Or Vimeo videos:
{% vimeo "VIDEO_ID", "poster-name", "jpg", "800", "450", "Video title" %}
The project includes several types of automated testing:
- Accessibility testing with Pa11y and Accessibility Insights for Web
- HTML validation
- CSS linting with stylelint
- JavaScript linting with ESLint
- Markdown linting with remark
Deployment is handled through GitHub Actions (see .github/workflows/
):
- Automated builds and tests on pull requests
- Deployment to production on merge to main
- Tagged PDF generation for resume updates
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests (
npm run build
) - Submit a pull request
This project is licensed under the MIT License.
- Eleventy for the static site generator
- Atkinson Hyperlegible font by Braille Institute
- All other open source contributors and maintainers
For questions or issues, please open an issue on GitHub.