Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
5ff944f
correction doublons images archive devfestnoz 2024
rvailleux Jun 17, 2024
694f2bb
modification home page pour devfest 2024 + création page archive
rvailleux Jun 17, 2024
ea968f7
suppression image slidedecks en doublon
rvailleux Jun 18, 2024
171e1da
correction path sur les slidedecks des ateliers passés
rvailleux Jun 18, 2024
6fc549c
correction url cfp homepage
rvailleux Jun 18, 2024
9610a70
ajout graphisme homepage + correction typos
rvailleux Jun 19, 2024
84f047c
factorisation template button
rvailleux Jun 19, 2024
b2279f5
correction path img logo slider
rvailleux Jun 19, 2024
2b9f65d
update favicon
rvailleux Jun 20, 2024
ca9952f
updating meta tags
rvailleux Jun 20, 2024
2488269
ajout aftermovie
rvailleux Jun 20, 2024
5ccde86
Remove link in description
sliard Jun 21, 2024
271987a
ajout 1ers speakers
rvailleux Jul 1, 2024
e4c07ea
Merge branch 'master' of github.com:Code-d-Armor/conference
rvailleux Jul 1, 2024
98f7586
typo
rvailleux Jul 1, 2024
ddb1a62
Merge branch 'master' of github.com:rvailleux/conference
rvailleux Sep 2, 2024
b3b462f
add speakers
rvailleux Sep 2, 2024
bd598b7
add program
rvailleux Sep 2, 2024
c477c5b
correction 6conf + ajout include Agenda
rvailleux Sep 3, 2024
0d7fa40
change photo pascal
rvailleux Sep 5, 2024
44b7428
change photo pascal
rvailleux Sep 5, 2024
822da82
added id on speakers list + Thomas' photo
rvailleux Sep 6, 2024
e956959
added the agenda
rvailleux Sep 6, 2024
790e924
Merge branch 'add_program' of github.com:Code-d-Armor/conference
rvailleux Sep 6, 2024
1795e90
Merge branch 'master' of github.com:Code-d-Armor/conference
rvailleux Sep 6, 2024
33b8e15
fix img size
rvailleux Sep 6, 2024
2b8716b
added sponsors
rvailleux Sep 6, 2024
a0fd527
added CNAME entry
rvailleux Sep 10, 2024
e6c874e
added speaker and talk pierre renault
rvailleux Sep 27, 2024
70a9414
added schedule
rvailleux Oct 2, 2024
62dc120
correction centre de congres en palais
rvailleux Oct 2, 2024
272a797
added photos
rvailleux Oct 22, 2024
b05c5b5
added newsletter in front page
rvailleux Oct 22, 2024
5d5b4db
created archive devfest 2024
rvailleux Oct 22, 2024
0377b8b
Migration vers 2025
rvailleux Mar 31, 2025
5bb3481
update actions
rvailleux Mar 31, 2025
3b1af30
update actions
rvailleux Mar 31, 2025
87366eb
new action script
rvailleux Mar 31, 2025
136432f
manual trigger
rvailleux Mar 31, 2025
b6f3178
upgrading ruby
rvailleux Mar 31, 2025
803195e
correction action
rvailleux Mar 31, 2025
ac782db
removing actions
rvailleux Mar 31, 2025
6c6c730
ajout des speakers
rvailleux Jul 18, 2025
13c9f5f
ajout billeterie
rvailleux Jul 18, 2025
2ae842f
ajout social links pour chaque speaker
rvailleux Jul 18, 2025
f28c83d
empty
rvailleux Jul 18, 2025
6eab5c7
Create jekyll.yml
rvailleux Jul 18, 2025
435d3a4
action
rvailleux Jul 18, 2025
53de3ca
Update jekyll.yml
rvailleux Jul 18, 2025
fc5c0fe
changement ordre des speakers
rvailleux Jul 18, 2025
dc0acb3
remplacement logo
rvailleux Jul 31, 2025
dfeeb48
ajout page sponsoring
rvailleux Jul 31, 2025
44924bd
changement heure d u début
rvailleux Jul 31, 2025
ea8ef7f
added sponsor section
rvailleux Aug 1, 2025
9cf38ff
changement header sponsor
rvailleux Aug 4, 2025
6aafc12
typo billetterie
rvailleux Aug 24, 2025
3ba817b
added schedule, corrected button.html
rvailleux Aug 24, 2025
38dae68
corrections liens programme
rvailleux Aug 24, 2025
59a66ba
ajout du cta suive la page code darmor
rvailleux Aug 24, 2025
e6233e5
ajout menu linkedin + tooltip sur le menu
rvailleux Aug 24, 2025
7e98315
correction titre hannah
rvailleux Aug 24, 2025
ddedb57
boutique dans la home
rvailleux Aug 24, 2025
50c75a2
correctio
rvailleux Aug 24, 2025
cb77412
correction css logo sponsors
rvailleux Aug 24, 2025
a5e2f16
correction padding
rvailleux Aug 24, 2025
3a39fc4
correction padding
rvailleux Aug 24, 2025
2a7e0ef
margin
rvailleux Aug 24, 2025
4bcc90a
compléter readme
rvailleux Aug 29, 2025
4bc0730
Merge branch 'shop'
rvailleux Aug 29, 2025
3c0edfc
ajout d'un lien boutique dans le menu
rvailleux Aug 29, 2025
f33cebc
Update README.md
rvailleux Aug 29, 2025
949a6d7
ajout de cedric clavier
rvailleux Oct 1, 2025
c5ef690
suppression de keynote
rvailleux Oct 1, 2025
4f3210f
ajout demande de feedbacks
rvailleux Oct 6, 2025
04bc0ff
Amélioration complète du README.md
Feb 16, 2026
cdc2e97
claudeprep
rvailleux Feb 16, 2026
9a6e7a4
adding archiving script
rvailleux Feb 16, 2026
a749a07
docs: establish project constitution v1.0.0
rvailleux Feb 17, 2026
4241f8e
feat: add speaker videos to agenda section
rvailleux Feb 17, 2026
0cde974
added photos
rvailleux Feb 17, 2026
d17ba7c
feat: add photo gallery for DevFest 2025 event
rvailleux Feb 17, 2026
525297d
feat: archive DevFest 2025 edition
rvailleux Feb 17, 2026
b2f9216
docs: add Playwright screenshot guidelines and .playwright/ to gitignore
rvailleux Feb 17, 2026
fa3ecaa
cleaning
rvailleux Feb 17, 2026
11d8309
feat: add DevFestNoz 2026 event page
rvailleux Feb 18, 2026
a81d0b3
feat: make DevFestNoz 2026 the homepage
rvailleux Feb 18, 2026
d2a3f57
feat: update menu and highlight key points in edito
rvailleux Feb 18, 2026
51c54e2
perf: implement performance optimization plan
rvailleux Feb 18, 2026
7df5ae4
docs: add performance optimization section to README
rvailleux Feb 18, 2026
0750f95
chore: remove performance optimization report
rvailleux Feb 18, 2026
3cba90e
fix: corrections inclusivité dans les textes
rvailleux Feb 18, 2026
aca7724
typo
rvailleux Feb 18, 2026
12ce8a3
backup
rvailleux Feb 19, 2026
85ae242
fix: update archive URLs and fix broken links
rvailleux Feb 19, 2026
36c3d81
chore: update archives list and devfestnoz 2026 info
rvailleux Feb 19, 2026
f7998c1
chore: clean up logs, core dumps and move assets to archives
rvailleux Feb 19, 2026
7a2a06a
chore: add .playwright folders to gitignore
rvailleux Feb 19, 2026
3be98e7
chore: add core and .serena to gitignore
rvailleux Feb 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 6 additions & 5 deletions .github/workflows/jekyll.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,25 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup Ruby
uses: ruby/setup-ruby@55283cc23133118229fd3f97f9336ee23a179fcf # v1.146.0
# https://github.com/ruby/setup-ruby/releases/tag/v1.207.0
uses: ruby/setup-ruby@4a9ddd6f338a97768b8006bf671dfbad383215f4
with:
ruby-version: '3.1' # Not needed with a .ruby-version file
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
cache-version: 0 # Increment this number if you need to re-download cached gems
- name: Setup Pages
id: pages
uses: actions/configure-pages@v3
uses: actions/configure-pages@v5
- name: Build with Jekyll
# Outputs to the './_site' directory by default
run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
env:
JEKYLL_ENV: production
- name: Upload artifact
# Automatically uploads an artifact from the './_site' directory by default
uses: actions/upload-pages-artifact@v2
uses: actions/upload-pages-artifact@v3

# Deployment job
deploy:
Expand All @@ -61,4 +62,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
uses: actions/deploy-pages@v4
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,10 @@ _site
.jekyll-cache
.jekyll-metadata
vendor
.claude
.playwright/
.playwright-mcp/
specs/
*.log
core
.serena
93 changes: 93 additions & 0 deletions .specify/memory/constitution.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<!--
SYNC IMPACT REPORT
==================
Version Change: N/A (new) → 1.0.0
Modified Principles: None (initial creation)
Added Sections: All (initial creation)
Removed Sections: None
Templates Requiring Updates:
- ✅ .specify/templates/plan-template.md (Constitution Check section aligns)
- ✅ .specify/templates/spec-template.md (no changes needed)
- ✅ .specify/templates/tasks-template.md (no changes needed)
Follow-up TODOs: None
-->

# DevFest Perros-Guirec Website Constitution

## Core Principles

### I. Static-First Architecture
All content MUST be statically generated at build time. Jekyll processes YAML front matter and Liquid templates into static HTML/CSS/JS. No server-side runtime dependencies beyond a web server for serving files.

**Rationale**: Static sites are fast, secure, and easy to deploy on GitHub Pages. They eliminate runtime vulnerabilities and scale effortlessly with CDN distribution.

### II. Content-Driven Configuration
All dynamic content (speakers, agenda, sponsors) MUST be defined in YAML front matter within `index.md` or `_data/commons.yml`. No content should be hardcoded in HTML templates.

**Rationale**: Centralizing content in YAML makes updates accessible to non-developers and enables conditional rendering of sections. It separates content from presentation.

### III. Year-Based Editioning
Each conference edition MUST be self-contained under `assets/YYYY/`. Speaker photos, custom styles, and edition-specific assets MUST reside in year-organized folders. Past editions MUST be archived using the `bundle exec archive` command.

**Rationale**: This enables historical preservation of past conferences while keeping the current edition clean. Archiving creates immutable snapshots that won't break when site structure changes.

### IV. Jekyll Build Validation
The Jekyll build (`bundle exec jekyll build`) MUST pass without errors or unhandled warnings before any change is considered complete. Liquid template errors, missing includes, or YAML syntax errors are blockers.

**Rationale**: The build process is the primary validation mechanism for this static site. A clean build ensures the site will deploy correctly to GitHub Pages.

### V. Convention Over Configuration
File naming and location MUST follow established conventions:
- Speaker photos: `assets/YYYY/photos_speakers/filename.webp`
- Sponsor logos: `assets/img/logos_sponsors/`
- Layouts: `_layouts/` with names matching `layout:` front matter
- Includes: `_includes/` referenced by `{% include %}`

**Rationale**: Consistent naming enables predictable behavior and makes the codebase maintainable by multiple contributors over years.

## Additional Constraints

### French Language Primary
All user-facing content MUST be in French. Error messages, UI labels, and documentation intended for end users MUST use French. Internal code comments and commit messages may use English for broader accessibility.

### GitHub Pages Compatibility
All features MUST be compatible with GitHub Pages deployment constraints:
- No custom plugins beyond the whitelisted set
- No server-side processing
- Assets must use relative paths that work when deployed to `username.github.io/repo-name/`

### Accessibility Standards
HTML output MUST maintain semantic structure and include appropriate ARIA labels where needed. Color contrast and keyboard navigation should be considered for all interactive elements.

## Development Workflow

### Local Testing Required
All changes MUST be verified locally with `bundle exec jekyll serve` before committing. This includes:
- Visual inspection of affected pages
- Verification of responsive behavior
- Checking for broken links or missing assets

### Content Update Process
When adding speakers or agenda items:
1. Add content to `index.md` front matter
2. Place assets in correct year-organized folders
3. Verify section renders correctly (conditional display)
4. Run full Jekyll build to validate

### Archiving Procedure
When an edition concludes:
1. Run `bundle exec archive YYYY` to create snapshot
2. Verify archived assets are correctly copied
3. Update `archives.md` with new entry
4. Test archive pages render correctly

## Governance

This constitution governs all development practices for the DevFest Perros-Guirec website. Amendments require:
1. Documentation of the proposed change and its rationale
2. Review for compatibility with Jekyll/GitHub Pages constraints
3. Update to CLAUDE.md if agent guidance is affected

All pull requests MUST verify compliance with these principles. Complexity or new dependencies must be justified against the static-first architecture constraint.

**Version**: 1.0.0 | **Ratified**: 2026-02-17 | **Last Amended**: 2026-02-17
166 changes: 166 additions & 0 deletions .specify/scripts/bash/check-prerequisites.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
#!/usr/bin/env bash

# Consolidated prerequisite checking script
#
# This script provides unified prerequisite checking for Spec-Driven Development workflow.
# It replaces the functionality previously spread across multiple scripts.
#
# Usage: ./check-prerequisites.sh [OPTIONS]
#
# OPTIONS:
# --json Output in JSON format
# --require-tasks Require tasks.md to exist (for implementation phase)
# --include-tasks Include tasks.md in AVAILABLE_DOCS list
# --paths-only Only output path variables (no validation)
# --help, -h Show help message
#
# OUTPUTS:
# JSON mode: {"FEATURE_DIR":"...", "AVAILABLE_DOCS":["..."]}
# Text mode: FEATURE_DIR:... \n AVAILABLE_DOCS: \n ✓/✗ file.md
# Paths only: REPO_ROOT: ... \n BRANCH: ... \n FEATURE_DIR: ... etc.

set -e

# Parse command line arguments
JSON_MODE=false
REQUIRE_TASKS=false
INCLUDE_TASKS=false
PATHS_ONLY=false

