A comprehensive full-stack monorepo demonstrating modern web development patterns and enterprise-grade code quality practices.
- Node.js 18+
- pnpm (package manager)
- Docker & Docker Compose (for PostgreSQL)
# Install dependencies
pnpm install
# Start PostgreSQL
docker-compose up -d
# Start all services
pnpm devServices will be available at:
- Frontend: http://localhost:3000
- Apollo GraphQL: http://localhost:4000/graphql
- Express API: http://localhost:5000
react-grapql-playground/
├── frontend/ # Next.js 16 + React 19 + Apollo Client
├── backend-graphql/ # Apollo Server 4 + PostgreSQL
├── backend-express/ # Express.js + File Upload + Real-time
├── docs/ # Documentation
└── eslint.config.js # ESLint v9 (flat config)
# Lint all packages
pnpm lint
# Lint specific package
pnpm -F frontend lint
pnpm -F backend-graphql lint
pnpm -F backend-express lint
# Auto-fix issues
eslint . --fixThe repository uses ESLint v9 flat config (eslint.config.js) with:
- ✅ Strict TypeScript enforcement
- ✅ React + Next.js rules
- ✅ Type-safe monorepo setup
- ✅ 100% issue-free (0 issues)
Key Rules:
@typescript-eslint/no-explicit-any: Error (strict type safety)@typescript-eslint/explicit-function-return-type: Warning (explicit returns)no-console: Warning (encourages proper logging)
- ESLINT-V9-MIGRATION-COMPLETE.md - Complete migration report (145 → 0 issues)
- ESLINT-V9-SETUP-GUIDE.md - Practical how-to guide
- PHASE-5-COMPLETION-SUMMARY.md - Migration timeline
VS Code:
- Install ESLint extension
- Add to
.vscode/settings.json:
{
"eslint.enable": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}WebStorm/IntelliJ:
- Go to Settings → Languages & Frameworks → JavaScript → Code Quality Tools → ESLint
- Check "Enable ESLint"
- Check "Run eslint --fix on Save"
# Run all tests
pnpm test
# Watch mode
pnpm test --watch
# Single test file
pnpm test path/to/test| Package | Tests | Status |
|---|---|---|
| Frontend | 172 | ✅ Passing |
| Backend-Express | 68 | ✅ Passing |
| Backend-GraphQL | 99 | ✅ Passing |
| Total | 339 | ✅ All Passing |
# Build all packages
pnpm build
# Build specific package
pnpm -F frontend buildpnpm lint # Check ESLint
pnpm lint:fix # Auto-fix ESLint issues
pnpm format:check # Check formattingpnpm migrate # Run database migrations
pnpm migrate:reset # Reset database (dev only)
pnpm seed # Seed sample datapnpm dev # All services
pnpm dev:frontend # Next.js frontend only
pnpm dev:graphql # Apollo GraphQL only
pnpm dev:express # Express API onlyFrontend (Next.js + React)
↓
├→ Apollo GraphQL (Port 4000) — Data operations
└→ Express (Port 5000) — Files, webhooks, real-time
- Server Components - Initial data fetch via Apollo
- Client Components - Interactive features with optimistic updates
- DataLoader - Batch loading prevents N+1 queries
- Real-time Events - Server-Sent Events (SSE) for live updates
- Request Tracing -
traceparentflows through Express/GraphQL middleware, Apollo operation spans, wrapped resolvers, and Prisma spans with safe argument redaction
traceparent header
→ @repo/shared-tracing middleware
→ Apollo tracing plugin
→ wrapped Query / Mutation / Build resolvers
→ Prisma + DataLoader spans
- Shared tracing logic lives in
packages/shared-tracing/. - Redaction is always on for sensitive resolver args (
password,token,authorization,cookie,secret,apiKey,passwordHash). - GraphQL accepts both
traceparentandtracestateheaders during local and manual verification.
See CLAUDE.md for architectural deep-dive.
- CLAUDE.md - Development guidelines & architecture
- DESIGN.md - Dual-backend architecture patterns
- docs/start-from-here.md - 7-day interview prep plan
- docs/ESLINT-V9-SETUP-GUIDE.md - ESLint v9 how-to
- docs/session-report/ESLINT-V9-MIGRATION-COMPLETE.md - Migration report
# Find and kill process using port 3000
lsof -i :3000
kill -9 <PID>
# Or use different port
NEXT_PUBLIC_PORT=3001 pnpm dev:frontend# Ensure Docker container is running
docker-compose ps
# Start if needed
docker-compose up -d
# Check logs
docker-compose logs postgres# Reinstall dependencies
pnpm install
# Clear cache
rm -rf node_modules
pnpm install
# Verify ESLint loads
npx eslint --version# Run with verbose output
pnpm test --reporter=verbose
# Check if database is seeded
pnpm seed
# Clear test cache
rm -rf coverage
pnpm test- Strict mode enabled (all packages)
- Explicit type annotations required
- No implicit
anytypes - Full generic type parameters
- ESLint v9 with flat config
- 145 → 0 issues after migration
- All packages lint cleanly
- CI/CD enforced
- Vitest for unit/integration tests
- React Testing Library for components
- Supertest for Express routes
- All tests passing (791/791)
- WCAG 2.1 Level AA compliant
- Comprehensive ARIA labels and roles
- Full keyboard navigation support
- Focus management and focus trap
- Screen reader compatible
- High contrast compliance
- Semantic HTML throughout
- Automated accessibility tests
See ACCESSIBILITY.md for detailed compliance documentation and testing procedures.
- TypeScript end-to-end
- Modular, composable design
- Clear separation of concerns
- Interview-grade code quality
The repository includes comprehensive search and filtering capabilities with advanced features:
- Real-time search term highlighting
- Case-sensitive search option
- Special character support
- Match counter display
- Automatic history tracking for all filter changes
- Duplicate prevention (no consecutive identical filters)
- Configurable history limit (default: 50 items)
- localStorage persistence
- Save frequently used filter combinations as presets
- Quick load/restore of preset filters
- Preset rename and delete functionality
- Automatic localStorage persistence
- Full keyboard navigation support (Tab, Arrow keys, Enter, Escape)
- Undo/Redo functionality with Ctrl+Z / Ctrl+Y (Cmd+Z / Cmd+Y on Mac)
- Focus management with boundary looping
- Configurable undo/redo levels (max 20 by default)
All features are orchestrated through the FilterBar component:
<FilterBar
filters={filterState}
onFilterChange={handleFilterChange}
history={historyState}
onSelectFromHistory={handleSelectHistory}
presets={presetsState}
onSelectPreset={handleSelectPreset}
onCreatePreset={handleCreatePreset}
undoRedo={undoRedoState}
onUndo={handleUndo}
onRedo={handleRedo}
/>Usage:
# Frontend hooks
import { useFilter } from '@/lib/hooks/useFilter';
import { useFilterHistory } from '@/lib/hooks/useFilterHistory';
import { useFilterPresets } from '@/lib/hooks/useFilterPresets';
import { useUndoRedo } from '@/lib/hooks/useUndoRedo';
import { useKeyboardNav } from '@/lib/hooks/useKeyboardNav';
# Components
import { FilterBar } from '@/components/FilterBar';
import { SearchBar } from '@/components/SearchBar';
import { StatusFilter } from '@/components/StatusFilter';
import { DateRangeFilter } from '@/components/DateRangeFilter';Features:
- ✅ Search with highlighting and case sensitivity
- ✅ Status and date range filtering
- ✅ History tracking with duplicate prevention
- ✅ Preset management (save/load/rename/delete)
- ✅ Undo/redo with configurable levels
- ✅ Full keyboard navigation
- ✅ WCAG 2.1 AA accessibility compliant
- ✅ Performance optimized (<100ms operations)
- ✅ localStorage persistence
See .claude/patterns/search-filter-patterns.md for implementation patterns and best practices.
This repository demonstrates:
✅ Full-Stack Mastery
- React 19 + Next.js 16 (frontend)
- Apollo GraphQL 4 (data layer)
- Express.js (auxiliary services)
✅ Code Quality
- ESLint v9 (strict type safety)
- TypeScript strict mode
- Comprehensive testing
✅ Architecture Patterns
- Dual-backend separation
- Server + Client Components
- DataLoader for N+1 prevention
- Real-time event streaming
✅ Enterprise Practices
- Monorepo with pnpm workspaces
- Production-ready error handling
- Comprehensive documentation
- WCAG 2.1 Level AA accessibility compliance
- CI/CD ready
See docs/start-from-here.md for the 7-day interview prep plan.
- ESLint v9 Documentation
- TypeScript Handbook
- Apollo Client Documentation
- Next.js Documentation
- Express Documentation
Interview preparation material.
- Check Documentation - See CLAUDE.md and docs/ folder
- Review Code - Examples in frontend/components/, backend-graphql/src/resolvers/
- Run Tests -
pnpm testto verify everything works - Lint Status -
pnpm lintto check code quality
Status: ✅ Production Ready
ESLint: ✅ v9 (0 issues)
Tests: ✅ All Passing (2145/2145 across all packages)
Frontend Tests: ✅ 1792/1792 passing
Documentation: ✅ Complete
Quality: ⭐⭐⭐⭐⭐ Enterprise-Grade
Phase 3 (Search & Filtering): ✅ Complete