This is the AI for Engineering Teams Workshop repository - a practical training environment where students build a Customer Intelligence Dashboard using spec-driven development with AI agents. The project demonstrates how to transform ideas into AI-ready specifications and implement them iteratively.
- Educational workshop teaching spec-driven development with AI
- Builds a Customer Intelligence Dashboard through progressive exercises
- Focuses on methodology over just completing tasks
- Demonstrates production-ready AI-assisted development workflows
- Next.js 15 with App Router (latest stable)
- React 19 with TypeScript
- Tailwind CSS 4 for styling (@tailwindcss/postcss)
- Geist font family (Sans & Mono) from Google Fonts
- VS Code Dev Containers (recommended setup)
- Node.js LTS (20.x via devcontainer)
- Pre-configured with Claude Code, GitHub Copilot, and Cline extensions
- Auto-forwarded port 3000 for development server
- Mock customer data in
/src/data/mock-customers.ts - TypeScript interfaces for Customer, health scores, domains
- Future integration points for API Ninjas and real data sources
├── src/ # Next.js application source
│ ├── app/ # App Router (layout, page, globals.css)
│ └── data/ # Mock data and future API integration
├── public/ # Static assets (SVG icons)
├── exercises/ # Workshop exercises (01-10)
├── requirements/ # Feature requirements and specifications
├── specs/ # Generated AI specifications (student output)
├── templates/ # Specification templates for AI prompts
├── .devcontainer/ # VS Code dev container configuration
└── [config files] # Next.js, TypeScript, ESLint, PostCSS configs
/exercises/: 10 progressive workshop exercises from spec-writing to production dashboard
/requirements/: Business requirements that feed into AI specification generation
/specs/: Where students save AI-generated specifications during workshops
/templates/: Reusable specification template for consistent AI prompts
/src/app/: Standard Next.js App Router structure with progress tracking UI
# Install dependencies
npm install
# Start development server (auto-opens browser on port 3000)
npm run dev
# Build for production
npm build
# Start production server
npm start
# Run linting
npm run lint
# Type checking
npm run type-check- Write clear specifications using
/templates/spec-template.md - Store generated specs in
/specs/directory - Implement components using specs as AI prompts
- Build iteratively through guided exercises
- Use
@templates/spec-template.mdfor consistent specification structure - Reference
@requirements/[feature].mdfor business context - Generate implementations with
@specs/[feature]-spec.mdand@data/mock-customers.ts - Follow template structure: Context → Requirements → Constraints → Acceptance Criteria
The main page (/src/app/page.tsx) includes:
- Progress tracking UI showing workshop completion status
- Dynamic component loading with error boundaries
- CustomerCard showcase area (populated after Exercise 3)
- Dashboard widget placeholders for future exercises
interface Customer {
id: string;
name: string;
company: string;
healthScore: number; // 0-100 with color coding
email?: string;
subscriptionTier?: 'basic' | 'premium' | 'enterprise';
domains?: string[]; // For health monitoring
createdAt?: string;
updatedAt?: string;
}- Health score color coding: Red (0-30), Yellow (31-70), Green (71-100)
- Responsive design with mobile-first approach
- Domain health monitoring integration points
- TypeScript-first development with strict type checking
- 01: Thinking in Specs - CustomerSelector specification
- 02a: Accessibility considerations
- 02b: Claude memory and context management
- 02c: Code quality standards
- 03: First AI-generated CustomerCard component
- 04: CustomerSelector implementation and integration
- 05: Incremental enhancement workflows
- 06: Customer management integration
- 07: Market intelligence composition patterns
- 08: Health score calculator implementation
- 09: Predictive alerts system
- 10: Production-ready dashboard completion
- ESLint configured with Next.js and TypeScript rules
- Strict TypeScript configuration with path mapping (
@/*→./src/*) - Format on save enabled
- Manual extension updates for stability
- Use descriptive variable and function names (no abbreviations like
btn,usr) - Add TypeScript interfaces for all props and data structures
- Include JSDoc comments for complex functions
- Follow consistent naming conventions (camelCase for variables, PascalCase for components)
- Implement proper error boundaries and error handling
- Use meaningful commit messages and code comments
- Prefer named exports over default exports for components
- Use custom hooks for reusable logic
- Implement proper loading and error states for async operations
- Add prop validation with TypeScript interfaces
- Use semantic JSX element names that describe purpose, not appearance
- All interactive elements must be keyboard accessible
- Proper semantic HTML structure with heading hierarchy
- ARIA labels and descriptions for complex UI components
- Color contrast ratios: 4.5:1 for normal text, 3:1 for large text
- Visible focus indicators for all interactive elements
- Alternative text for images and icons
- Screen reader friendly content structure
- Always reference existing mock data in
/src/data/ - Use specification templates for consistency
- Follow the established component patterns
- Implement responsive designs with Tailwind CSS
- Maintain TypeScript strict mode compliance
- Clean main branch (production-ready)
- Atomic commits with descriptive messages
- Progressive feature development through exercises
- Regular checkpoints after each exercise completion
- Understanding the codebase: Read
/README.mdand examine/src/app/page.tsxfor current status - Component development: Use
/templates/spec-template.mdwith relevant/requirements/*.mdfiles - Data integration: Reference
/src/data/mock-customers.tsfor Customer interface - Implementation: Follow Next.js 15 + React 19 + TypeScript + Tailwind CSS patterns
- Testing: Run
npm run devand checkhttp://localhost:3000for visual validation
Write a [ComponentName] spec using @templates/spec-template.md and @requirements/[component].md
Implement [ComponentName] using @data/mock-customers.ts and @specs/[component]-spec.md
git add -A && git commit -m "feat: implement [ComponentName] component"
This workshop emphasizes learning methodology over task completion - focus on understanding the spec-driven development process and AI-assisted workflows rather than rushing through exercises.
- Using @templates/spec-template.md stores generated specs in @specs/
- Workshop uses Next.js 15, React 19, TypeScript, and Tailwind CSS