for arg in "$@"; do
case "$arg" in
--json)
JSON_MODE=true
;;
--require-tasks)
REQUIRE_TASKS=true
;;
--include-tasks)
INCLUDE_TASKS=true
;;
--paths-only)
PATHS_ONLY=true
;;
--help|-h)
cat << 'EOF'
Usage: check-prerequisites.sh [OPTIONS]
Consolidated prerequisite checking for Spec-Driven Development workflow.
OPTIONS:
--json Output in JSON format
--require-tasks Require tasks.md to exist (for implementation phase)
--include-tasks Include tasks.md in AVAILABLE_DOCS list
--paths-only Only output path variables (no prerequisite validation)
--help, -h Show this help message
EXAMPLES:
# Check task prerequisites (plan.md required)
./check-prerequisites.sh --json
# Check implementation prerequisites (plan.md + tasks.md required)
./check-prerequisites.sh --json --require-tasks --include-tasks
# Get feature paths only (no validation)
./check-prerequisites.sh --paths-only
EOF
exit 0
;;
*)
echo "ERROR: Unknown option '$arg'. Use --help for usage information." >&2
exit 1
;;
esac
done

# Source common functions
SCRIPT_DIR="$(CDPATH="" cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/common.sh"

# Get feature paths and validate branch
eval $(get_feature_paths)
check_feature_branch "$CURRENT_BRANCH" "$HAS_GIT" || exit 1

# If paths-only mode, output paths and exit (support JSON + paths-only combined)
if $PATHS_ONLY; then
if $JSON_MODE; then
# Minimal JSON paths payload (no validation performed)
printf '{"REPO_ROOT":"%s","BRANCH":"%s","FEATURE_DIR":"%s","FEATURE_SPEC":"%s","IMPL_PLAN":"%s","TASKS":"%s"}\n' \
"$REPO_ROOT" "$CURRENT_BRANCH" "$FEATURE_DIR" "$FEATURE_SPEC" "$IMPL_PLAN" "$TASKS"
else
echo "REPO_ROOT: $REPO_ROOT"
echo "BRANCH: $CURRENT_BRANCH"
echo "FEATURE_DIR: $FEATURE_DIR"
echo "FEATURE_SPEC: $FEATURE_SPEC"
echo "IMPL_PLAN: $IMPL_PLAN"
echo "TASKS: $TASKS"
fi
exit 0
fi

# Validate required directories and files
if [[ ! -d "$FEATURE_DIR" ]]; then
echo "ERROR: Feature directory not found: $FEATURE_DIR" >&2
echo "Run /speckit.specify first to create the feature structure." >&2
exit 1
fi

if [[ ! -f "$IMPL_PLAN" ]]; then
echo "ERROR: plan.md not found in $FEATURE_DIR" >&2
echo "Run /speckit.plan first to create the implementation plan." >&2
exit 1
fi

# Check for tasks.md if required
if $REQUIRE_TASKS && [[ ! -f "$TASKS" ]]; then
echo "ERROR: tasks.md not found in $FEATURE_DIR" >&2
echo "Run /speckit.tasks first to create the task list." >&2
exit 1
fi

# Build list of available documents
docs=()

# Always check these optional docs
[[ -f "$RESEARCH" ]] && docs+=("research.md")
[[ -f "$DATA_MODEL" ]] && docs+=("data-model.md")

# Check contracts directory (only if it exists and has files)
if [[ -d "$CONTRACTS_DIR" ]] && [[ -n "$(ls -A "$CONTRACTS_DIR" 2>/dev/null)" ]]; then
docs+=("contracts/")
fi

[[ -f "$QUICKSTART" ]] && docs+=("quickstart.md")

# Include tasks.md if requested and it exists
if $INCLUDE_TASKS && [[ -f "$TASKS" ]]; then
docs+=("tasks.md")
fi

# Output results
if $JSON_MODE; then
# Build JSON array of documents
if [[ ${#docs[@]} -eq 0 ]]; then
json_docs="[]"
else
json_docs=$(printf '"%s",' "${docs[@]}")
json_docs="[${json_docs%,}]"
fi

printf '{"FEATURE_DIR":"%s","AVAILABLE_DOCS":%s}\n' "$FEATURE_DIR" "$json_docs"
else
# Text output
echo "FEATURE_DIR:$FEATURE_DIR"
echo "AVAILABLE_DOCS:"

# Show status of each potential document
check_file "$RESEARCH" "research.md"
check_file "$DATA_MODEL" "data-model.md"
check_dir "$CONTRACTS_DIR" "contracts/"
check_file "$QUICKSTART" "quickstart.md"

if $INCLUDE_TASKS; then
check_file "$TASKS" "tasks.md"
fi
fi
Loading