Skip to content

Implement Complete Project Submission Flow with Multi-Step Form & Stepper Component #112

Description

@onlydustapp

Overview

This feature implements the entire project submission journey, from filling out a multi-step form to receiving a success confirmation. It integrates a reusable stepper component with the BoundlessSheet and communicates with the backend API for form submissions. 🚀
Please Ensure your read the issue before applying I have provided the figma file link here as well

Feature Breakdown

1. Reusable Stepper Component (@/stepper)

  • Location: components/stepper/Stepper.tsx
  • Features:
    • Vertical layout with numbered circles (1, 2, 3) connected by dotted lines
    • Three states: pending (grey), active (bright green), and completed (green with white checkmark)
    • Display step titles and descriptions
    • Steps Configurations:
      • Step 1: Initialize - "Submit your project idea to kickstart your campaign journey."
      • Step 2: Validate - "Get admin approval and gather public support through voting."
      • Step 3: Launch Campaign - "Set milestones, activate escrow, and start receiving funds."
    • Ensure a responsive design across mobile, tablet, and desktop

2. Project Submission Form

  • Container: Use @boundless-sheet.tsx to wrap the entire flow
  • Title and Fields:
    • Form title: "Submit your project information"
    • Fields include:
      • Project Title (with box/package icon and placeholder)
      • Project Tagline (with appropriate placeholder)
      • Project Description (textarea with placeholder and a character counter displaying "0/400")
      • Project Category (dropdown select with placeholder and folder/document icon)
      • Fund Amount (text input with "$" icon and placeholder)
      • File Uploads:
        • Whitepaper (formats: PDF, Docs • Max. 20MB with cloud-upload icon and a green "Upload" button)
        • Project Thumbnail (formats: JPEG, JPG, PNG • Max. 5MB with similar design)
      • Add Tags (Optional, with tag icon and placeholder)
    • Submit Button: Grey "Submit for Review" button

3. Success Confirmation Screen

  • Display after successful submission:
    • Title: "Project Submitted!"
    • Large circular green checkmark icon
    • Confirmation message: "Your project has been submitted and is now under admin review. You'll receive an update within 72 hours. Once approved, your project will proceed to public validation."
    • Clickable "Projects page" link
    • Green "Continue" button
    • Update the stepper to show the "Initialize" step as completed

4. API Integration

5. State Management & Flow Control

  • Manage form fields, validation, and file uploads
  • Control stepper state (active, pending, completed)
  • Handle transitions and error states gracefully

Technical Considerations

  • Styling: Utilize shadcn/ui components and Tailwind CSS for consistency
  • Responsiveness: Ensure the entire flow is responsive on mobile, tablet, and desktop
  • Validation: Implement client-side validations for required fields and file constraints
  • Accessibility: Include proper ARIA labels and keyboard navigation
  • Performance: Optimize file uploads and overall form rendering

Acceptance Criteria

  • ✅ The reusable stepper component is created and exported from @/stepper
  • ✅ The project submission form is fully implemented within the BoundlessSheet component
  • ✅ All form fields function with proper validations
  • ✅ File upload components enforce specified format and size constraints
  • ✅ Success confirmation screen displays correctly and updates the stepper state
  • ✅ API integration successfully submits data to the specified endpoint
  • ✅ Loading states and error handling are implemented and user-friendly
  • ✅ The entire flow remains fully responsive across all devices

Files to Create/Modify

  • components/stepper/Stepper.tsx (New reusable stepper component)
  • components/project/ProjectSubmissionForm.tsx (New submission form component)
  • components/project/ProjectSubmissionSuccess.tsx (New success confirmation component)
  • components/project/ProjectSubmissionFlow.tsx (Main flow component integrating form, stepper, and confirmation)
  • Update components/stepper/index.ts to export the new stepper component

Let's ensure this aligns with our design documents in Figma:

Please ensure all components adhere to the Boundless project coding standards as outlined in the README. 😃

Metadata

Metadata

Labels

onlydust-waveContribute to awesome OSS repos during OnlyDust's open source week

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions