.cursorrules
.llmrules
This is a Gatsby theme monorepo that powers www.chrisvogt.me - a personal website and blog with a social dashboard home page. The project uses Yarn workspaces to separate the theme code from the content.
Sign in to like and favorite skills
.llmrules
Code Style and Structure
Here are some pieces of information you need to know about this project:
This is a Gatsby theme monorepo that powers www.chrisvogt.me - a personal website and blog with a social dashboard home page. The project uses Yarn workspaces to separate the theme code from the content.
Current Goal: Decouple all personal information and www.chrisvogt.me content from the
/theme directory to make the theme more generic and reusable.
theme/: The Gatsby theme package (gatsby-theme-chronogrove)www.chrisvogt.me/: The actual website content and configurationmetrics.chrisvogt.me/: Backend API for widgets, uses Firebase, Firestore and scheduled Firebase Functions to sync and cache third-party data.node_version and .nvmrc)packageManager in package.json)develop:https script)yarn workspace [package] [command] for package-specific operationsyarn develop - Start development server with HTTPSyarn test - Run all testsyarn test:watch - Run tests in watch modeyarn test:coverage - Run tests with coverage reportyarn format - Format code with Prettieryarn lint - Lint code with ESLintThe theme includes a sophisticated widget system for the home page dashboard:
metrics.chrisvogt.me (backed by chrisvogt/metrics GitHub repo)fetchDataSource.js handles API calls with deduplicationThe following environment variables may be required for full functionality:
GATSBY_METRICS_API_URL - Metrics API endpoint (defaults to metrics.chrisvogt.me)GATSBY_GITHUB_TOKEN - GitHub API token for enhanced rate limitsGATSBY_SPOTIFY_CLIENT_ID - Spotify API client IDGATSBY_INSTAGRAM_ACCESS_TOKEN - Instagram API access tokenGATSBY_GOODREADS_API_KEY - Goodreads API keyGATSBY_STEAM_API_KEY - Steam API keyThe following files contain hardcoded personal information that needs to be made configurable:
theme/src/components/h-card.js - Personal details, email, locationtheme/src/components/home-header-content.js - Name, personal descriptiontheme/src/data/social-profiles.json - Social media links and usernamestheme/gatsby-config.js - Default site metadata with personal infotheme/src/templates/home.js - SEO metadata with personal detailstheme/src/components/footer/footer.js - GitHub source linkscripts/postinstall-banner.js - Personal branding (root level)index.js - Personal branding (root level)www.chrisvogt.me/ directory - All content should remain as-is__mocks__/ directorystatic/ directoryWhen adding new widgets:
src/components/widgets/[name]/When decoupling personal information:
The theme should support configuration through: