Skip to content

A repository to add comments / suggests / improvements to the NumFOCUS website

Notifications You must be signed in to change notification settings

numfocus/numfocus.org

Repository files navigation

NumFOCUS Website

A modern Astro-based website for NumFOCUS, the nonprofit organization promoting open practices in research, data, and scientific computing.

Netlify Status

Technology Stack

Site Structure

  • Projects: Filterable grid of sponsored and affiliated projects with search functionality
  • People: Directory of team members and board members
  • Sponsors: Display of organizational sponsors and supporters
  • Articles: News and blog content managed through CMS
  • Pages: Static and dynamic pages with flexible content blocks

Development

Prerequisites

  • Node.js (latest stable version)
  • npm or equivalent package manager

Getting Started

# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview

Project Structure

src/
├── components/          # Reusable UI components
│   ├── content/        # Content-specific components
│   ├── layout/         # Layout components (Header, Footer, etc.)
│   ├── people/         # People directory components
│   ├── projects/       # Project showcase components
│   ├── sponsors/       # Sponsor-related components
│   └── ui/            # Base UI components
├── data/               # Static data files
│   └── projects/      # Project metadata and images (YAML + PNG)
├── layouts/            # Astro layout templates
├── pages/              # Page routes
├── styles/             # Global CSS and Tailwind config
└── utils/              # Utility functions and helpers

Content Management

The site uses Directus as a headless CMS for managing:

  • Page content and metadata
  • News articles and events
  • People profiles
  • Dynamic content blocks

Content is fetched from cms.numfocus.draftlab.dev during build time.

Project Data Synchronization

Project data is managed through a hybrid approach:

  • Local source: Project metadata stored in YAML files at src/data/projects/
  • Automated sync: GitHub Action sync-projects-to-cms.yml triggers project sync to Directus CMS on commits that include changes to files in src/data/projects
  • CMS-only fields: Features like isFeatured and donateLink managed exclusively in CMS

The sync process:

  • Triggers via GitHub Action on repository commits
  • Runs scripts/syncProjectsToCms.ts to update Directus CMS with latest project data
  • Preserves CMS-only fields during updates
  • Removes projects from CMS that no longer exist locally

Deployment

The site is deployed on Netlify with automatic builds triggered by repository updates. The production site is available at the configured domain in astro.config.mjs.

Useful Links

About

A repository to add comments / suggests / improvements to the NumFOCUS website

Resources

Security policy

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •