# LocalGreenChain Agent Deployment Plan > **Generated**: 2025-11-23 > **Purpose**: 10 parallel agents for worktree deployment > **Branch Pattern**: `claude/agent-{N}-{task}-{session-id}` --- ## Overview This document defines 10 specialized agents to implement the critical next steps for LocalGreenChain. Each agent works independently on a dedicated worktree and can be deployed in parallel. ### Priority Matrix | Priority | Agents | Focus Area | |----------|--------|------------| | **P0 - Critical** | Agent 1, 2 | Auth + Database (Blocking MVP) | | **P1 - High** | Agent 3, 4, 5 | File Storage + Deployment + Testing | | **P2 - Medium** | Agent 6, 7, 8 | Real-time + Analytics + Notifications | | **P3 - Enhancement** | Agent 9, 10 | Marketplace + Mobile | --- ## Agent 1: Authentication System **Priority**: P0 - Critical (Blocks all user features) **Estimated Complexity**: High **Dependencies**: None ### Objective Implement a complete user authentication system with NextAuth.js supporting multiple providers. ### Tasks 1. **Install Dependencies** ```bash bun add next-auth @next-auth/prisma-adapter bcryptjs bun add -D @types/bcryptjs ``` 2. **Create Auth Configuration** - [ ] Create `pages/api/auth/[...nextauth].ts` with NextAuth configuration - [ ] Configure providers: Credentials, GitHub, Google - [ ] Set up JWT strategy with secure token handling - [ ] Implement session callback for user data enrichment 3. **Create Auth Pages** - [ ] `pages/auth/signin.tsx` - Custom sign-in page - [ ] `pages/auth/signup.tsx` - Registration page - [ ] `pages/auth/forgot-password.tsx` - Password reset flow - [ ] `pages/auth/verify-email.tsx` - Email verification 4. **Create Auth Components** - [ ] `components/auth/LoginForm.tsx` - [ ] `components/auth/RegisterForm.tsx` - [ ] `components/auth/PasswordResetForm.tsx` - [ ] `components/auth/SocialLoginButtons.tsx` - [ ] `components/auth/AuthGuard.tsx` - Route protection wrapper 5. **Create Auth Hooks & Context** - [ ] `lib/auth/useAuth.ts` - Authentication hook - [ ] `lib/auth/AuthContext.tsx` - Auth state provider - [ ] `lib/auth/permissions.ts` - Role-based permissions 6. **Security Implementation** - [ ] Password hashing with bcrypt (min 12 rounds) - [ ] CSRF protection for forms - [ ] Rate limiting on auth endpoints - [ ] Secure cookie configuration - [ ] Session invalidation on password change 7. **API Middleware** - [ ] `lib/auth/withAuth.ts` - API route protection middleware - [ ] `lib/auth/withRole.ts` - Role-based API protection - [ ] Update existing API routes to require authentication where needed ### Files to Create ``` lib/auth/ ├── AuthContext.tsx ├── useAuth.ts ├── permissions.ts ├── withAuth.ts ├── withRole.ts └── types.ts pages/api/auth/ ├── [...nextauth].ts ├── register.ts ├── forgot-password.ts └── verify-email.ts pages/auth/ ├── signin.tsx ├── signup.tsx ├── forgot-password.tsx └── verify-email.tsx components/auth/ ├── LoginForm.tsx ├── RegisterForm.tsx ├── PasswordResetForm.tsx ├── SocialLoginButtons.tsx └── AuthGuard.tsx ``` ### Success Criteria - [ ] Users can register with email/password - [ ] Users can sign in with credentials or OAuth - [ ] Protected routes redirect to sign-in - [ ] Session persists across page refreshes - [ ] Password reset flow works end-to-end - [ ] All auth tests pass --- ## Agent 2: Database Integration **Priority**: P0 - Critical (Blocks data persistence) **Estimated Complexity**: High **Dependencies**: None (Agent 1 can use schema once ready) ### Objective Implement PostgreSQL database with Prisma ORM, replacing all file-based storage. ### Tasks 1. **Install Dependencies** ```bash bun add @prisma/client bun add -D prisma ``` 2. **Initialize Prisma** ```bash bunx prisma init ``` 3. **Design Complete Schema** - [ ] Create `prisma/schema.prisma` with all models: ```prisma // Core Models model User { id String @id @default(cuid()) email String @unique emailVerified DateTime? passwordHash String? name String? image String? role Role @default(USER) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt plants Plant[] farms VerticalFarm[] preferences ConsumerPreference[] auditLogs AuditLog[] } model Plant { id String @id @default(cuid()) name String species String variety String? parentId String? generation Int @default(1) registeredAt DateTime @default(now()) ownerId String locationLat Float? locationLng Float? blockHash String? owner User @relation(fields: [ownerId], references: [id]) parent Plant? @relation("PlantLineage", fields: [parentId], references: [id]) children Plant[] @relation("PlantLineage") transportEvents TransportEvent[] environment EnvironmentRecord[] } model TransportEvent { id String @id @default(cuid()) plantId String eventType TransportEventType fromLat Float? fromLng Float? toLat Float? toLng Float? distance Float? carbonKg Float? timestamp DateTime @default(now()) metadata Json? plant Plant @relation(fields: [plantId], references: [id]) } model VerticalFarm { id String @id @default(cuid()) name String ownerId String totalArea Float zones Int createdAt DateTime @default(now()) owner User @relation(fields: [ownerId], references: [id]) farmZones FarmZone[] batches CropBatch[] } // ... additional models for zones, batches, recipes, etc. ``` 4. **Create Database Service Layer** - [ ] `lib/db/prisma.ts` - Prisma client singleton - [ ] `lib/db/plants.ts` - Plant CRUD operations - [ ] `lib/db/users.ts` - User CRUD operations - [ ] `lib/db/transport.ts` - Transport event operations - [ ] `lib/db/farms.ts` - Vertical farm operations - [ ] `lib/db/demand.ts` - Demand/preference operations 5. **Create Migration System** - [ ] Initial migration with all models - [ ] Seed script for development data - [ ] Migration script for production deployments 6. **Update Existing Code** - [ ] Refactor `PlantChain` to use database - [ ] Update all API routes to use Prisma - [ ] Remove file-based storage code - [ ] Update agents to use database queries 7. **Database Utilities** - [ ] Connection pooling configuration - [ ] Query logging for development - [ ] Error handling wrapper - [ ] Transaction helpers ### Files to Create ``` prisma/ ├── schema.prisma ├── migrations/ └── seed.ts lib/db/ ├── prisma.ts ├── plants.ts ├── users.ts ├── transport.ts ├── farms.ts ├── demand.ts ├── audit.ts └── types.ts ``` ### Success Criteria - [ ] All models defined in Prisma schema - [ ] Migrations run successfully - [ ] All API routes use database - [ ] Data persists across restarts - [ ] Seed data populates correctly - [ ] Database tests pass --- ## Agent 3: File Upload & Storage **Priority**: P1 - High **Estimated Complexity**: Medium **Dependencies**: Agent 2 (Database for metadata) ### Objective Implement cloud-based file storage for plant photos, documents, and certificates. ### Tasks 1. **Install Dependencies** ```bash bun add @aws-sdk/client-s3 @aws-sdk/s3-request-presigner bun add sharp multer bun add -D @types/multer ``` 2. **Configure Storage Provider** - [ ] `lib/storage/config.ts` - S3/R2/MinIO configuration - [ ] Support for multiple providers (AWS S3, Cloudflare R2, local MinIO) - [ ] Environment variable setup for credentials 3. **Create Upload Service** - [ ] `lib/storage/uploadService.ts` - Core upload functionality - [ ] Presigned URL generation for direct uploads - [ ] File type validation (images, PDFs only) - [ ] File size limits (10MB default) - [ ] Automatic image optimization with Sharp 4. **Create Image Processing Pipeline** - [ ] `lib/storage/imageProcessor.ts` - [ ] Generate thumbnails (150x150, 300x300, 600x600) - [ ] WebP conversion for optimization - [ ] EXIF data extraction for metadata - [ ] Image compression 5. **Create API Endpoints** - [ ] `pages/api/upload/image.ts` - Image upload endpoint - [ ] `pages/api/upload/document.ts` - Document upload - [ ] `pages/api/upload/presigned.ts` - Get presigned URL - [ ] `pages/api/upload/[fileId].ts` - Get/delete file 6. **Create UI Components** - [ ] `components/upload/ImageUploader.tsx` - Drag & drop image upload - [ ] `components/upload/PhotoGallery.tsx` - Plant photo gallery - [ ] `components/upload/DocumentUploader.tsx` - PDF/document upload - [ ] `components/upload/ProgressBar.tsx` - Upload progress 7. **Database Integration** - [ ] Add `File` model to Prisma schema - [ ] Track upload metadata, URLs, and associations - [ ] Implement soft delete for files ### Files to Create ``` lib/storage/ ├── config.ts ├── uploadService.ts ├── imageProcessor.ts ├── providers/ │ ├── s3.ts │ ├── r2.ts │ └── local.ts └── types.ts pages/api/upload/ ├── image.ts ├── document.ts ├── presigned.ts └── [fileId].ts components/upload/ ├── ImageUploader.tsx ├── PhotoGallery.tsx ├── DocumentUploader.tsx └── ProgressBar.tsx ``` ### Success Criteria - [ ] Images upload successfully to cloud storage - [ ] Thumbnails generate automatically - [ ] Presigned URLs work for direct uploads - [ ] Gallery displays plant photos - [ ] File deletion works properly - [ ] Upload tests pass --- ## Agent 4: Production Deployment **Priority**: P1 - High **Estimated Complexity**: Medium **Dependencies**: Agent 1, 2 (for full deployment) ### Objective Create complete production deployment infrastructure with Docker, logging, and monitoring. ### Tasks 1. **Docker Configuration** - [ ] `Dockerfile` - Multi-stage production build - [ ] `docker-compose.yml` - Full stack with DB, Redis - [ ] `docker-compose.dev.yml` - Development environment - [ ] `.dockerignore` - Exclude unnecessary files 2. **Create Dockerfile** ```dockerfile # Build stage FROM oven/bun:1 as builder WORKDIR /app COPY package.json bun.lockb ./ RUN bun install --frozen-lockfile COPY . . RUN bun run build # Production stage FROM oven/bun:1-slim WORKDIR /app COPY --from=builder /app/.next ./.next COPY --from=builder /app/public ./public COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/package.json ./ EXPOSE 3000 CMD ["bun", "run", "start"] ``` 3. **Environment Configuration** - [ ] `.env.example` - Template with all variables - [ ] `lib/config/env.ts` - Environment validation with Zod - [ ] Separate configs for dev/staging/production - [ ] Secrets management documentation 4. **Logging System** - [ ] `lib/logging/logger.ts` - Structured logging with pino - [ ] Request/response logging middleware - [ ] Error logging with stack traces - [ ] Audit logging integration - [ ] Log rotation configuration 5. **Error Tracking** - [ ] Sentry integration setup - [ ] `lib/monitoring/sentry.ts` - Sentry configuration - [ ] Error boundary components - [ ] Source map uploads for production 6. **Health Checks & Monitoring** - [ ] `pages/api/health.ts` - Health check endpoint - [ ] `pages/api/health/ready.ts` - Readiness probe - [ ] `pages/api/health/live.ts` - Liveness probe - [ ] Prometheus metrics endpoint - [ ] Grafana dashboard configuration 7. **CI/CD Pipeline** - [ ] `.github/workflows/ci.yml` - Test and lint on PR - [ ] `.github/workflows/deploy.yml` - Production deployment - [ ] `.github/workflows/preview.yml` - Preview deployments - [ ] Automated security scanning 8. **Security Hardening** - [ ] Security headers middleware - [ ] Rate limiting configuration - [ ] CORS policy setup - [ ] CSP (Content Security Policy) ### Files to Create ``` Dockerfile docker-compose.yml docker-compose.dev.yml .dockerignore .env.example lib/config/ ├── env.ts └── index.ts lib/logging/ ├── logger.ts └── middleware.ts lib/monitoring/ ├── sentry.ts ├── metrics.ts └── health.ts .github/workflows/ ├── ci.yml ├── deploy.yml └── preview.yml infra/ ├── grafana/ │ └── dashboard.json └── prometheus/ └── prometheus.yml ``` ### Success Criteria - [ ] Docker build succeeds - [ ] docker-compose up runs full stack - [ ] Health checks respond correctly - [ ] Logs output in structured JSON - [ ] CI pipeline runs on PRs - [ ] Deployment to staging works --- ## Agent 5: Testing & CI/CD **Priority**: P1 - High **Estimated Complexity**: Medium **Dependencies**: None ### Objective Comprehensive test coverage and automated CI/CD pipeline. ### Tasks 1. **Expand Unit Tests** - [ ] Test all agent classes (10 agents) - [ ] Test blockchain operations - [ ] Test transport tracker - [ ] Test demand forecaster - [ ] Test vertical farm controller - [ ] Target: 80% code coverage 2. **API Integration Tests** - [ ] Test all 52 API endpoints - [ ] Test authentication flows - [ ] Test error responses - [ ] Test rate limiting - [ ] Mock database for tests 3. **E2E Tests with Cypress** - [ ] `cypress/e2e/auth.cy.ts` - Authentication flows - [ ] `cypress/e2e/plant-registration.cy.ts` - Plant lifecycle - [ ] `cypress/e2e/transport.cy.ts` - Transport tracking - [ ] `cypress/e2e/vertical-farm.cy.ts` - Farm management - [ ] `cypress/e2e/transparency.cy.ts` - Transparency dashboard 4. **Test Configuration** - [ ] `jest.config.js` - Jest configuration - [ ] `cypress.config.ts` - Cypress configuration - [ ] Test utilities and mocks - [ ] Fixtures for test data 5. **CI Pipeline** ```yaml # .github/workflows/ci.yml name: CI on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 - run: bun install - run: bun run lint - run: bun run type-check - run: bun run test --coverage - run: bun run build e2e: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 - run: bun install - run: bun run build - run: bun run cypress run ``` 6. **Code Quality Tools** - [ ] ESLint configuration update - [ ] Prettier configuration - [ ] Husky pre-commit hooks - [ ] lint-staged configuration - [ ] Commitlint for commit messages 7. **Test Reporting** - [ ] Coverage reports to Codecov - [ ] Test result annotations on PRs - [ ] Cypress screenshots on failure - [ ] Performance benchmarks ### Files to Create ``` __tests__/ ├── unit/ │ ├── agents/ │ │ ├── PlantLineageAgent.test.ts │ │ ├── TransportTrackerAgent.test.ts │ │ └── ... (8 more agent tests) │ ├── blockchain/ │ │ └── PlantChain.test.ts │ └── services/ │ └── ... (service tests) ├── integration/ │ ├── api/ │ │ ├── plants.test.ts │ │ ├── transport.test.ts │ │ ├── demand.test.ts │ │ └── vertical-farm.test.ts │ └── auth/ │ └── authentication.test.ts └── e2e/ └── ... (moved to cypress/e2e) cypress/ ├── e2e/ │ ├── auth.cy.ts │ ├── plant-registration.cy.ts │ ├── transport.cy.ts │ └── vertical-farm.cy.ts ├── fixtures/ │ └── ... (test data) └── support/ └── commands.ts .github/workflows/ ├── ci.yml └── e2e.yml ``` ### Success Criteria - [ ] 80%+ code coverage - [ ] All unit tests pass - [ ] All integration tests pass - [ ] E2E tests run in CI - [ ] PR checks block on failures - [ ] Coverage reports generated --- ## Agent 6: Real-Time Updates **Priority**: P2 - Medium **Estimated Complexity**: Medium **Dependencies**: Agent 2 (Database) ### Objective Implement real-time updates using WebSockets with Socket.io for live data synchronization. ### Tasks 1. **Install Dependencies** ```bash bun add socket.io socket.io-client bun add -D @types/socket.io ``` 2. **WebSocket Server Setup** - [ ] `lib/realtime/socketServer.ts` - Socket.io server - [ ] Integration with Next.js API routes - [ ] Room-based subscriptions (per farm, per plant) - [ ] Authentication middleware for sockets 3. **Event Types** - [ ] `lib/realtime/events.ts` - Define all event types ```typescript export enum RealtimeEvent { PLANT_REGISTERED = 'plant:registered', PLANT_UPDATED = 'plant:updated', TRANSPORT_EVENT = 'transport:event', FARM_ALERT = 'farm:alert', BATCH_UPDATE = 'batch:update', ENVIRONMENT_READING = 'environment:reading', } ``` 4. **Client-Side Integration** - [ ] `lib/realtime/useSocket.ts` - Socket.io React hook - [ ] `lib/realtime/SocketContext.tsx` - Socket provider - [ ] Auto-reconnection handling - [ ] Offline state management 5. **Real-Time Features** - [ ] Live plant registration notifications - [ ] Real-time transport tracking updates - [ ] Live vertical farm sensor data - [ ] Instant alert notifications - [ ] Live auction/marketplace updates 6. **UI Components** - [ ] `components/realtime/ConnectionStatus.tsx` - Connection indicator - [ ] `components/realtime/LiveFeed.tsx` - Activity feed - [ ] `components/realtime/NotificationToast.tsx` - Real-time toasts 7. **Fallback to SSE** - [ ] Enhance existing SSE implementation - [ ] Auto-fallback when WebSocket fails - [ ] Graceful degradation ### Files to Create ``` lib/realtime/ ├── socketServer.ts ├── socketClient.ts ├── events.ts ├── useSocket.ts ├── SocketContext.tsx ├── rooms.ts └── types.ts pages/api/socket.ts components/realtime/ ├── ConnectionStatus.tsx ├── LiveFeed.tsx ├── NotificationToast.tsx └── LiveChart.tsx ``` ### Success Criteria - [ ] WebSocket connections establish successfully - [ ] Real-time updates display instantly - [ ] Room subscriptions work correctly - [ ] Fallback to SSE works - [ ] Connection status displays accurately - [ ] Real-time tests pass --- ## Agent 7: Advanced Analytics Dashboard **Priority**: P2 - Medium **Estimated Complexity**: Medium **Dependencies**: Agent 2 (Database) ### Objective Create comprehensive analytics dashboards with charts, trends, and insights. ### Tasks 1. **Install Dependencies** ```bash bun add recharts d3 date-fns bun add -D @types/d3 ``` 2. **Analytics Data Layer** - [ ] `lib/analytics/aggregator.ts` - Data aggregation service - [ ] `lib/analytics/metrics.ts` - Metric calculations - [ ] `lib/analytics/trends.ts` - Trend analysis - [ ] Time-series data handling - [ ] Caching for expensive calculations 3. **API Endpoints** - [ ] `pages/api/analytics/overview.ts` - Dashboard overview - [ ] `pages/api/analytics/plants.ts` - Plant analytics - [ ] `pages/api/analytics/transport.ts` - Transport metrics - [ ] `pages/api/analytics/farms.ts` - Vertical farm analytics - [ ] `pages/api/analytics/sustainability.ts` - Environmental impact - [ ] `pages/api/analytics/export.ts` - Export data 4. **Chart Components** - [ ] `components/analytics/LineChart.tsx` - Time series - [ ] `components/analytics/BarChart.tsx` - Comparisons - [ ] `components/analytics/PieChart.tsx` - Distribution - [ ] `components/analytics/AreaChart.tsx` - Stacked data - [ ] `components/analytics/Heatmap.tsx` - Geographic density - [ ] `components/analytics/Gauge.tsx` - KPI gauges 5. **Dashboard Pages** - [ ] `pages/analytics/index.tsx` - Main dashboard - [ ] `pages/analytics/plants.tsx` - Plant insights - [ ] `pages/analytics/transport.tsx` - Carbon & miles - [ ] `pages/analytics/farms.tsx` - Farm performance - [ ] `pages/analytics/sustainability.tsx` - Environmental 6. **Dashboard Widgets** - [ ] `components/analytics/KPICard.tsx` - Key metrics - [ ] `components/analytics/TrendIndicator.tsx` - Up/down trends - [ ] `components/analytics/DataTable.tsx` - Sortable tables - [ ] `components/analytics/DateRangePicker.tsx` - Time selection - [ ] `components/analytics/FilterPanel.tsx` - Data filtering 7. **Export Features** - [ ] PDF report generation - [ ] CSV data export - [ ] Chart image download - [ ] Scheduled reports (email) ### Files to Create ``` lib/analytics/ ├── aggregator.ts ├── metrics.ts ├── trends.ts ├── cache.ts └── types.ts pages/api/analytics/ ├── overview.ts ├── plants.ts ├── transport.ts ├── farms.ts ├── sustainability.ts └── export.ts pages/analytics/ ├── index.tsx ├── plants.tsx ├── transport.tsx ├── farms.tsx └── sustainability.tsx components/analytics/ ├── LineChart.tsx ├── BarChart.tsx ├── PieChart.tsx ├── AreaChart.tsx ├── Heatmap.tsx ├── Gauge.tsx ├── KPICard.tsx ├── TrendIndicator.tsx ├── DataTable.tsx ├── DateRangePicker.tsx └── FilterPanel.tsx ``` ### Success Criteria - [ ] Dashboard loads with real data - [ ] All chart types render correctly - [ ] Date range filtering works - [ ] Export generates valid files - [ ] Performance under 3s load time - [ ] Analytics tests pass --- ## Agent 8: Notification System **Priority**: P2 - Medium **Estimated Complexity**: Medium **Dependencies**: Agent 1 (Auth), Agent 2 (Database) ### Objective Implement multi-channel notification system with email, push, and in-app notifications. ### Tasks 1. **Install Dependencies** ```bash bun add nodemailer @sendgrid/mail bun add web-push bun add -D @types/nodemailer @types/web-push ``` 2. **Notification Service** - [ ] `lib/notifications/service.ts` - Core notification service - [ ] `lib/notifications/channels/email.ts` - Email channel - [ ] `lib/notifications/channels/push.ts` - Web push - [ ] `lib/notifications/channels/inApp.ts` - In-app notifications - [ ] Notification queue with retry logic 3. **Email Templates** - [ ] `lib/notifications/templates/welcome.ts` - Welcome email - [ ] `lib/notifications/templates/plantReminder.ts` - Care reminders - [ ] `lib/notifications/templates/transportAlert.ts` - Transport updates - [ ] `lib/notifications/templates/farmAlert.ts` - Farm alerts - [ ] React Email for template rendering 4. **Push Notifications** - [ ] Service worker for push - [ ] VAPID key generation - [ ] Subscription management - [ ] Push payload handling 5. **In-App Notifications** - [ ] `lib/notifications/inApp.ts` - In-app notification store - [ ] Notification preferences per user - [ ] Mark as read/unread functionality - [ ] Notification grouping 6. **API Endpoints** - [ ] `pages/api/notifications/index.ts` - List notifications - [ ] `pages/api/notifications/[id].ts` - Get/update notification - [ ] `pages/api/notifications/preferences.ts` - User preferences - [ ] `pages/api/notifications/subscribe.ts` - Push subscription - [ ] `pages/api/notifications/send.ts` - Send notification (internal) 7. **UI Components** - [ ] `components/notifications/NotificationBell.tsx` - Header bell icon - [ ] `components/notifications/NotificationList.tsx` - Dropdown list - [ ] `components/notifications/NotificationItem.tsx` - Single notification - [ ] `components/notifications/PreferencesForm.tsx` - Settings 8. **Scheduled Notifications** - [ ] Plant care reminders (watering, feeding) - [ ] Harvest time alerts - [ ] Weekly digest emails - [ ] Cron job integration ### Files to Create ``` lib/notifications/ ├── service.ts ├── queue.ts ├── scheduler.ts ├── channels/ │ ├── email.ts │ ├── push.ts │ └── inApp.ts ├── templates/ │ ├── welcome.ts │ ├── plantReminder.ts │ ├── transportAlert.ts │ └── farmAlert.ts └── types.ts pages/api/notifications/ ├── index.ts ├── [id].ts ├── preferences.ts ├── subscribe.ts └── send.ts components/notifications/ ├── NotificationBell.tsx ├── NotificationList.tsx ├── NotificationItem.tsx └── PreferencesForm.tsx public/ └── sw.js (service worker) ``` ### Success Criteria - [ ] Emails send successfully - [ ] Push notifications work - [ ] In-app notifications display - [ ] Preferences save correctly - [ ] Reminders schedule properly - [ ] Notification tests pass --- ## Agent 9: Marketplace Foundation **Priority**: P3 - Enhancement **Estimated Complexity**: High **Dependencies**: Agent 1 (Auth), Agent 2 (Database) ### Objective Create the foundation for a plant trading marketplace with listings, offers, and basic transactions. ### Tasks 1. **Database Models** - [ ] Add marketplace models to Prisma schema: ```prisma model Listing { id String @id @default(cuid()) sellerId String plantId String? title String description String price Decimal currency String @default("USD") quantity Int category ListingCategory status ListingStatus createdAt DateTime @default(now()) expiresAt DateTime? seller User @relation(fields: [sellerId], references: [id]) plant Plant? @relation(fields: [plantId], references: [id]) offers Offer[] images ListingImage[] } model Offer { id String @id @default(cuid()) listingId String buyerId String amount Decimal message String? status OfferStatus createdAt DateTime @default(now()) listing Listing @relation(fields: [listingId], references: [id]) buyer User @relation(fields: [buyerId], references: [id]) } ``` 2. **Marketplace Service** - [ ] `lib/marketplace/listingService.ts` - Listing CRUD - [ ] `lib/marketplace/offerService.ts` - Offer management - [ ] `lib/marketplace/searchService.ts` - Listing search - [ ] `lib/marketplace/matchingService.ts` - Buyer/seller matching 3. **API Endpoints** - [ ] `pages/api/marketplace/listings/index.ts` - List/create - [ ] `pages/api/marketplace/listings/[id].ts` - CRUD - [ ] `pages/api/marketplace/listings/[id]/offers.ts` - Offers - [ ] `pages/api/marketplace/search.ts` - Search listings - [ ] `pages/api/marketplace/my-listings.ts` - User's listings - [ ] `pages/api/marketplace/my-offers.ts` - User's offers 4. **Marketplace Pages** - [ ] `pages/marketplace/index.tsx` - Marketplace home - [ ] `pages/marketplace/listings/[id].tsx` - Listing detail - [ ] `pages/marketplace/create.tsx` - Create listing - [ ] `pages/marketplace/my-listings.tsx` - Manage listings - [ ] `pages/marketplace/my-offers.tsx` - Manage offers 5. **UI Components** - [ ] `components/marketplace/ListingCard.tsx` - [ ] `components/marketplace/ListingGrid.tsx` - [ ] `components/marketplace/ListingForm.tsx` - [ ] `components/marketplace/OfferForm.tsx` - [ ] `components/marketplace/OfferList.tsx` - [ ] `components/marketplace/SearchFilters.tsx` - [ ] `components/marketplace/PriceDisplay.tsx` 6. **Seller Features** - [ ] Seller profile page - [ ] Rating and review system (model only) - [ ] Listing analytics - [ ] Inventory management 7. **Buyer Features** - [ ] Saved listings (wishlist) - [ ] Search with filters - [ ] Offer history - [ ] Messaging foundation (model only) ### Files to Create ``` lib/marketplace/ ├── listingService.ts ├── offerService.ts ├── searchService.ts ├── matchingService.ts └── types.ts pages/api/marketplace/ ├── listings/ │ ├── index.ts │ └── [id]/ │ ├── index.ts │ └── offers.ts ├── search.ts ├── my-listings.ts └── my-offers.ts pages/marketplace/ ├── index.tsx ├── create.tsx ├── my-listings.tsx ├── my-offers.tsx └── listings/ └── [id].tsx components/marketplace/ ├── ListingCard.tsx ├── ListingGrid.tsx ├── ListingForm.tsx ├── OfferForm.tsx ├── OfferList.tsx ├── SearchFilters.tsx └── PriceDisplay.tsx ``` ### Success Criteria - [ ] Listings create and display - [ ] Search with filters works - [ ] Offers submit correctly - [ ] Seller can manage listings - [ ] Buyer can browse and offer - [ ] Marketplace tests pass --- ## Agent 10: Mobile Optimization **Priority**: P3 - Enhancement **Estimated Complexity**: Medium **Dependencies**: All core agents (1-5) ### Objective Optimize the application for mobile devices with PWA capabilities and responsive improvements. ### Tasks 1. **PWA Configuration** - [ ] `next.config.js` - PWA plugin configuration - [ ] `public/manifest.json` - Web app manifest - [ ] Service worker for offline support - [ ] Install prompts 2. **Install Dependencies** ```bash bun add next-pwa ``` 3. **Mobile-First Styling** - [ ] Audit all components for mobile responsiveness - [ ] `styles/mobile.css` - Mobile-specific overrides - [ ] Touch-friendly tap targets (min 44px) - [ ] Swipe gestures for navigation - [ ] Bottom navigation bar 4. **Mobile Components** - [ ] `components/mobile/BottomNav.tsx` - Bottom navigation - [ ] `components/mobile/SwipeableCard.tsx` - Swipeable cards - [ ] `components/mobile/PullToRefresh.tsx` - Pull to refresh - [ ] `components/mobile/MobileHeader.tsx` - Mobile header - [ ] `components/mobile/InstallPrompt.tsx` - PWA install 5. **Offline Support** - [ ] Cache critical pages - [ ] Offline fallback page - [ ] Queue actions when offline - [ ] Sync when back online - [ ] IndexedDB for local storage 6. **Performance Optimization** - [ ] Image lazy loading - [ ] Code splitting by route - [ ] Bundle size analysis - [ ] Critical CSS extraction - [ ] Lighthouse score > 90 7. **Touch Interactions** - [ ] Swipe to dismiss notifications - [ ] Pinch to zoom on images - [ ] Long press for context menus - [ ] Haptic feedback (where supported) 8. **Camera Integration** - [ ] `lib/mobile/camera.ts` - Camera access - [ ] QR code scanning - [ ] Photo capture for plants - [ ] Image cropping 9. **Mobile Pages** - [ ] `pages/m/index.tsx` - Mobile home (simplified) - [ ] `pages/m/scan.tsx` - QR scanner - [ ] `pages/m/quick-add.tsx` - Quick plant add ### Files to Create ``` public/ ├── manifest.json ├── icons/ │ ├── icon-72x72.png │ ├── icon-96x96.png │ ├── icon-128x128.png │ ├── icon-144x144.png │ ├── icon-152x152.png │ ├── icon-192x192.png │ ├── icon-384x384.png │ └── icon-512x512.png ├── offline.html └── sw.js lib/mobile/ ├── camera.ts ├── offline.ts ├── gestures.ts └── pwa.ts components/mobile/ ├── BottomNav.tsx ├── SwipeableCard.tsx ├── PullToRefresh.tsx ├── MobileHeader.tsx ├── InstallPrompt.tsx └── QRScanner.tsx pages/m/ ├── index.tsx ├── scan.tsx └── quick-add.tsx styles/ └── mobile.css ``` ### Success Criteria - [ ] PWA installs on mobile - [ ] Offline mode works - [ ] All pages responsive - [ ] Lighthouse score > 90 - [ ] Camera/QR works - [ ] Mobile tests pass --- ## Deployment Instructions ### Setting Up Worktrees For each agent, create a dedicated worktree: ```bash # From the main repository cd localgreenchain # Create worktrees for each agent git worktree add ../lgc-agent-1-auth claude/agent-1-auth-{session-id} git worktree add ../lgc-agent-2-database claude/agent-2-database-{session-id} git worktree add ../lgc-agent-3-storage claude/agent-3-storage-{session-id} git worktree add ../lgc-agent-4-deploy claude/agent-4-deploy-{session-id} git worktree add ../lgc-agent-5-testing claude/agent-5-testing-{session-id} git worktree add ../lgc-agent-6-realtime claude/agent-6-realtime-{session-id} git worktree add ../lgc-agent-7-analytics claude/agent-7-analytics-{session-id} git worktree add ../lgc-agent-8-notifications claude/agent-8-notifications-{session-id} git worktree add ../lgc-agent-9-marketplace claude/agent-9-marketplace-{session-id} git worktree add ../lgc-agent-10-mobile claude/agent-10-mobile-{session-id} ``` ### Agent Coordination 1. **P0 Agents (1-2)** should start immediately - no dependencies 2. **P1 Agents (3-5)** can start after database schema is ready 3. **P2 Agents (6-8)** depend on auth and database 4. **P3 Agents (9-10)** can start once core features are stable ### Merge Order 1. Agent 2 (Database) - First, as all others depend on it 2. Agent 1 (Auth) - Second, required for protected features 3. Agent 5 (Testing) - Third, to validate core 4. Agent 4 (Deployment) - Fourth, for infrastructure 5. Agent 3 (Storage) - After auth is ready 6. Agents 6-8 in parallel 7. Agents 9-10 last --- ## Summary | Agent | Task | Priority | Files | Est. LOC | |-------|------|----------|-------|----------| | 1 | Authentication | P0 | ~20 | ~2000 | | 2 | Database | P0 | ~15 | ~1500 | | 3 | File Storage | P1 | ~15 | ~1200 | | 4 | Deployment | P1 | ~15 | ~800 | | 5 | Testing | P1 | ~30 | ~3000 | | 6 | Real-Time | P2 | ~15 | ~1000 | | 7 | Analytics | P2 | ~20 | ~2500 | | 8 | Notifications | P2 | ~20 | ~1500 | | 9 | Marketplace | P3 | ~20 | ~2000 | | 10 | Mobile | P3 | ~15 | ~1200 | **Total**: ~185 new files, ~16,700 lines of code --- *Generated for LocalGreenChain worktree deployment*