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 installStart the development server:
npm run devThis 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 buildThis 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.