Skip to content

CivicTech Waterloo Region's main website built with Jekyll - showcasing projects, events, and community engagement

License

Notifications You must be signed in to change notification settings

CivicTechWR/ctwr-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

CivicTech Waterloo Region Website

Build Status Accessibility Security

The official website for CivicTech Waterloo Region, a community group that brings together people from different sectors and industries to actively solve issues facing our local community using technology-based solutions.

🌟 Features

  • Modern & Responsive: Built with Jekyll and Bootstrap 5.3.3
  • Accessible: WCAG 2.1 AA compliant with comprehensive keyboard navigation
  • Performant: Optimized for Core Web Vitals with critical CSS and lazy loading
  • Secure: Regular security audits and updated dependencies
  • SEO Optimized: Built-in sitemap, RSS feed, and meta tags
  • Developer Friendly: Comprehensive documentation and automated workflows

πŸš€ Quick Start

Prerequisites

  • Ruby 3.1+ (3.4.5 recommended; see .ruby-version)
  • Node.js 22+ (for build tools; see .nvmrc)
  • Git

Installation

  1. Clone the repository

    git clone https://github.com/CTWR-Org/ctwr-web.git
    cd ctwr-web
  2. Install dependencies

    # Ensure you are on Ruby 3.1+ (3.4.5 recommended)
    # with rbenv (example):
    #   rbenv install 3.4.5 && rbenv local 3.4.5
    # or asdf: asdf install ruby 3.4.5 && asdf local ruby 3.4.5
    
    # Quick setup (checks Ruby, installs Bundler & gems)
    ./scripts/setup-ruby.sh
    
    # Install Node.js dependencies
    npm install
  3. Start development server

    npm run serve

    The site will be available at http://localhost:4000

Troubleshooting Ruby

  • If bundle exec jekyll build fails with missing gems like sass-embedded or google-protobuf, verify your Ruby matches .ruby-version (3.4.5). Older Rubies (e.g., 2.6) are not supported. After switching Ruby, run:
    rm -rf vendor/bundle
    gem install bundler
    bundle install

πŸ“ Project Structure

ctwr-web/
β”œβ”€β”€ _config.yaml          # Jekyll configuration
β”œβ”€β”€ _data/                # Jekyll data files (navigation, partners, projects)
β”œβ”€β”€ _includes/            # Reusable components (header, footer)
β”œβ”€β”€ css/                  # Stylesheets (componentized architecture)
β”‚   β”œβ”€β”€ main.css          # Master CSS loader (imports all components)
β”‚   β”œβ”€β”€ base/             # Foundation styles
β”‚   β”‚   β”œβ”€β”€ variables.css # CSS custom properties (design tokens)
β”‚   β”‚   β”œβ”€β”€ typography.css # Text and heading styles
β”‚   β”‚   β”œβ”€β”€ responsive.css # Responsive utilities
β”‚   β”‚   └── fallbacks.css  # Browser fallback utilities
β”‚   β”œβ”€β”€ components/       # Reusable UI components (17 files)
β”‚   β”‚   β”œβ”€β”€ buttons.css   # Button system (BEM methodology)
β”‚   β”‚   β”œβ”€β”€ navigation.css # Header and navigation
β”‚   β”‚   β”œβ”€β”€ footer.css    # Site footer
β”‚   β”‚   β”œβ”€β”€ hero.css      # Hero section
β”‚   β”‚   β”œβ”€β”€ profile.css   # Profile cards and about section
β”‚   β”‚   └── ...          # + 12 more components
β”‚   β”œβ”€β”€ pages/            # Page-specific styles
β”‚   β”‚   β”œβ”€β”€ about.css     # About page styles
β”‚   β”‚   └── projects.css  # Projects page styles
β”‚   └── style.css         # Legacy styles (128 lines, minimal)
β”œβ”€β”€ js/                   # JavaScript files
β”‚   β”œβ”€β”€ custom.js         # Custom functionality
β”‚   └── meeting.js        # Event management
β”œβ”€β”€ images/               # Image assets (optimized for web)
β”œβ”€β”€ scripts/              # Build and deployment scripts
β”œβ”€β”€ .github/workflows/    # GitHub Actions CI/CD
└── docs/                 # Documentation

πŸ› οΈ Development

Available Scripts

# Development
npm run serve              # Start Jekyll server with live reload
npm run build:dev          # Build for development
npm run build:prod         # Build for production (with minification)

# Code Quality
npm run lint               # Run all linters (HTML, CSS, JS)
npm run format             # Format code with Prettier

# Testing
npm run test:accessibility # Run accessibility tests
npm run test:security      # Run security audits
npm run test               # Run all tests

# Deployment
npm run preview            # Deploy preview branch

Code Quality

This project maintains high code quality standards:

  • HTML: Validated with HTMLHint
  • CSS: Linted with Stylelint
  • JavaScript: Linted with ESLint
  • Accessibility: Tested with Pa11y CI
  • Security: Audited with Bundler Audit and npm audit

🎨 Design System

Colors

  • Primary: #FC6C6D (Coral)
  • Secondary: #2D6F72 (Teal)
  • Background: #FFFFFF (White)
  • Text: #000000 (Black)
  • Muted: #717275 (Gray)

Typography

  • Font Family: DM Sans
  • Headings: 700 weight
  • Body: 400 weight
  • UI Elements: 500 weight

β™Ώ Accessibility

This website is built with accessibility in mind:

  • WCAG 2.1 AA compliant
  • Keyboard navigation support
  • Screen reader compatibility
  • High contrast ratios (4.5:1 minimum)
  • Semantic HTML structure
  • ARIA labels for interactive elements

πŸš€ Performance

Optimized for speed and user experience:

  • Critical CSS inlined for faster initial render
  • Resource hints (preload, preconnect, dns-prefetch)
  • Lazy loading for images below the fold
  • WebP images for modern browsers
  • Minified assets for production

πŸ”’ Security

Security is a top priority:

  • HTTPS enforcement
  • Security headers (CSP, HSTS, etc.)
  • Dependency vulnerability scanning
  • Regular security audits
  • No hardcoded secrets

πŸ“± Browser Support

  • Chrome 90+
  • Firefox 88+
  • Safari 14+
  • Edge 90+

πŸ“š Documentation

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Quick Contribution Steps

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests (npm run test)
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

πŸ“„ License

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

πŸ™ Acknowledgments

πŸ“ž Contact

πŸ“Š Project Status

GitHub last commit GitHub issues GitHub pull requests GitHub stars


Made with ❀️ by the CivicTech Waterloo Region community

About

CivicTech Waterloo Region's main website built with Jekyll - showcasing projects, events, and community engagement

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Contributors 6