diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 67394e668..97b9b6f68 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -70,6 +70,12 @@ jobs: # chmod +x _scripts/thumbnail_sizes.sh # ./_scripts/thumbnail_sizes.sh + - name: Inject feedback token + run: | + echo "feedback_token: \"$FEEDBACK_TOKEN\"" >> _config.yml + env: + FEEDBACK_TOKEN: ${{ secrets.FEEDBACK_TOKEN }} + # Outputs to the './_site' directory by default - name: Build Jekyll site run: | diff --git a/.gitignore b/.gitignore index 244b75f1c..62d1eda29 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,7 @@ _site # Ruby vendor directory vendor/bundle -.bundle \ No newline at end of file +.bundle + +# Local config override (contains secrets) +_config.local.yml diff --git a/Makefile b/Makefile index 2c9a7b941..c11ce8e11 100644 --- a/Makefile +++ b/Makefile @@ -11,13 +11,21 @@ all: serve install: bundle install -# Start Jekyll server +# Start Jekyll server (uses _config.local.yml if present) serve: - $(JEKYLL) serve + @if [ -f _config.local.yml ]; then \ + $(JEKYLL) serve --config _config.yml,_config.local.yml; \ + else \ + $(JEKYLL) serve; \ + fi # Start Jekyll server with incremental regeneration serve-incremental: - $(JEKYLL) serve --incremental + @if [ -f _config.local.yml ]; then \ + $(JEKYLL) serve --incremental --config _config.yml,_config.local.yml; \ + else \ + $(JEKYLL) serve --incremental; \ + fi # Generate category and tag data generate-data: diff --git a/_config.yml b/_config.yml index c58a10641..0d713f587 100644 --- a/_config.yml +++ b/_config.yml @@ -4,10 +4,12 @@ author: email: hi@civictech.ca description: >- - Civic Tech Toronto is a vibrant and diverse community of Torontonians engaged - in understanding and creating solutions for civic challenges through technology, + Civic Tech Toronto is a vibrant and diverse community of Torontonians engaged + in understanding and creating solutions for civic challenges through technology, design, and other innovative means. +feedback_token: "" + baseurl: "" github_username: civictechto diff --git a/_pages/feedback.md b/_pages/feedback.md new file mode 100644 index 000000000..56d275b1c --- /dev/null +++ b/_pages/feedback.md @@ -0,0 +1,812 @@ +--- +title: "Share Your Feedback" +layout: page +permalink: "/feedback/" +excerpt: "πŸ”“ Help us make Civic Tech Toronto better. Responses are anonymous β€” we never collect names or emails β€” and are stored openly in a public GitHub repository." +--- + + + +
+ +
+ +
+ + +
+ +
+
+ Were you attending in person or online? +
+ + +
+
+ +
+ Is this your first time at Civic Tech Toronto? +
+ + +
+
+
+ +
+
+ How was tonight overall? +
+ + + +
+
+
+ + +
+
+

As a first-timer…

+ +
+ Did you feel welcome tonight? +
+ + + +
+
+ +
+ Did you understand what was going on? +
+ + + +
+
+ +
+ Would you come back? +
+ + + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+

Online experience

+ +
+ Could you hear and see what was happening clearly? +
+ + + +
+
+ +
+ Did you feel like an equal participant, not just a viewer? +
+ + + +
+
+
+
+ + +
+ Tell us more +
+ + + + +
+
+ + +
+ About you +
+

All fields in this section are anonymous. This information helps us understand who is showing up and whether everyone feels included.

+ + + + + + + +
+ Do you identify as a racialized person? +
+ + + +
+
+ +
+ Do you have a disability or chronic condition? +
+ + + +
+
+ +
+ Do you feel like someone like you belongs in this space? +
+ + + +
+
+ +
+ Were tonight's topics or speakers relevant to your community or experience? +
+ + + +
+
+
+
+ +
+ +
+ +
+ + + + + +
+ + diff --git a/assets/css/custom.css b/assets/css/custom.css index 103465f6f..6b8afd69a 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -1,6 +1,6 @@ /* ========================================================================== CUSTOM.CSS - Last Updated: 2025-06-13 + Last Updated: 2026-02-24 Purpose: Extend Pico.css with custom responsive layouts and components -------------------------------------------------------------------------- TABLE OF CONTENTS @@ -529,3 +529,16 @@ aside .ogimage { gap: 0.5rem; padding-bottom: 1rem; } + +/* Feedback form: inline rating scale */ +.rating-row { + display: flex; + gap: 1.5rem; + flex-wrap: wrap; + margin-bottom: 0.25rem; +} +.rating-row label { + display: flex; + align-items: center; + gap: 0.25rem; +} diff --git a/docs/plans/2026-02-24-feedback-survey-design.md b/docs/plans/2026-02-24-feedback-survey-design.md new file mode 100644 index 000000000..4ca7c7a80 --- /dev/null +++ b/docs/plans/2026-02-24-feedback-survey-design.md @@ -0,0 +1,150 @@ +# Feedback Survey Page β€” Design + +**Date:** 2026-02-24 +**Status:** Approved + +## Overview + +A post-meetup feedback survey at `civictech.ca/feedback`. Fully anonymous, no login required. Designed to be completable in ~30 seconds (core questions only) or in more depth via optional expanders. Responses are committed as JSON files to the public `CivicTechTO/feedback` GitHub repo. + +--- + +## Architecture + +**New file:** `_pages/feedback.md` with `permalink: /feedback/` +**Layout:** existing `page` layout +**JS:** vanilla JavaScript (consistent with site conventions) + +### Submission Flow + +1. User fills out the form and clicks Submit +2. JS assembles a JSON object from all field values +3. JS calls the GitHub Contents API: + `PUT /repos/CivicTechTO/feedback/contents/submissions/.json` + using a fine-grained PAT scoped to Contents: write on that repo only +4. File is committed directly to `CivicTechTO/feedback` +5. Page replaces the form with a thank-you message + +### File Naming + +`submissions/YYYY-MM-DD-hacknight-NNN-<6-char-random>.json` + +Sortable by date, identifiable by meetup number, random suffix prevents collision. + +### PAT Handling + +Stored as a Jekyll config variable β€” set in `_config.yml` locally (gitignored) and as a GitHub Actions secret in CI. Rendered into the page at build time. Never committed in plaintext. + +The token is technically visible in rendered page source. This is acceptable: it is scoped so narrowly (write-only to one public repo) that the worst-case abuse is noise in the feedback repo. + +### Feedback Repo + +A new public repo `CivicTechTO/feedback` must be created. A `README.md` there should document the JSON schema. No CI or processing pipeline is needed at launch β€” the JSON files are the artifact. + +--- + +## Meetup Dropdown + +Jekyll populates the last ~10 meetups at build time from `site.meetups`, rendered as `