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.
- 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
- Ruby 3.1+ (3.4.5 recommended; see
.ruby-version) - Node.js 22+ (for build tools; see
.nvmrc) - Git
-
Clone the repository
git clone https://github.com/CTWR-Org/ctwr-web.git cd ctwr-web -
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
-
Start development server
npm run serve
The site will be available at
http://localhost:4000
- If
bundle exec jekyll buildfails with missing gems likesass-embeddedorgoogle-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
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
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 branchThis 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
- Primary: #FC6C6D (Coral)
- Secondary: #2D6F72 (Teal)
- Background: #FFFFFF (White)
- Text: #000000 (Black)
- Muted: #717275 (Gray)
- Font Family: DM Sans
- Headings: 700 weight
- Body: 400 weight
- UI Elements: 500 weight
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
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 is a top priority:
- HTTPS enforcement
- Security headers (CSP, HSTS, etc.)
- Dependency vulnerability scanning
- Regular security audits
- No hardcoded secrets
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
- CSS Architecture Guide - Comprehensive CSS system documentation
- CSS Quick Reference - Quick reference for developers
- CSS README - CSS-specific documentation and guidelines
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
npm run test) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- TemplateMo for the base template
- Bootstrap for the CSS framework
- Jekyll for the static site generator
- CivicTechWR community for feedback and contributions
- Website: civictechwr.org
- Email: [email protected]
- GitHub: @CTWR-Org
- Twitter: @civictechwr
Made with β€οΈ by the CivicTech Waterloo Region community