Problem
The project creation flow has a gap between off-chain campaign creation and on-chain campaign deployment. It's unclear when/how the campaign is created on-chain and how the `onChainId` is populated.
Current State
- `CreationFlow` creates campaign via `publishProject()` API
- `onChainId` is passed as optional parameter but source is unclear
- No smart wallet signing visible in the creation flow
- `ProjectFundEscrow.tsx` exists but is unused in the campaign flow
- Escrow address setup timing is ambiguous
Expected Behavior
The creation flow should clearly:
- Step 1: Create campaign off-chain (existing — save draft, details, milestones)
- Step 2: Deploy campaign on-chain via `use-crowdfund-contract.ts`
- Call `createCampaign()` on the registry contract
- Get back `campaignId` and `escrowAddress`
- Show signing UI (wallet interaction)
- Step 3: Link on-chain and off-chain via `PUT /:id/escrow`
- Store `onChainId`, `escrowAddress`, `transactionHash`
- Step 4: Submit for review (on-chain `submit_for_review()` + backend `publishProject()`)
UI Changes
- Add a "Deploy to Blockchain" step in the creation wizard
- Show transaction signing UI
- Show success state with on-chain ID and escrow address
- Handle wallet connection and errors gracefully
Acceptance Criteria
Priority
High — The creation-to-deployment bridge is the most critical gap.
Labels
crowdfunding, blockchain, critical
Problem
The project creation flow has a gap between off-chain campaign creation and on-chain campaign deployment. It's unclear when/how the campaign is created on-chain and how the `onChainId` is populated.
Current State
Expected Behavior
The creation flow should clearly:
UI Changes
Acceptance Criteria
Priority
High — The creation-to-deployment bridge is the most critical gap.
Labels
crowdfunding,blockchain,critical