Civic Tech Waterloo Region

CivicTech Waterloo Region Website - Developer Guide

Overview

This is the official website for CivicTech Waterloo Region, built with Jekyll and optimized for performance, accessibility, and maintainability.

Tech Stack

Project Structure

ctwr-web/
├── _config.yaml          # Jekyll configuration
├── _data/                # Jekyll data files
├── _includes/            # Jekyll includes (header, footer)
├── _site/                # Generated site (gitignored)
├── css/                  # Stylesheets
│   ├── style.css         # Main stylesheet
│   ├── style.min.css     # Minified version
│   └── critical.css      # Critical CSS for above-the-fold
├── js/                   # JavaScript files
│   ├── custom.js         # Custom functionality
│   ├── meeting.js        # Event management
│   └── bundle.min.js     # Minified bundle
├── images/               # Image assets
├── scripts/              # Build and deployment scripts
├── .github/workflows/    # GitHub Actions CI/CD
└── docs/                 # Documentation

Development Setup

Prerequisites

Installation

  1. Clone the repository:
    git clone https://github.com/CTWR-Org/ctwr-web.git
    cd ctwr-web
    
  2. Install Ruby dependencies:
    bundle install
    
  3. Install Node.js dependencies:
    npm install
    

Development Commands

# Start development server
bundle exec jekyll serve --livereload

# Build for production
npm run build:prod

# Run linting
npm run lint

# Run accessibility tests
npx pa11y-ci

# Run security audit
bundle exec bundler-audit check --update
npm audit

Build Process

The build process includes:

  1. CSS Minification: Uses clean-css-cli to minify stylesheets
  2. JavaScript Minification: Uses terser to minify and bundle JS files
  3. Jekyll Build: Generates static site with SEO optimization
  4. Asset Optimization: Images are optimized for web delivery

Production Build

npm run build:prod

This command:

Code Quality

Linting

Accessibility

Security

Performance Optimizations

Critical CSS

Critical above-the-fold CSS is inlined in HTML files for faster initial render.

Resource Hints

Image Optimization

Deployment

GitHub Pages

The site is automatically deployed to GitHub Pages on push to main branch.

Branch Previews

Feature branches are deployed to preview URLs:

Manual Deployment

# Build and deploy to preview branch
./scripts/setup-preview.sh

Contributing

Code Style

Pull Request Process

  1. Create feature branch from main
  2. Make changes with appropriate tests
  3. Run linting and accessibility checks
  4. Submit pull request with description
  5. Address review feedback

Commit Convention

Use conventional commits:

Browser Support

Performance Targets

Accessibility Standards

Security Considerations

Troubleshooting

Common Issues

  1. Jekyll build fails: Check Ruby version and gem dependencies
  2. CSS minification errors: Verify CSS syntax and remove comments
  3. JavaScript errors: Check ESLint configuration and fix syntax issues
  4. Accessibility failures: Review ARIA labels and keyboard navigation

Getting Help

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments