SRCCON Site Starterkit (Template Repo)
📋 Audience: This README is for OpenNews maintainers who manage this template and create new SRCCON event sites.
🎯 Purpose: Provides a standardized, automated foundation for launching new SRCCON event websites as subdomain sites within the OpenNews organization.
bundle exec rake setup to automatically swap README files and prepare for event customization.
- Quick Start: Creating a New SRCCON Site
- Recent Updates (2026)
- Template Contents
- Maintaining This Template
- Key Maintenance Tasks
- Supporting Documentation
- Additional Resources
- Troubleshooting
- License
- Click "Use this template" in GitHub to create a new repository
- Name it following the pattern:
srccon-<YYYY|name> - Clone locally:
bundle installthenbundle exec rake setup
After setup completes, follow the workflow in the new repo's README.md for configuration, development, and deployment. See SITE_README.md for a preview of the event site documentation.
This template was significantly upgraded in 2026 to reduce repetitive work and migrate deployment continual integration/deployment (CI/CD) patterns to use GitHub Actions rather than Travis. It also upgrades authentication-security connections between AWS S3 and GitHub. Details:
Previously we used long-lived AWS credentials like
AWS_ACCESS_KEY_ID or AWS_SECRET_ACCESS_KEY stored as individual repository secrets, requiring rotation and management. Which we did not do frequently.
Now: We use a single GitHub Organization-level AWS_ROLE_ARN secret using OpenID Connect (OIDC):
- ✅ Short-lived credentials (auto-expire quickly)
- ✅ No secrets in cloud storage or on local machines
- ✅ Granular permission controls that do only what we need, not more
- ✅ One secret to manage across all OpenNews repos, via OpenNews Organization-level secrets in GitHub.
Details: AWS_authentication.md
Previously, event details were scattered across HTML and Markdown files requiring manual find-and-replace. And many full-event templates were missing from the baseline in this template repo. They needed to be copy-pasted into new event repos from prior years as pre-conference deadlines approached. This brought in inconsistencies in dates, locations and pricing details.
Now: Most event metadata is now centralized in _config.yml:
[...snip...]
event_name: "SRCCON 2052"
event_date: "April 1-3, 2052"
event_venue: Nerd Church
price_base: $450
price_med: $750
price_full: $1050
price_stipend: $500
[...snip...]Changes to these values propagate automatically throughout the site when it is rebuilt as a static site via bundle exec rake build. The built code is then deployed via GitHub PRs & merges into staging or main protected branches. GitHub Actions auto-deploys successful merges to staging and main to their respective public-facing buckets & URLs.
- Dynamic content - Dates, venues, prices populate from config
- Conditional rendering - Show/hide content based on timeline flags (
schedule_live,session_deadline_passed) - Session YAML integration - Program pages render from
_data/sessions.yml - Auto-generated footer - Previous SRCCON event links generated automatically
New capabilities:
- YAML duplicate key detection (
bundle exec rake validate_yaml) - Configuration validation (
bundle exec rake check) - Lotta pre-built and built file testing (
bundle exec rake test) - Performance warnings
- A weekly healthcheck pattern that runs the tests
- Dependabot keeping an eye on direct dependencies, via GitHub
New automated formatting system maintains consistent code style:
- StandardRB - Zero-config Ruby linter and formatter
- Prettier - Opinionated formatter for HTML, CSS, JavaScript, YAML, and Markdown
- Unified commands -
bundle exec rake lintchecks all files,bundle exec rake formatfixes all issues - Editor integration -
.editorconfigworks with most editors automatically - Dual toolchain - Ruby formatting via StandardRB, everything else via Prettier with Node.js
Previously our S3 buckets and CloudFront caching-setup IDs were somewhat buried in environment-specific files or environment variables.
Now: All are consolidated and visible in _config.yml:
deployment:
bucket: site-starterkit.srccon.org
staging_bucket: staging.site-starterkit.srccon.org
cloudfront_distribution_id: E1234ABCD5678Previously, we used Travis CI with manual configuration per repository and stored (the same broad) secrets in every repo.
Now: Three automated workflows:
- Test - Validate PRs and any branches not named
mainorstaging - Deploy - Auto-deploys any pushes/merges to
main(production) orstagingbranches to their respective public S3 buckets - Health Check - Weekly automated testing and outdated-dependency reports
Configuration & Build:
_config.yml- Primary configuration file (event details, feature flags, deployment)Rakefile-:build,:serve,:test, and:deploytasks, plus moretasks/*.rake- Test suite and Outdated checks as tasks.ruby-version- Ruby version specificationGemfile/Gemfile.lock- Ruby dependenciespackage.json/package-lock.json- Node.js dependencies (Prettier).editorconfig/.prettierrc/.prettierignore/.standard.yml- Code formatting configuration
Content Pages:
homepage.md- Event landing pagewelcome.md- Attendee FAQparticipation_form.md- Session proposal guideprogram.md- Session schedulesponsors.md/sponsors_about.md- Sponsor informationscholarships.md/volunteer.md/conduct.md- Supporting pages
Templates & Data:
_layouts/- Page layouts, defaults tosimple_layout.html_includes/- Reusable components (navigation, footers, session tables)_data/sessions.yml- Session data for program schedule
Assets:
media/css/- Stylesmedia/js/- Client-side JavaScriptmedia/img/- Images and sponsor logos (this repo is the library of more sponsors than a given event may need)
Documentation:
README.md- Template maintainer documentation (this file, deleted byrake setup)SITE_README.md- Event organizer documentation (becomesREADME.mdafterrake setup)TROUBLESHOOTING.md- Common issues and solutions (included in event repos)AWS_authentication.md- OIDC setup details (template-only, deleted byrake setup)
Continuous Integration & Deployment (CI/CD):
.github/workflows/deploy.yml- Production/staging deployment.github/workflows/test.yml- PR validation.github/workflows/health-check.yml- Weekly monitoring of responsiveness and outdated dependencies
1. Deploy Workflow (.github/workflows/deploy.yml)
- Triggers on push to
mainorstagingbranches - Builds Jekyll site with Ruby (see
.ruby-version) - Deploys to S3 using AWS CLI
- Invalidates CloudFront cache (production only)
2. Test Workflow (.github/workflows/test.yml)
- Runs on all PRs and non-deployment branches
- Validates Jekyll build succeeds
- Checks internal links with html-proofer
- Tests deployment commands with
--dryrunflag - No artifacts copied to S3
3. Health Check Workflow (.github/workflows/health-check.yml)
- Runs weekly (Mondays at noon UTC)
- Validates template still builds successfully
- Reports outdated dependencies
- Creates GitHub issue on failure
Update this template when you discover:
- Out of date Gems and versions (so long as they aren't breaking changes)
- Bugs or issues affecting multiple SRCCON sites that you want to patch now before we generate the next event
- Improved CI/CD workflows or automation
- Security updates or best practices
- New features, logos and styles useful for all events
- Documentation improvements
When making changes to the template repository itself:
Workflow:
-
Create a feature branch following the pattern:
<year>-<initials>-<task>git checkout -b 2026-tk-update-ruby
-
Make your changes and test thoroughly (see Testing Template Changes)
-
Update documentation:
- Update this README.md if maintenance procedures change
- Update SITE_README.md if event organizer workflow changes
- Add entry to "Recent Updates" section if it's a significant change
- Update TROUBLESHOOTING.md if addressing common issues
-
Run validation:
bundle exec rake check bundle exec rake test bundle exec rake format
-
Create PR to
main:- The template repo uses
mainbranch only (nostagingneeded) - Document what changed and why in PR description
- Note if changes affect existing event sites
- Consider asking @Copilot or colleagues for review
- The template repo uses
-
Merge and deploy:
- Once merged to
main, GitHub Pages auto-deploys tohttps://site-starterkit.srccon.org - New event repos created after this point will include your changes
- Once merged to
Important Notes:
- Make sure CNAME file is present and set to
site-starterkit.srccon.org, since GitHub Pages hosting depends on it - Template changes only affect NEW event sites created after the change
- Existing event sites don't automatically receive updates (see Propagating Fixes)
- Breaking changes should be documented clearly and coordinated with event organizers
When you fix something in the template that affects live event sites:
For Critical Fixes (security, broken functionality):
- Document the fix in the PR description with clear before/after behavior
- Create issues in affected event repositories:
- Link to the template PR/commit
- Provide specific files that need updating
- Include reproduction steps if it's a bug
- Consider direct PRs to affected repos if time-critical
- Notify event organizers via issue comments or direct communication
For Non-Critical Improvements (features, cleanup):
- Document in template PR what changed and benefits
- Create tracking issue in template repo listing affected sites
- Let event organizers decide whether to adopt changes
- Provide migration guide if the update requires configuration changes
Helping Event Organizers Pull Updates:
Event sites can selectively adopt template improvements:
# In the event repo, add template as a remote
git remote add template https://github.com/OpenNews/srccon-site-starterkit.git
git fetch template
# View specific file changes
git diff main template/main -- path/to/file.rb
# Cherry-pick specific commits
git cherry-pick <commit-hash>
# Or manually copy files/changes as neededWhat to Backport:
- ✅ Security updates (Ruby/gem versions, GitHub Actions)
- ✅ Bug fixes that break functionality
- ✅ Deployment config improvements
⚠️ New features (event organizer decides)- ❌ Documentation changes (each repo has its own)
- ❌ Event-specific content/configuration
Before pushing template changes that will affect future event sites:
Option 1: Local Testing (Quick)
bundle exec rake serve # Preview at localhost:4000
bundle exec rake test # Run validation tests
bundle exec rake check # Verify configurationOption 2: Test Event Repo (Thorough)
- Create a test repository from the template ("Use this template" button)
- Clone locally and run
bundle exec rake setup - Test the complete event organizer workflow
- Verify
SITE_README.mdbecomesREADME.mdcorrectly - Delete test repo when done
What to Test:
- Jekyll builds without errors (
bundle exec rake build) - All rake tasks work (
bundle exec rake -Tand try each) - Documentation is clear and accurate
.vscode/settings.jsonworks with required extensions- GitHub Actions workflows validate (check
.github/workflows/test.yml)
The template uses a rolling release model without formal version numbers:
Why No Versions:
- Event sites are typically one-time use (for a specific conference)
- Template changes are incremental improvements, not breaking releases
- Event organizers rarely need to "upgrade" an in-progress site
- Git history provides sufficient tracking of changes
Tracking Template History:
- Use Git commit SHAs to reference specific template states
- Significant updates documented in "Recent Updates" section
- GitHub's commit history shows all changes:
https://github.com/OpenNews/srccon-site-starterkit/commits/main
Maintaining "Recent Updates" Section:
Add entries to the "Recent Updates (2026)" section when:
- ✅ Major feature additions (new rake tasks, workflows, automation)
- ✅ Significant architecture changes (auth, deployment, config structure)
- ✅ Tool changes that affect contributor workflow (new linters, formatters)
- ❌ Minor bug fixes (document in commit messages instead)
- ❌ Content updates (logo additions, sponsor changes)
- ❌ Documentation improvements (unless workflow changes)
When to Archive Updates:
- When the section becomes too long (>10 subsections), consider:
- Moving older updates (2+ years) to a CHANGELOG.md file
- Keeping only current year's major updates in README
- Linking to CHANGELOG.md for historical context
Communicating Breaking Changes:
If a template change would break existing event sites:
- Document clearly in PR description
- Add to "Recent Updates" with
⚠️ warning - Create issues in all active event repositories
- Provide migration path or rollback instructions
- Consider delaying merge until after active events conclude
Regular (when starting a new event):
- Update sponsor logos in
media/img/partners/ - Review and update prices if changed
- Check for outdated Ruby/gem versions (
bundle update) - Run
npm updateto update Prettier and formatting dependencies - Consider merging in Dependabot recommendations on GitHub Action workflows version upgrades
- Run
bundle exec rake formatto maintain consistent code style - Update Code of Conduct if OpenNews policy changes
- Improve accessibility based on audits
- Add new validation tests based on issues discovered
Periodic (annually):
- Consider upgrading Ruby version in
.ruby-version - Validate CloudFront distribution IDs
- Audit AWS IAM permissions
- Review and update documentation
Automated:
- Dependabot - Creates PRs for Ruby gem and npm package updates (configured in
.github/dependabot.yml) - Weekly health checks - Health check workflow reports outdated dependencies, too
Manual checks:
# Ruby dependencies
bundle exec rake outdated # Check for outdated gems
bundle exec rake outdated:all # Include child dependencies of our main dependencies (stuff we can't fix but should generally understand is falling behind)
# Node.js dependencies (Prettier)
npm outdated # Check for outdated npm packagesUpdating dependencies:
# Ruby gems
bundle update # Update all gems
bundle update jekyll # Update specific gem
bundle install # Install after Gemfile changes
# Node.js packages
npm update # Update all npm packages
npm update prettier # Update specific package
npm install # Install after package.json changesThe template includes automated code formatting using StandardRB (Ruby) and Prettier (HTML, CSS, JS, YAML, Markdown). This ensures consistent code style across all SRCCON event sites.
Why These Tools:
- Zero configuration - StandardRB and Prettier work out-of-the-box with sensible defaults
- Automatic fixing - Most issues auto-correct on save (with editor integration) or via
bundle exec rake format - Dual toolchain - Ruby via StandardRB, everything else via Prettier with Node.js
- Git-friendly - Consistent formatting reduces noisy diffs and merge conflicts
Quick Reference:
bundle exec rake lint # Check all formatting
bundle exec rake format # Auto-fix all issuesFor Maintainers:
- Configuration lives in
.standard.yml,.prettierrc, and.prettierignore - Formatting rules are intentionally minimal to reduce bikeshedding
- To modify rules, update config files and run
bundle exec rake formatacross the template - Consider CI integration in
.github/workflows/test.ymlif format drift becomes an issue
For Event Organizers:
See SITE_README.md - Code Formatting & Linting for detailed usage instructions and commands.
The template includes .vscode/settings.json that configures automatic formatting for VSCode and VSCode-based editors (Cursor, Antigravity, VSCodium, etc.).
What It Does:
- Format on save - All files auto-format when saved
- Format on paste - Pasted content auto-formats to match project style
- Real-time linting - Issues appear in Problems tab as you type
- Consistent tooling - Same behavior across all contributors' editors
For Maintainers:
- Settings are in
.vscode/settings.jsonand committed to the repository - Works with Prettier and StandardRB extensions
- Applies to template and all event repos created from it
- To modify: Edit
.vscode/settings.jsonand test with the required extensions installed
For Event Organizers:
See SITE_README.md - Editor Setup for complete setup instructions, required extensions, and troubleshooting.
Event organizers working from this template will have access to:
- SITE_README.md - Complete setup and development guide (becomes
README.mdin event repos) - TROUBLESHOOTING.md - Common issues and solutions for setup, build, deployment, and editor problems
- tasks/README.md - Rake task development documentation
Template maintainers should also reference:
- AWS_authentication.md - OIDC setup and configuration details
- SRCCON Event Site - Main SRCCON landing page
- Jekyll Documentation - Static site generator
- GitHub Actions Docs - CI/CD documentation
- AWS S3 Documentation - Static hosting
- AWS CloudFront Documentation - CDN configuration
These issues are specific to maintaining the template repository itself. For event site development issues, see TROUBLESHOOTING.md.
Template changes not appearing in new sites:
- Ensure you're using GitHub's "Use this template" button, not forking
- After creating from template, pull latest changes if updates were recent
- Template changes only affect NEW sites created after the change
rake setup fails or behaves unexpectedly:
- Check that you're running it on a NEW repo created from template, not the template itself
- Ensure
SITE_README.mdexists before running - The task is idempotent but warns if files are already processed
- Test setup task on a disposable test repo, not the template repo
Testing template changes:
- Create a disposable test repo from template to verify changes
- Test with
bundle exec rake setupto ensure event organizer experience works - Don't run destructive setup tasks on the template repo itself
- Verify build works:
bundle exec rake clean && bundle exec rake build
Deployment workflow configuration (in template):
- Verify
AWS_ROLE_ARNsecret exists at organization level - Ensure workflow files in
.github/workflows/have correct triggers - Test workflow changes in a test repo before merging to template
For issues that event organizers encounter when building and deploying their sites, see TROUBLESHOOTING.md, which covers:
- First-time setup and quick triage
- Environment and dependency issues
- Build and cache problems
- Jekyll and template errors
- YAML and data file issues
- Deployment problems
- Manual smoke testing
The SRCCON site template is available as open source under the terms of the MIT License.