generated from pascalmartineau/wp-skeleton
58 lines
3.0 KiB
Markdown
58 lines
3.0 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Overview
|
|
|
|
This is a WordPress site for Conseil de la culture de l'Abitibi-Témiscamingue with a hybrid architecture combining WordPress backend with a Nuxt.js frontend application. The site uses GraphQL for data communication between WordPress and Nuxt.js.
|
|
|
|
## Development Commands
|
|
|
|
### WordPress/PHP
|
|
- **Lint PHP code**: `./vendor/bin/phpcs` (uses WordPress coding standards via phpcs.xml)
|
|
- **Install PHP dependencies**: `composer install`
|
|
|
|
### Nuxt.js Frontend (in wp-content/themes/ccat/)
|
|
- **Development server**: `pnpm dev:nuxt` (runs on host with --host flag)
|
|
- **Build**: `pnpm build` (runs typecheck then nuxt build sequentially)
|
|
- **Type checking**: `pnpm build:typecheck`
|
|
- **Lint**: `pnpm lint` (ESLint with auto-fix)
|
|
- **Deploy**: `pnpm deploy` (NuxtHub deployment)
|
|
- **Preview**: `pnpm preview` (NuxtHub preview)
|
|
|
|
## Architecture
|
|
|
|
### WordPress Backend
|
|
- **Location**: Root directory contains standard WordPress installation
|
|
- **Custom Post Types**: membership, contributor, event, location, project, representation, resource, template (wp-content/themes/ccat/includes/cpt/)
|
|
- **Custom Taxonomies**: discipline, project-category, resource-category (wp-content/themes/ccat/includes/taxonomies/)
|
|
- **GraphQL**: Enabled via WP GraphQL plugin with JWT authentication
|
|
- **ACF Integration**: Advanced Custom Fields Pro with Extended Pro for custom fields
|
|
|
|
### Nuxt.js Frontend
|
|
- **Location**: wp-content/themes/ccat/ (acts as WordPress theme but contains Nuxt app)
|
|
- **Framework**: Nuxt 4.x with Vue 3, TypeScript
|
|
- **UI**: Nuxt UI 4.0 alpha with TailwindCSS
|
|
- **GraphQL**: Connects to WordPress GraphQL endpoint via nuxt-graphql-middleware
|
|
- **Deployment**: Cloudflare Workers via NuxtHub
|
|
- **Package Manager**: pnpm with specific built dependencies configuration
|
|
|
|
### Key Dependencies
|
|
- **WordPress Plugins**: WP GraphQL, ACF Pro, iThemes Security Pro, Clean Image Filenames
|
|
- **Nuxt Modules**: @nuxt/ui, @nuxthub/core, nuxt-auth-utils, nuxt-graphql-middleware, @nuxtjs/sitemap
|
|
|
|
## File Structure
|
|
- `/wp-content/themes/ccat/app/` - Nuxt application files
|
|
- `/wp-content/themes/ccat/server/` - Server-side GraphQL schema and API routes
|
|
- `/wp-content/themes/ccat/includes/` - WordPress theme functions (CPT, taxonomies, ACF)
|
|
- `/wp-content/themes/ccat/acf-json/` - ACF field group definitions
|
|
- `/wp-content/mu-plugins/` - Must-use plugins (currently only headless-home-url.php)
|
|
|
|
## Development Notes
|
|
- Site is configured as non-indexable (indexable: false in nuxt.config.ts)
|
|
- GraphQL endpoint: https://wp.cultureat.ca/graphql
|
|
- Frontend URL: https://cultureat.ca
|
|
- Uses Cloudflare Workers for hosting the Nuxt frontend
|
|
- WordPress serves as headless CMS with custom post types for cultural content management
|
|
- GraphQL operations should be in the same directory where they are used
|
|
- WordPress filters and actions hooks should use named functions prefixed with ccat_ defined the line after add_action / add_filter |