Skip to main content

DPPS Action Items Checklist

Owner: Development Team
Target: 2-week Sprint
Status: Ready to Execute


πŸ“‹ Phase 0: Pre-Implementation (30 min)​

  • Review PRD v1.0 β€” Stakeholder sign-off
  • Review Implementation Plan β€” DPPS_IMPLEMENTATION_PLAN.md
  • Review Quick Start β€” DPPS_QUICK_START.md
  • Review Summary β€” DPPS_SUMMARY.md
  • Create Sprint Board β€” Jira/GitHub Issues
  • Set up Grafana dashboards β€” Empty templates ready

πŸ”§ Day 1: OpenAPI Schema & Model Regeneration​

Task 1.1: Enhance Product Schema (30 min)​

  • Open valkyrai/src/main/resources/openapi/api.hbs.yaml
  • Add contentDataId, deliveryMode, maxDownloads, expiresAfterDays to Product schema
  • Reference: DPPS_OPENAPI_ADDITIONS.md
  • Commit changes: git commit -m "feat: add DPPS fields to Product schema"

Task 1.2: Regenerate ThorAPI Models (15 min)​

  • cd thorapi && mvn clean install
  • Verify no build errors
  • Check generated files:
    grep "contentDataId" valkyrai/generated/spring/src/main/java/com/valkyrlabs/model/Product.java

Task 1.3: Rebuild ValkyrAI (15 min)​

  • cd valkyrai && mvn clean install -DskipTests
  • Verify Product service compiles with new fields
  • Commit generated files: git commit -m "chore: regenerate ThorAPI models for DPPS"

Task 1.4: Implement DppsOrchestrationService (2 hours)​

  • Create valkyrai/src/main/java/com/valkyrlabs/valkyrai/service/DppsOrchestrationService.java
  • Copy implementation from DPPS_IMPLEMENTATION_PLAN.md Phase 2.2
  • Implement createProductFromUpload()
  • Implement publishProduct()
  • Add Spring @Service annotation
  • Add Javadoc comments
  • Commit: git commit -m "feat: add DPPS orchestration service"

Task 1.5: Unit Tests for Orchestration Service (1 hour)​

  • Create valkyrai/src/test/java/com/valkyrlabs/valkyrai/service/DppsOrchestrationServiceTest.java
  • Test createProductFromUpload() with mock FileRecord
  • Test publishProduct() with mock Product
  • Test ACL permission grants
  • Run tests: mvn test -Dtest=DppsOrchestrationServiceTest
  • Commit: git commit -m "test: add unit tests for DPPS orchestration"

Day 1 Total: ~4 hours
End of Day 1 Deliverable: Working backend service for product creation from uploads


πŸ”§ Day 2: Workflow & Fulfillment​

Task 2.1: Implement DppsPurchaseFulfillmentWorkflow (2 hours)​

  • Create valkyrai/src/main/java/com/valkyrlabs/workflow/definitions/DppsPurchaseFulfillmentWorkflow.java
  • Copy implementation from DPPS_IMPLEMENTATION_PLAN.md Phase 2.3
  • Register workflow in @PostConstruct
  • Define tasks: VerifyPayment β†’ GrantAccess β†’ NotifyBuyer β†’ PostPurchase
  • Add @Component annotation
  • Commit: git commit -m "feat: add DPPS fulfillment workflow"

Task 2.2: Implement DigitalFulfillmentModule (1 hour)​

  • Create valkyrai/src/main/java/com/valkyrlabs/workflow/modules/DigitalFulfillmentModule.java
  • Copy implementation from DPPS_IMPLEMENTATION_PLAN.md Phase 2.4
  • Extend BaseMapIOModule
  • Add @Component("digitalFulfillmentModule") + @VModuleAware
  • Wrap existing DigitalFulfillmentService methods
  • Commit: git commit -m "feat: add digital fulfillment ExecModule"

Task 2.3: Implement DownloadController (2 hours)​

  • Create valkyrai/src/main/java/com/valkyrlabs/valkyrai/controller/DownloadController.java
  • Copy implementation from DPPS_IMPLEMENTATION_PLAN.md Phase 2.5
  • Implement GET /v1/download/{downloadAccessId}
  • Add ACL @PreAuthorize annotation
  • Enforce download limits + expiry
  • Generate signed URL via DigitalFulfillmentService
  • Commit: git commit -m "feat: add download controller with signed URLs"

Task 2.4: Integration Test (1.5 hours)​

  • Create valkyrai/src/test/java/com/valkyrlabs/valkyrai/DppsIntegrationTest.java
  • Test full flow: Upload β†’ Product β†’ Funnel β†’ Mock Payment β†’ Download
  • Verify ACL grants applied
  • Verify DownloadAccess created
  • Run: mvn test -Dtest=DppsIntegrationTest
  • Commit: git commit -m "test: add DPPS integration tests"

