lad-website/cline_docs/systemPatterns.md
TheMaddax ae01874c0a feat(website): complete Phase 1 with public pages and Tailwind styling
- Add Events, Membership, and Donate pages with responsive layouts
- Fix Tailwind CSS 4.0 configuration with proper PostCSS setup
- Update Memory Bank documentation (product, system, tech context)
- Configure CSS variables for consistent theming and accessibility
- Fix client-side components with 'use client' directives
- Update progress tracking in Memory Bank
- Implement WCAG 2.2 AA accessibility features

This commit completes Phase 1 of the OCD website implementation plan,
establishing all core public-facing pages with proper styling and accessibility.
2025-03-25 10:35:05 -05:00

165 lines
5.3 KiB
Markdown

# System Patterns: OCD Website
## Architecture Patterns
### Frontend Architecture
- **Component Structure**: Atomic Design methodology
- **Atoms**: Buttons, inputs, icons, typography elements
- **Molecules**: Forms, cards, navigation items, video player
- **Organisms**: Navigation bar, page sections, footer
- **Templates**: Page layouts with content placeholders
- **Pages**: Complete views with actual content
- **Data Flow**: Unidirectional data flow (React standard)
- **State Management**: React Context API for global state
- **Rendering Strategy**:
- Server-side rendering for initial page load and SEO
- Client-side rendering for interactive components
- Static generation for stable content
- **Styling Approach**:
- Utility-first with Tailwind CSS
- Component-specific styles via custom CSS
- CSS variables for theming and consistency
- **Responsive Design**:
- Mobile-first breakpoints (sm, md, lg, xl)
- Container-based fluid layouts
- Flexbox and CSS Grid for complex layouts
### Backend Architecture
- **API Design**: RESTful with resource-based endpoints
- **Controller Pattern**: Route handlers separated from business logic
- **Repository Pattern**: Data access abstracted from controllers
- **Middleware Stack**:
- Authentication/Authorization
- Request validation
- Error handling
- Logging
- CORS handling
- **Data Models**: MongoDB schemas with validation
- **Service Layer**: Business logic encapsulated in service modules
## Key Technical Decisions
### Next.js App Router
- File-based routing with nested layouts
- Server components for performance
- Client components marked with 'use client' for interactivity
- Metadata API for SEO optimization
### Tailwind CSS 4.0
- JIT (Just-In-Time) compilation for optimal CSS bundle size
- Extended theme for custom design tokens
- CSS variables for runtime theming
- Utility-first approach for rapid development
### Accessibility First
- WCAG 2.2 AA compliance as baseline requirement
- Semantic HTML structure
- ARIA attributes used appropriately
- Keyboard navigation focus management
- Screen reader announcements for dynamic content
- High contrast mode support
- Reduced motion option
### Docker Containerization
- Multi-stage builds for production optimization
- Development environment consistency
- Separate containers for frontend, backend, and database
- Volume mounting for source code in development
- Environment variable management
### JWT Authentication
- HTTP-only cookies for security
- Role-based access control
- Token refresh strategy
- Secure routes with middleware
## Code Organization
### Frontend Structure
```
frontend/
├── public/ # Static assets
├── src/
│ ├── app/ # Next.js routes and pages
│ ├── components/ # React components
│ │ ├── atoms/ # Basic UI elements
│ │ ├── molecules/ # Compound components
│ │ ├── organisms/ # Complex components
│ │ └── video/ # Video-related components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility functions and helpers
│ ├── styles/ # Global styles and Tailwind config
│ └── types/ # TypeScript type definitions
└── tests/ # Test suites
```
### Backend Structure
```
backend/
├── src/
│ ├── config/ # Configuration settings
│ ├── controllers/ # Request handlers
│ ├── middleware/ # Express middleware
│ ├── models/ # Data models and schemas
│ ├── routes/ # API route definitions
│ ├── services/ # Business logic
│ └── utils/ # Helper functions
└── tests/ # Test suites
```
## Design Patterns
### Component Composition
- Prefer composition over inheritance
- Small, focused components with single responsibilities
- Higher-order components for shared functionality
- Render props for flexible component APIs
### Custom Hooks
- Extract reusable stateful logic into custom hooks
- Naming convention: use[HookName]
- Keep hooks focused on specific concerns
### Error Handling
- Try/catch blocks in async functions
- Error boundaries for UI component failures
- Consistent error response format in API
- Detailed logging for debugging
### Dependency Injection
- Service dependencies provided via parameters
- Loose coupling between modules
- Facilitates testing with mocks
## Naming Conventions
### Frontend
- **Component Files**: PascalCase.tsx
- **Hook Files**: camelCase.ts
- **Utility Files**: camelCase.ts
- **CSS Modules**: camelCase.module.css
- **Component Props**: interface ComponentNameProps
### Backend
- **Controllers**: camelCase.controller.ts
- **Models**: PascalCase.model.ts
- **Routes**: camelCase.routes.ts
- **Services**: camelCase.service.ts
- **Middleware**: camelCase.middleware.ts
## Testing Strategy
- **Frontend**:
- Component tests with React Testing Library
- E2E tests with Playwright
- Visual regression tests
- **Backend**:
- Unit tests for business logic
- Integration tests for API endpoints
- Mock database for testing
## CI/CD Pipeline (Planned)
- GitHub Actions for automated builds
- Linting and type checking
- Automated testing
- Docker image building
- Deployment to production server