Submit Your Construct
Use the SDK to validate and publish your Construct. Once approved, you'll start earning from every stream.
Before You Submit
Make sure your Construct passes all validation checks:
$ npx @useworkapp/construct-sdk validate Validating construct... ✓ construct.json is valid ✓ src/App.tsx exports default component ✓ Uses approved shadcn/ui components only ✓ Uses IndexedDB via useConstructData hook ✓ No external API calls detected ✓ Responsive design patterns found ✓ Accessibility attributes present All checks passed! Ready to publish.
Publish with the SDK
The SDK handles validation and submission in one command:
$ npx @useworkapp/construct-sdk publish Validating construct... ✓ All checks passed Publishing "My Expense Tracker"... ✓ Bundled for production ✓ Uploaded to Work platform ✓ Submitted for review Your Construct has been submitted! Track status at: https://usework.app/app/runner/constructs/abc123
What gets submitted:
- • construct.json - Title, description, and intent tags
- • Bundled code - Your app optimized for production
- • Preview build - For reviewers to test
Configure construct.json
Make sure your construct.json has good metadata for discoverability:
{
"name": "expense-tracker",
"title": "Expense Tracker",
"description": "Track and categorize business expenses with receipt logging",
"version": "1.0.0",
"intent_tags": {
"app_types": ["tracker", "form"],
"domains": ["finance", "accounting"],
"keywords": ["expenses", "receipts", "business", "tax"]
}
}Title: Clear, descriptive name (e.g., "Expense Tracker")
Description: What it does and who it's for
App Types: tracker, dashboard, form, calculator, etc.
Domains: finance, productivity, hr, sales, etc.
Keywords: Specific terms users might search
Review Process
| Status | Meaning | Typical Duration |
|---|---|---|
| Submitted | In review queue | 24-48 hours |
| Approved | Passed review, pending deployment | < 1 hour |
| Live | Available for users to stream | - |
| Rejected | Needs changes before approval | - |
What We Check
Our review team checks for:
- • Technical requirements: Follows all Construct standards
- • Functionality: Works as described, no bugs
- • Accessibility: Meets WCAG AA standards
- • Quality: Good UX, polished design
- • Originality: Not a duplicate of existing Construct
- • Usefulness: Solves a real business need
Common Rejection Reasons
Missing aria-labels on icon buttons
Fix: Add aria-label to all icon-only buttons
Uses fetch() or external APIs
Fix: Use useConstructData for persistence only
Inline styles instead of Tailwind
Fix: Replace style={{}} with Tailwind classes
Missing data persistence
Fix: Use useConstructData hook for state that should persist
Not responsive on mobile
Fix: Add sm: breakpoints, test on mobile
Uses unsupported components
Fix: Stick to approved shadcn/ui components
Revenue & Payments
Once your Construct is live, you earn from every stream:
| Runner Type | Revenue Share |
|---|---|
| Founders Protocol (first 50) | 80% |
| Founders Protocol (51-100) | 75% |
| Standard Runners | 60% |
Payment Details
- • Earnings tracked in real-time in Runner Studio
- • Payouts processed monthly via Stripe
- • Minimum payout threshold: $25
- • Set up payment method in Runner Studio → Payouts
Founders Protocol
First 50 Runners get 80% lifetime revenue share, Runners 51-100 get 75%. All Founders get priority payouts + free premium. The Founder badge is awarded after your first Construct is approved.