Day 2 Total: ~6.5 hours
End of Day 2 Deliverable: Complete backend workflow with download endpoint


🎨 Day 3: Frontend Components (Part 1)​

Task 3.1: Implement FileUploader Component (2 hours)​

  • Create web/typescript/valkyr_labs_com/src/components/dpps/FileUploader.tsx
  • Copy implementation from DPPS_IMPLEMENTATION_PLAN.md Phase 3.1
  • Install react-dropzone: npm install react-dropzone
  • Wire up /files/uploads/init and /files/uploads/complete
  • Add progress bar UI
  • Test with 10MB file
  • Commit: git commit -m "feat: add file uploader component"

Task 3.2: Implement ProductForm Component (2 hours)​

  • Create web/typescript/valkyr_labs_com/src/components/dpps/ProductForm.tsx
  • Copy implementation from DPPS_IMPLEMENTATION_PLAN.md Phase 3.2
  • Use Formik for validation
  • Wire up useCreateProductMutation()
  • Pre-fill name from file metadata
  • Add field validation (price > 0, maxDownloads > -1)
  • Commit: git commit -m "feat: add product form component"

Day 3 Total: ~4 hours
End of Day 3 Deliverable: Upload + Product creation UI


🎨 Day 4: Frontend Components (Part 2)​

Task 4.1: Implement PublishProduct Component (2 hours)​

  • Create web/typescript/valkyr_labs_com/src/components/dpps/PublishProduct.tsx
  • Copy implementation from DPPS_IMPLEMENTATION_PLAN.md Phase 3.3
  • Wire up useStartFunnelWizardMutation()
  • Add polling for wizard completion
  • Call publishFunnel endpoint
  • Display funnel landing page URL
  • Commit: git commit -m "feat: add publish product component"

Task 4.2: Implement DppsWizard Orchestration Page (2 hours)​

  • Create web/typescript/valkyr_labs_com/src/pages/DppsWizard.tsx
  • Copy implementation from DPPS_IMPLEMENTATION_PLAN.md Phase 3.4
  • Wire up multi-step flow (Upload β†’ Product β†’ Publish β†’ Complete)
  • Add step indicator UI
  • Add error handling + retry
  • Commit: git commit -m "feat: add DPPS wizard orchestration page"

Task 4.3: Route Registration (15 min)​

  • Add route to web/typescript/valkyr_labs_com/src/App.tsx or router config
  • Path: /dpps/create β†’ <DppsWizard />
  • Add navigation link in main menu
  • Commit: git commit -m "feat: add DPPS wizard route"

Day 4 Total: ~4.25 hours
End of Day 4 Deliverable: Complete frontend wizard UI


πŸ§ͺ Day 5: Integration Testing & Email​

Task 5.1: Create Email Template (30 min)​

  • Create valkyrai/src/main/resources/db/migration/V999__dpps_email_templates.sql
  • Copy SQL from DPPS_IMPLEMENTATION_PLAN.md Phase 4.1
  • Run migration: mvn flyway:migrate
  • Verify template in email_template table
  • Commit: git commit -m "feat: add DPPS email template"

Task 5.2: End-to-End Frontend Test (2 hours)​

  • Manual test: Upload 50MB file
  • Create product with $29.99 price
  • Publish funnel
  • Verify landing page URL returned
  • Check Stripe test mode checkout
  • Document any bugs found

Task 5.3: Stripe Test Mode Integration (2 hours)​

  • Set STRIPE_SECRET_KEY=sk_test_...
  • Trigger mock payment webhook
  • Verify Invoice + LineItem created
  • Verify DownloadAccess granted
  • Verify email sent (Mailtrap)
  • Test download link redemption
  • Check TTL expiry

Task 5.4: Fix Integration Issues (1.5 hours)​

  • Fix any ACL permission errors
  • Fix any workflow state persistence issues
  • Fix any frontend validation bugs
  • Re-run E2E test
  • Commit fixes: git commit -m "fix: resolve DPPS integration issues"

Day 5 Total: ~6 hours
End of Day 5 Deliverable: Working E2E flow with payment integration


πŸš€ Day 6: Admin Panel & Polish​

Task 6.1: Admin Orders View (2 hours)​

  • Create web/typescript/valkyr_labs_com/src/pages/admin/DppsOrders.tsx
  • Use useGetInvoicesPagedQuery() + useGetLineItemsQuery()
  • Display table: Order ID, Product, Buyer, Amount, Status, Date
  • Add filters: Status, Date range
  • Commit: git commit -m "feat: add admin orders view for DPPS"

