generated from pascalmartineau/wp-skeleton
14 KiB
14 KiB
CLAUDE.md - CCAT Project Guide
🚨 CRITICAL WORKFLOW REQUIREMENTS
Before Starting ANY Work Session:
- ALWAYS read
PLANNING.md- Contains current project status, decisions, and context - Check
TASKS.md- Review all pending tasks and their priorities - Mark completed tasks immediately - Update task status as you complete work
- Add newly discovered tasks - Document any new tasks you identify during work
Task Management Protocol:
- Update
TASKS.mdwith progress and completion status - Add context and notes for future sessions
- Prioritize tasks based on current project phase
- Document dependencies and blockers
Project Overview
CCAT Website - Digital platform for Conseil de la culture de l'Abitibi-Témiscamingue
A comprehensive cultural community platform using WordPress as both backend CMS and theme container, with Nuxt 4 integrated as a custom theme providing the frontend experience.
Key Objectives
- Centralize cultural information and events for the Abitibi-Témiscamingue region
- Provide platform for artists and cultural organizations
- Enable event management and subscription capabilities
- Foster community engagement through membership features
- Streamline administrative tasks for CCAT staff
Architecture Overview
WordPress Theme Integration
- Nuxt-in-WordPress: Nuxt 4 runs within WordPress theme context
- Hybrid Rendering: PHP handles WordPress logic, Nuxt handles frontend
- Composer Dependencies: Plugin management via WPackagist / private repository
- ACF Integration: Deep integration with ACF + ACF Extended Pro
- Content Preview: SSR-based preview system via iframe
Tech Stack
WordPress Theme Structure
- WordPress: CMS + Custom theme containing Nuxt 4
- Plugins: Managed via Composer + WPackagist
- Theme Structure: Combines PHP logic with Nuxt 4 frontend
- Directory Layout:
app/server/shared/(Nuxt) +acf-json/includes/(WordPress)
Frontend (Nuxt 4 in WordPress Theme)
- Framework: Nuxt 4 (embedded in WordPress theme)
- UI: Nuxt UI components + custom UI components
- GraphQL: Nuxt GraphQL middleware (client)
- Auth: JWT authentication for WPGraphQL
- Deployment: Gitea Actions (push-to-deploy)
- Images: @nuxt/image optimization
- Maps: Leaflet for interactive maps
Backend & Integrations
- CMS: WordPress with WPGraphQL + JWT Authentication
- Custom Fields: Advanced Custom Fields (ACF) + ACF Extended Pro
- Content: ACF Flexible Fields for dynamic layouts
- Email: Mailchimp (likely PHP integration)
- Payments: Stripe (likely PHP integration)
- Import: AirTable (non-destructive)
- Preview: ACF Extended Pro content preview via iframe/SSR
Content Structure
Custom Post Types (CPT)
Contributor - Artist / organization profiles
Event - Base event descriptions
Listing - Job offers/proposals (with deadlines)
Location - Venue information
Profile - User cultural profiles
Project - CCAT projects
Representation - Event instances (when/where)
Resource - Document/link repository
Template - Reusable ACF content blocks
Taxonomies
Discipline - Artistic/cultural categories
Listing Category - Job/proposal types
Project Category - CCAT project types
Resource Category - Resource organization
Post Category - Standard WordPress
User System
- Authentication: JWT tokens via WPGraphQL
- Free Membership: Basic profile + content management
- Premium Membership: Enhanced features (likely PHP Stripe integration)
- Admin Roles: Full content + user management + impersonation
- Member Zones: Protected areas for account and profiles management
Event System
- Event CPT: Base event info (no dates)
- Representation CPT: Specific event instances (date/location)
- Location CPT: Venue information (hierarchical as Venue / Room)
- Contributor CPT: People involved with the event (performers, organizers, etc)
- Subscriptions: Free/paid registration with bulk options
- Calendar: Interactive display with filtering
Code Organization
WordPress Theme Directory Structure
wp-content/themes/ccat/
├── acf-json/ # ACF field group definitions
├── app/ # Nuxt 4 app directory
│ ├── assets/
│ │ ├── css/ # Styles
│ │ └── svg/ # Custom icons and vector images
│ ├── components/
│ │ ├── auth/ # Authentication components
│ │ ├── nodes/ # Main page components per CPT
│ │ ├── sections/ # Flexible content layouts
│ │ ├── site/ # Header, footer, navigation
│ │ └── ui/ # Custom UI components
│ ├── composables/
│ │ ├── useAuth.js # JWT authentication & tokens
│ │ ├── useMemberArea.js # Member zone functionality
│ │ ├── useMemberSignup.js # Registration flows
│ │ ├── useNodeByUri.js # Content fetching by URI
│ │ ├── useResponsive.js # Responsive utilities
│ │ └── useSiteOptions.js # ACF options page data
│ ├── graphql/ # GraphQL operations (*.gql)
│ ├── layouts/ # Nuxt layouts
│ ├── middleware/ # Nuxt middlewares
│ ├── pages/ # Nuxt pages
│ └── plugins/
├── includes/ # PHP functions and classes
│ ├── core/ # Core theme features
│ ├── cpt/ # Custom post types
│ ├── graphql/ # Custom WPGraphQL types, queries and mutations
│ ├── taxonomies/ # Custom taxonomies
│ └── vendors/ # 3rd party integrations
├── languages/ # WordPress theme translations
├── layouts/ # ACF Extended PRO templates (for content preview)
├── public/ # Nuxt 4 public directory
├── server/ # Nuxt 4 server directory
│ ├── api/ # API endpoints
│ ├── graphql/ # Server side GraphQL operations
│ └── utils/ # Auto-imported server utils
├── shared/ # Shared utilities/types
│ ├── types/ # Shared types
│ └── utils/ # Auto-imported shared utils
├── functions.php # WordPress theme functions
└── style.css # WordPress theme header
Component Architecture
- Nodes: Main page components mapped to CPT types
- Sections: Flexible content layout components for ACF fields
- Auth: Authentication flows and protected content
- Site: Global site components (header, footer, nav)
- UI: Reusable custom UI components
Development Guidelines
WordPress Theme Development
- Theme Structure: Follow Nuxt 4 directory conventions within WordPress theme
- PHP Integration: Handle WordPress-specific logic, authentication, integrations
- Composer: Manage plugins via composer.json and WPackagist
- ACF Configuration: Store field groups in acf-json/ for version control
- Custom Functions: Organize PHP logic in includes/ directory
Nuxt 4 (Within WordPress Theme)
- Use Nuxt UI components + custom UI components
- Implement SSR for SEO optimization and content preview
- Use Nuxt GraphQL middleware for all API calls
- JWT token management and refresh handling
- Mobile-first responsive design
- Leverage @nuxt/image for all media
- Follow accessibility standards (WCAG 2.1 AA)
Key Features Implementation
Member Management
- JWT-based registration/login with email verification
- Token refresh and session management
- Profile creation/editing (linked to Profile CPT)
- Premium membership upgrades (likely via PHP/Stripe)
- Content creation permissions based on membership
- Admin impersonation for user support
Event Management
- Calendar view with Leaflet map integration
- Event subscription forms (free/paid via Stripe)
- Bulk attendee registration for admins
- Email confirmations via Mailchimp
- Admin tools for subscription management
Content Management & Preview
- ACF Flexible Fields for dynamic content sections
- Template CPT for reusable content blocks
- ACF Extended Pro preview system (iframe + SSR)
- Image uploads with point-of-interest cropping
- Automated URL redirects on slug changes
- Virtual pages (redirect to first child)
- Real-time content preview during editing
Admin Tools
- User management and moderation
- User impersonation for support purposes
- Event approval workflows
- Subscription monitoring
- Content import from AirTable
- Event webscraping configuration
Integrations (Likely PHP-based)
- Mailchimp: User sync, newsletters, transactional emails (PHP API)
- Stripe: Payment processing, subscription billing (PHP SDK)
- AirTable: Import existing content non-destructively
- Webscraping: Automated event discovery from external sources
Development Patterns & Solutions
WordPress Theme Integration
- Use WordPress hooks and filters for theme integration
- Leverage ACF Extended Pro for enhanced field management
- Implement content preview via SSR iframe system
- Handle both PHP logic and Nuxt rendering in single theme
GraphQL & Authentication
- Use Nuxt GraphQL middleware for all API calls
- Implement JWT token storage and refresh logic
- Handle authentication state across SSR/client
- Implement proper error handling for expired tokens
- Admin impersonation with separate token management
Content Preview System
- ACF Extended Pro iframe preview integration
- SSR rendering for preview content via Nuxt server
- Real-time preview updates during content editing
- Flexible content section rendering in isolation
State Management
- Use Nuxt's built-in state management
- Implement JWT token persistence and refresh
- Handle impersonation state for admins
- Site options management via useSiteOptions
Form Handling & Payments (PHP Integration)
- Use Nuxt UI form components on frontend
- Handle form submissions via WordPress/PHP backend
- Mailchimp API integration in PHP for email management
- Stripe SDK integration in PHP for payment processing
- Webhook handling for payment events in PHP
Implementation Timeline
Phase 1: Foundation
- WordPress theme setup with Nuxt 4 integration
- Composer configuration for plugin management
- WPGraphQL + JWT Authentication setup
- Core CPT structure with ACF field groups
- Basic Nuxt components (auth, nodes, sections)
- ACF Extended Pro preview system
Phase 2: Core Features
- Member registration/profile management (useAuth, useMemberArea)
- Event calendar with Leaflet maps
- Flexible content sections with preview
- Node-based page components per CPT
- Site-wide components (header, footer, navigation)
- Mailchimp integration (PHP)
Phase 3: Advanced Features
- Stripe payment integration (PHP)
- Event subscription system
- Premium membership features
- Admin impersonation functionality
- Advanced admin tools
- AirTable import system
Phase 4: Enhancement & Launch
- Webscraping tool implementation
- Performance optimization
- Advanced search/filtering
- Analytics integration
- Final testing and launch preparation
Technical Requirements
Performance Considerations
- Optimize GraphQL queries (avoid N+1)
- Implement proper caching strategies
- Use @nuxt/image for all media optimization
- WordPress theme performance optimization
- ACF Extended Pro preview performance
- PHP integration efficiency (Mailchimp, Stripe)
- Monitor Core Web Vitals
Security Requirements
- Sanitize all GraphQL inputs
- WordPress security best practices
- Implement proper CORS policies
- Use JWT tokens for authentication
- Secure PHP integrations (Mailchimp, Stripe APIs)
- Validate payment webhooks in PHP
- ACF Extended Pro security considerations
- Regular security updates for WordPress and plugins
Testing Strategy
- Unit tests for utilities and composables
- Integration tests for GraphQL operations
- WordPress/PHP integration testing
- E2E tests for critical user flows
- Payment testing with Stripe test mode (PHP)
- Email testing with Mailchimp sandbox (PHP)
- Content preview functionality testing
Deployment & Environment
Deployment Notes
- WordPress theme with integrated Nuxt 4 frontend
- Plugin management via Composer + WPackagist
- CI/CD: Push-to-deploy via Gitea Actions
- Database: Optimized for GraphQL queries
- Assets: @nuxt/image handles optimization
- ACF field groups versioned in acf-json/
- SSL/TLS required for all environments
- JWT tokens for secure API communication
Environment Variables
# WordPress/Nuxt Integration
NUXT_GRAPHQL_ENDPOINT= # WordPress GraphQL endpoint
NUXT_SESSION_PASSWORD= # JWT authentication secret
NUXT_HUB_PROJECT_KEY= # NuxtHub project reference
# Third-party Services (likely PHP env vars)
MAILCHIMP_API_KEY= # Mailchimp integration
STRIPE_SECRET_KEY= # Stripe payments
STRIPE_PUBLISHABLE_KEY= # Stripe public key
AIRTABLE_API_KEY= # AirTable import key
Useful Commands
# Development
npm run dev # Start Nuxt dev server (within WordPress theme)
npm run build:typecheck # Check for TypeScript errors
npm run build # Build for production
composer install # Install WordPress plugins
git push origin main # Deploy via Gitea Actions
# WordPress
composer update # Update plugin dependencies
Resources & Documentation
Core Technologies
- Nuxt 4 Documentation
- Nuxt GraphQL Middleware
- WordPress Theme Development
- WPGraphQL Docs
- WPGraphQL JWT Authentication
Content & Fields
Integrations
Deployment
Remember: This is a WordPress theme containing Nuxt 4, not a separate frontend. The integration between WordPress/PHP and Nuxt is key to the architecture. Prioritize user experience, accessibility, and community engagement in all development decisions.