GSoC Dynamic Content System
This directory uses a data-driven approach to generate GSoC pages, eliminating the need to copy and paste content between years.
How It Works
- Data File: All year-specific content is stored in
_data/gsoc-data.json - Generator Script:
scripts/generate-gsoc-pages.pyreads the data and generates markdown files - Generated Pages: The script creates
YYYY.mdfiles for each year
Adding a New Year
For Current Year (with project ideas):
- Open
_data/gsoc-data.json - Add a new entry under
yearswith the year as the key:"2026": { "type": "current", "title": "GSoC 2026", "description": "Google Summer of Code 2026 program at omegaUp", "intro": "Your introduction text here...", "project_ideas": [...], "application_process": {...}, "communications": [...], "faq": [...], "related_docs": [...] } - Update the previous year's
typeto"past"and addprojectsarray instead ofproject_ideas - Run the generator:
python3 scripts/generate-gsoc-pages.py - Review the generated files and commit them
For Past Year (completed projects):
- Open
_data/gsoc-data.json - Add a new entry under
years:"2025": { "type": "past", "title": "GSoC 2025", "description": "Google Summer of Code 2025 projects", "intro": "Projects completed during GSoC 2025.", "projects": [ { "name": "Project Name", "description": "Project description", "result": "Project result/outcome" } ], "related_docs": [...] } - Run the generator script
- Review and commit
Updating Existing Content
Simply edit _data/gsoc-data.json and run the generator script. All pages will be regenerated with the updated content.
Benefits
- No Copy-Paste Errors: Single source of truth for shared content
- Consistency: All pages follow the same structure
- Easy Updates: Update data file once, regenerate all pages
- Version Control: Data file shows exactly what changed between years
File Structure
gsoc/
├── _data/
│ └── gsoc-data.json # Single source of truth
├── _templates/ # (Legacy - not used anymore)
├── 2023.md # Generated file
├── 2024.md # Generated file
├── 2025.md # Generated file
├── index.md # Manual file (not generated)
└── README.md # This file
Notes
- The generator script uses only Python standard library (no external dependencies)
- Generated files should be committed to git
- The data file (
gsoc-data.json) is the source of truth - edit this, not the generated markdown files - Always run the generator after updating the data file