Task 6.2: Admin Entitlements View (2 hours)​

  • Create web/typescript/valkyr_labs_com/src/pages/admin/DppsEntitlements.tsx
  • Use useGetDownloadAccessesPagedQuery()
  • Display: Product, Buyer, Download Count, Expiry, Status
  • Add "Revoke" button β†’ calls aclService.revokePermission()
  • Add "Resend Email" button β†’ triggers email workflow
  • Commit: git commit -m "feat: add admin entitlements view for DPPS"

Task 6.3: Error Handling & UX Polish (1.5 hours)​

  • Add user-friendly error messages (not raw exceptions)
  • Add loading spinners on mutations
  • Add success toast notifications
  • Add form validation feedback
  • Test all error paths (file too large, payment failed, etc.)
  • Commit: git commit -m "feat: improve DPPS error handling and UX"

Day 6 Total: ~5.5 hours
End of Day 6 Deliverable: Admin tools + polished UX


πŸ“Š Day 7: Metrics, Documentation & Deployment​

Task 7.1: Grafana Dashboard Configuration (1 hour)​

  • Create dashboard: "DPPS Metrics"
  • Add panels:
    • Upload success rate
    • TTFP histogram
    • Checkout conversion rate
    • Download link redemption rate
    • P95 latency (product creation, download URL generation)
  • Save dashboard JSON
  • Commit: git commit -m "feat: add DPPS Grafana dashboard"

Task 7.2: API Documentation (1 hour)​

  • Update Swagger/OpenAPI docs with new endpoints
  • Add example payloads for /v1/download/{id}
  • Document query parameters
  • Test in Swagger UI: http://localhost:8080/swagger-ui.html
  • Commit: git commit -m "docs: add DPPS API documentation"

Task 7.3: User Guide & Runbook (1 hour)​

  • Create docs/DPPS_USER_GUIDE.md for creators
  • Create docs/DPPS_RUNBOOK.md for ops team
  • Document troubleshooting steps
  • Document environment variables
  • Commit: git commit -m "docs: add DPPS user guide and runbook"

Task 7.4: Staging Deployment (1.5 hours)​

  • mvn clean package
  • make harness-up (or deploy to staging k8s)
  • Verify environment variables set
  • Run smoke test: Upload β†’ Product β†’ Funnel β†’ Payment β†’ Download
  • Check logs for errors
  • Tag release: git tag v1.0.0-dpps-beta

Task 7.5: Internal Dogfood (1.5 hours)​

  • Create 3 internal test products:
    1. Ebook (PDF, 5MB)
    2. Video course (ZIP, 100MB)
    3. Software license (TXT, 1KB)
  • Test each product's full flow
  • Measure TTFP for each
  • Document any issues in GitHub

Day 7 Total: ~6 hours
End of Day 7 Deliverable: Deployed to staging, 3 test products live


βœ… Final Checklist (Before GA)​

  • All PRD acceptance criteria pass
  • Security review completed (ACL tests, TTL tests, revocation)
  • Performance tests: P95 < 2s
  • Observability: Grafana dashboards live
  • Documentation: User guide, runbook, API docs
  • Runbooks: Support team trained
  • 3 internal products successfully purchased and downloaded
  • Zero P0/P1 bugs in staging
  • Stakeholder sign-off

πŸ“ˆ Success Metrics (Week 1)​

  • TTFP < 60 seconds (median)
  • Upload success rate > 95%
  • Checkout conversion > 4% (baseline)
  • Download link redemption rate 100%
  • Zero ACL permission errors in logs
  • Support tickets < 1% per 100 orders

πŸ†˜ Blockers & Escalation​

If Blocked:​

  1. Check Implementation Plan β€” DPPS_IMPLEMENTATION_PLAN.md
  2. Check Quick Start β€” DPPS_QUICK_START.md
  3. Check Existing Services β€” DigitalFulfillmentService.java for reference
  4. Search Codebase β€” Semantic search for similar patterns
  5. Ask Team β€” Slack #valkyr-dev channel
  6. Escalate β€” @john_mcmahon or @platform-arch

πŸ“‹ Post-Launch (Week 2+)​

Phase 2 Features​

  • Multi-file products (FileZipModule)
  • License key generation (LicenseModule)
  • Shopify payment bridge (RestApiModule)
  • Coupon codes (Discount entity integration)
  • Guest checkout (auto-create Principal)

Phase 3 Features​

  • Subscription products
  • Streaming delivery (HLS/DASH)
  • Webhook notifications (Zapier/Make)
  • Affiliate tracking
  • Analytics dashboard (conversion funnel)

βœ… Definition of Done​

  • All tasks completed above
  • All tests passing (mvn test)
  • Code review approved
  • Documentation merged
  • Deployed to staging
  • 3 internal products live
  • Metrics tracked in Grafana
  • Stakeholder demo completed

Status: Ready to Execute
Estimated Delivery: 2 weeks (40-50 hours)