This repository hosts the GitHub Pages website for the DecisionsDev organization, built with Gatsby and the IBM Carbon Design System theme.
Once deployed, the site will be available at: https://decisionsdev.github.io/
- Node.js 18.x or higher
- npm or yarn
# Clone the repository
git clone https://github.com/DecisionsDev/DecisionsDev.github.io.git
cd DecisionsDev.github.io
# Install dependencies
npm install
# Start development server
npm run devThe site will be available at http://localhost:8000
DecisionsDev.github.io/
βββ src/
β βββ pages/
β β βββ index.mdx # Homepage
β β βββ deployment-tools.mdx # Deployment tools page
β β βββ rest-api.mdx # REST API samples page
β β βββ docker.mdx # Docker resources page
β βββ images/ # Image assets
β βββ components/ # React components
β βββ data/ # Data files (repositories.json, nav-items.yaml)
β βββ gatsby-theme-carbon/ # Theme customizations
βββ docs/ # Documentation files
β βββ SETUP.md # Setup guide
β βββ DEPLOYMENT.md # Deployment guide
β βββ README-TOPICS-SCRIPT.md # Topics script documentation
β βββ TOPICS_GUIDE.md # Topics guide
β βββ topics-report.md # Topics report
βββ tools/ # Utility scripts
β βββ build-repositories.js # Build repositories.json with categorization
β βββ fetch-repos.js # Fetch repositories from GitHub
β βββ generate-topics-report.js # Generate topics report
β βββ add-topics-to-repos.js # Add topics to repositories
β βββ topic-analyzer.js # Analyze repository topics
β βββ deploy.sh # Deployment script (Linux/Mac)
β βββ deploy.bat # Deployment script (Windows)
βββ gatsby-config.js # Gatsby configuration
βββ package.json # Dependencies
βββ README.md # This file
# Start development server
npm run dev
# Fetch and categorize repositories from GitHub
npm run build:repos
# Fetch and categorize videos from GitHub
npm run build:videos
# Build for production (includes build:repos)
npm run build
# Serve production build locally
npm run serve
# Clean cache and build artifacts
npm run clean
# Deploy to GitHub Pages (production)
npm run deploy
# Deploy to preview repository (for review)
npm run deploy:preview- Create a new
.mdxfile insrc/pages/ - Add frontmatter with title and description
- Write content using MDX (Markdown + React components)
- The page will be automatically available at
/filename
Example:
---
title: My New Page
description: Description of the page
---
<PageDescription>
Brief description of the page content.
</PageDescription>
## Content goes here
Your content using Markdown and Carbon components.The Gatsby Carbon theme provides many pre-built components:
<Row>
<Column colLg={8}>
Content in a column
</Column>
</Row>
<Button href="/link">Button Text</Button>
<ResourceCard
subTitle="Card Title"
href="/link"
>

</ResourceCard>Projects are organised by product in the Decisions family.
To add a new project to a category page:
- Open the relevant
.mdxfile (e.g.,src/pages/index.mdx) - Add a new section with project details
- Include links to the GitHub repository
- Add relevant tags and descriptions
Edit gatsby-config.js to customize:
{
resolve: 'gatsby-theme-carbon',
options: {
theme: {
homepage: 'dark', // 'dark' or 'white'
interior: 'g10', // 'g10', 'g90', 'g100', 'white'
},
},
}The Carbon theme uses IBM's design system. Custom styles can be added in:
src/gatsby-theme-carbon/styles/- Global style overrides- Component-level styles using CSS modules
- Automatic Deployment (Recommended):
# Build and deploy to gh-pages branch
npm run deploy- Manual Deployment:
# Build the site
npm run build
# The built site is in the 'public' directory
# Push the public directory to gh-pages branchCreate .github/workflows/deploy.yml:
name: Deploy to GitHub Pages
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm install
- run: npm run build
- uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public- Go to repository Settings
- Navigate to "Pages"
- Select source:
gh-pagesbranch - Save
The site will be live at https://decisionsdevelopment.github.io/
The tools/ directory contains utility scripts for managing the repository:
- build-repositories.js - Fetch repos from GitHub and apply categorization (creates repositories.json)
- fetch-repos.js - Fetch repository data from GitHub API
- topic-analyzer.js - Analyze repository topics and suggest categories
- list-all-topics.js - List all topics used across DecisionsDev repositories
- remove-topics-from-repos.js - Remove or replace topics in repositories
- add-topics-to-repos.js - Automatically add structured topics to repositories
- generate-topics-report.js - Generate a report of repository topics
- deploy.sh / deploy.bat - Production deployment scripts for Linux/Mac and Windows
- deploy-preview.sh / deploy-preview.bat - Preview deployment scripts for private review
# Build repositories.json with categorization (recommended)
npm run build:repos
# List all topics used in the organization
node tools/list-all-topics.js
node tools/list-all-topics.js --verbose # Show which repos use each topic
node tools/list-all-topics.js --pattern "product-*" # Filter by pattern
# Remove topics from repositories
node tools/remove-topics-from-repos.js --topics old-topic --dry-run
node tools/remove-topics-from-repos.js --topics old-topic --apply
# Replace topics (only where they exist)
node tools/remove-topics-from-repos.js --topics old-topic --replace new-topic --dry-run
node tools/remove-topics-from-repos.js --pattern "odmdev-*" --replace odm --apply
# Generate topics report
node tools/generate-topics-report.js
# Deploy the site
./tools/deploy.sh # Linux/Mac
tools\deploy.bat # WindowsThe build-repositories.js script automatically categorizes repositories based on their names and descriptions:
- Products:
odm,decision-intelligence,bai,cp4ba - Components:
decisioncenter,ruleexecutionserver,container,ai, etc. - Types:
sample,tool,tutorial,documentation,integration, etc.
The script:
- Fetches all repositories from the DecisionsDev GitHub organization
- Analyzes each repository using
topic-analyzer.js - Adds a
categoriesfield with clean names (without prefixes) - Preserves original GitHub
topicsfor backward compatibility - Writes the result to
src/data/repositories.json
Example output structure:
{
"name": "odm-ondocker",
"description": "Deploy ODM with Docker Compose",
"topics": ["docker", "ibm-odm", "odm"],
"categories": {
"products": ["odm"],
"components": ["container"],
"types": ["sample"]
},
"url": "https://github.com/DecisionsDev/odm-ondocker"
}The docs/ directory contains detailed documentation:
- SETUP.md - Complete setup guide
- DEPLOYMENT.md - Production deployment instructions
- PREVIEW-DEPLOYMENT.md - Preview deployment for private review
- CATEGORIZATION.md - Repository categorization system
- TOPICS_GUIDE.md - Guide for repository topics
- README-TOPICS-SCRIPT.md - Topics script documentation
- Fork the repository
- Create a feature branch
- Add or update content
- Test locally with
npm run dev - Submit a pull request
- Use clear, concise language
- Include code examples where appropriate
- Add links to relevant repositories
- Use proper Markdown formatting
- Test all links
When contributing a new repository to DecisionsDev, please add relevant topics:
- Use existing topics - Run
node tools/list-all-topics.jsto see all topics currently in use - Select the most relevant - Choose 3-7 topics that best describe your repository
- Follow the pattern - Use lowercase, hyphenated names (e.g.,
decision-center, notDecisionCenter) - Common topics include:
- Products:
odm,decision-intelligence,bai,cp4ba - Technologies:
docker,kubernetes,java,react,kafka - Types:
tutorial,sample,integration,rpa - Components:
decision-center,dsi,analytics
- Products:
Example: For an ODM Docker tutorial, use: odm, docker, tutorial, business-rules
See TOPICS_GUIDE.md for detailed guidance.
- Follow existing file structure
- Use meaningful component names
- Add comments for complex logic
- Keep pages focused and organized
# Clear cache and rebuild
npm run clean
npm install
npm run build# Kill process on port 8000
# Windows
netstat -ano | findstr :8000
taskkill /PID <PID> /F
# Linux/Mac
lsof -ti:8000 | xargs kill -9# Reinstall dependencies
rm -rf node_modules package-lock.json
npm installThis website is licensed under the Apache License 2.0.
For issues or questions:
Β© 2025 IBM Corporation