A GitHub Pages site that automatically displays the latest 20 Silverstripe modules in a clean, responsive table format. The site updates three times daily via GitHub Actions and shows module names, descriptions, repository links, and publication dates. Includes an RSS feed for easy subscription to new modules.
- Automated Updates: GitHub Actions workflow fetches the latest Silverstripe modules three times daily
- RSS Feed: Subscribe to new modules via
/feed.xml - Static HTML: Fast loading with zero JavaScript - all data embedded at build time
- Fast Loading: Optimized for performance with minimal payload
The site uses a robust data fetching strategy with fallbacks:
-
Primary: GitHub Search API to find repositories with:
topic:silverstripe-vendormoduleortopic:silverstripe-module- Repository names containing "silverstripe-"
- Specific known Silverstripe GitHub users
- Validates modules by checking
composer.jsonfor Silverstripe types
-
Fallback: Packagist API for
silverstripe-vendormoduleandsilverstripe-modulepackages
For each module, we collect:
- Name: Composer package name or repository name
- Description: From composer.json or repository description
- Link: Repository URL
- Published Date: First release date, or repository creation date as fallback
- Node.js 18+ (uses native
fetchand ES modules) - Git
-
Clone and install:
git clone https://github.com/username/silverstripe-mods.git cd silverstripe-mods -
Run the build process:
npm run build
-
Start a local server:
npm run dev # or manually: npx serve dist # or any static file server
-
Visit
http://localhost:3000(or the port shown)
Development Workflow:
npm run dev:full- Complete development setup with hot reloadnpm run dev:copy- Copy site files to dist for developmentnpm run dev:serve- Start live-server on port 3000npm run dev:watch- Watch for file changes and auto-copynpm run dev- Quick dev setup (copy + serve)
Production Workflow:
npm run build- Full production build: fetch data + build sitenpm run fetch- Fetch modules data only (updates data/modules.json)
Individual Scripts:
npm run dev:copy- Copy development files to dist/npm run dev:serve- Start development servernpm run dev:watch- File watcher for hot reloadnpm run fetch- Fetch latest module data from APIs
# Fetch latest module data
node scripts/fetch-modules.js
# Build site for deployment
node scripts/build.js
# Serve locally (requires npx serve or similar)
npx serve dist- Go to your repository Settings → Pages
- Under Source, select "GitHub Actions"
- The workflow will automatically run and deploy your site
The GitHub Actions workflow (.github/workflows/deploy.yml):
- Triggers: Three times daily at 01:00, 09:00, 17:00 UTC, on pushes to
main, and manual triggers - Uses: Built-in
GITHUB_TOKEN(no secrets required) - Deploys: To GitHub Pages using official actions
- Generates: RSS feed at
/feed.xmlwith latest modules - Concurrency: Prevents overlapping deployments
Your site will be available at: https://username.github.io/repository-name
├── .github/workflows/
│ └── deploy.yml # GitHub Actions workflow
├── scripts/
│ ├── fetch-modules.js # Data fetching logic
│ ├── build.js # Site build script
│ ├── generate-rss.js # RSS feed generation
│ └── generate-html.js # Static HTML generation
├── site/
│ ├── index-template.html # HTML template for static generation
│ ├── styles.css # Responsive CSS with dark mode
│ └── app.js # Minimal JS (optional)
├── data/
│ └── modules.json # Generated modules data
├── dist/ # Built site (generated)
│ ├── feed.xml # RSS feed (generated)
│ └── ... # Other site files
├── package.json # Node.js scripts and metadata
└── README.md # This file
- "modules.json not found": Run
npm run fetchfirst - API rate limits: Wait a few minutes or check if GITHUB_TOKEN is available
- Node version: Ensure Node.js 18+ for native fetch support
- Pages not enabled: Check repository Settings → Pages → Source = "GitHub Actions"
- Workflow failing: Check Actions tab for detailed error logs
- Site not updating: Workflow runs three times daily at 01:00, 09:00, 17:00 UTC, or push to
mainbranch
- Port in use: Change port with
npx serve dist -p 3001 - Modules not loading: Check browser console for fetch errors
- Styling issues: Clear browser cache
The workflow logs show:
- Number of modules found
- API response status
- Build success/failure
- Deployment status
Check the Actions tab in your repository for detailed logs.
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make changes and test locally:
npm run build && npm run dev - Commit changes:
git commit -m "Description" - Push and create a Pull Request
MIT License