
This comprehensive tutorial will walk you through building a functional freelance marketplace using Adalo's no-code app builder. With the growing global freelance platforms market and increasing freelance workforce participation, there's never been a better time to launch your own freelance marketplace. You'll learn how to create user profiles, job posting systems, bidding functionality, payment processing, and rating systems—all without writing code.
Prerequisites and Initial Setup
Step 1: Create Your Adalo Account and Choose a Plan
- Visit Adalo.com and sign up for an account
- Start with the Free plan to build and test your app
- For publishing a production marketplace, consider the Professional plan ($65/month billed monthly; ~20% off with annual billing).:
- Custom domain support
- 2 published apps and 25GB storage
- Custom integrations
- Maps/geolocation availability varies by plan, check the current pricing table before positioning it as a Professional-only feature.
- Business plan ($250/month) recommended if you need:
- Multiple published apps
- Unlimited editor seats
- Priority support
Step 2: Create Your Marketplace App
- Click "Create New App" from your dashboard
- Choose “Mobile App” (published to iOS, Android, and the web from one project).
- Name your app (e.g., "FreelanceHub")
- Select "Start from Scratch" to build custom marketplace features
Step 3: Configure Your App Theme
- Choose brand colors:
- Primary color (e.g., blue for trust)
- Secondary color (e.g., green for action buttons)
- Select professional typography
- Click "Continue" to enter the app builder
Building the Database Structure
Step 4: Enhance the Users Collection
Adalo creates a default Users collection. You'll extend it for marketplace functionality:
- Click the Database icon in the left sidebar
- Select "Users" collection
- Add these properties (click "+ Add Property" for each):
- User Type (Text) - Values: "Freelancer", "Client"
- Profile Photo (Image)
- Phone Number (Text)
- Bio (Text - Multiline)
- Skills (Text - for searchable tags)
- Hourly Rate (Number) - for freelancers
- Location (Location)
- City (Text)
- Country (Text)
- Portfolio URL (Text)
- Years Experience (Number)
- Average Rating (Number)
- Total Reviews (Number)
- Member Since (Date & Time - Automatic)
- Account Balance (Number) - for tracking earnings/credits
‍
Learn more about Adalo's database
Step 5: Create the Jobs Collection
‍
- Click "+ Add Collection"
- Name it "Jobs"
- Add these properties:
- Job Title (Text)
- Description (Text - Multiline)
- Category (Text) - Values: "Web Development", "Design", "Writing", "Marketing", "Virtual Assistant"
- Budget Type (Text) - Values: "Fixed Price", "Hourly"
- Budget Amount (Number)
- Required Skills (Text)
- Experience Level (Text) - Values: "Entry", "Intermediate", "Expert"
- Project Duration (Text) - Values: "Less than 1 month", "1-3 months", "3-6 months", "6+ months"
- Status (Text) - Values: "Open", "In Progress", "Completed", "Cancelled"
- Location Preference (Text) - Values: "Remote", "On-site", "Hybrid"
- Proposals Count (Number)
- Posted Date (Date & Time - Automatic)
- Deadline (Date & Time)
Step 6: Create the Proposals Collection
- Click "+ Add Collection"
- Name it "Proposals"
- Add properties:
- Cover Letter (Text - Multiline)
- Proposed Rate (Number)
- Delivery Time (Number) - in days
- Status (Text) - Values: "Pending", "Accepted", "Rejected", "Withdrawn"
- Submitted Date (Date & Time - Automatic)
- Portfolio Samples (Text) - URLs to work samples
Step 7: Create the Contracts Collection
- Click "+ Add Collection"
- Name it "Contracts"
- Add properties:
- Start Date (Date & Time)
- End Date (Date & Time)
- Total Amount (Number)
- Payment Terms (Text)
- Milestones (Text - Multiline)
- Status (Text) - Values: "Active", "Completed", "Disputed", "Cancelled"
- Hours Worked (Number) - for hourly contracts
- Amount Paid (Number)
- Amount Remaining (Number)
Step 8: Create the Reviews Collection
- Click "+ Add Collection"
- Name it "Reviews"
- Add properties:
- Rating (Number) - 1-5 scale
- Communication Rating (Number)
- Quality Rating (Number)
- Professionalism Rating (Number)
- Review Text (Text - Multiline)
- Response (Text - Multiline) - for reviewer to respond
- Created Date (Date & Time - Automatic)
- Would Recommend (True/False)
Step 9: Create the Messages Collection
- Click "+ Add Collection"
- Name it "Messages"
- Add properties:
- Message Text (Text - Multiline)
- Sent Date (Date & Time - Automatic)
- Is Read (True/False)
- Attachment URL (Text) - for file sharing
Step 10: Create the Payments Collection
- Click "+ Add Collection"
- Name it "Payments"
- Add properties:
- Amount (Number)
- Platform Fee (Number) - your marketplace commission
- Freelancer Amount (Number) - amount after fees
- Payment Method (Text)
- Stripe Payment ID (Text)
- Status (Text) - Values: "Pending", "Held for Processing", "Released", "Refunded"
- Payment Date (Date & Time - Automatic)
- Release Date (Date & Time)
Step 11: Set Up Database Relationships
Setting up relational database connections is crucial for marketplace functionality:
- In Jobs collection:
- Add relationship to Users: "Posted By" (A Client can post many Jobs)
- Add relationship to Users: "Assigned To" (One-to-One for hired freelancer)
- In Proposals collection:
- Add relationship to Jobs: Many-to-One (Each job can have many proposals)
- Add relationship to Users: "Freelancer" (Each freelancer can submit many proposals)
- In Contracts collection:
- Add relationship to Jobs: One-to-One
- Add relationship to Users: "Client"
- Add relationship to Users: "Freelancer"
- Add relationship to Proposals: One-to-One (the accepted proposal)
- In Reviews collection:
- Add relationship to Users: "Reviewer" (person giving review)
- Add relationship to Users: "Reviewed" (person receiving review)
- Add relationship to Contracts: Many-to-One
- In Messages collection:
- Add relationship to Users: "Sender"
- Add relationship to Users: "Recipient"
- Add relationship to Jobs: Many-to-One (messages about specific job)
- In Payments collection:
- Add relationship to Contracts: One-to-Many (contracts can have multiple payments/milestones)
- Add relationship to Users: "Client"
- Add relationship to Users: "Freelancer"
Creating User Authentication
Step 12: Build the Welcome Screen
- Rename the default screen to "Welcome"
- Add your marketplace logo (Image component)
- Add headline text: "Connect with skilled freelancers or find your next project"
- Add value proposition points:
- "Secure payments with payment protection"
- "Verified freelancers and clients"
- "Pay only when satisfied"
- Add two buttons:
- "Sign Up" → Link to "Account Type" screen
- "Login" → Link to "Login" screen
Step 13: Create Account Type Selection Screen
- Add new screen "Account Type"
- Add header text: "Join as a client or freelancer"
- Add two large selection cards:
- Client Card: "I'm a client, hiring for a project"
- Freelancer Card: "I'm a freelancer, looking for work"
- Each card button links to separate signup screens
Step 14: Create Client Signup Screen
- Add new screen "Client Signup"
- Add Form component connected to Users:
- Email (required)
- Password (required, minimum 8 characters)
- Full Name (required)
- Company Name (optional)
- Phone Number
- Set User Type to "Client" automatically on form submission
- On successful signup → Link to "Client Onboarding"
Step 15: Create Freelancer Signup Screen
- Add new screen "Freelancer Signup"
- Add Form component connected to Users:
- Email (required)
- Password (required)
- Full Name (required)
- Phone Number
- Set User Type to "Freelancer" automatically
- On successful signup → Link to "Freelancer Profile Setup"
Step 16: Build Freelancer Profile Setup
- Add new screen "Freelancer Profile Setup"
- Add multi-step form to update Logged In User:
- Step 1: Basic Info
- Profile Photo (Image Picker)
- Professional Title
- Hourly Rate
- Location/City
- Step 2: Skills & Experience
- Skills (text input with tags)
- Years of Experience
- Bio/Description
- Portfolio URL
- Step 3: Availability
- Available hours per week
- Timezone
- Step 1: Basic Info
- Submit button → Link to "Freelancer Dashboard"
Step 17: Create Client Onboarding
- Add screen "Client Onboarding"
- Brief profile completion:
- Company name
- Industry
- Location
- Quick tutorial on posting first job
- Button: "Post Your First Job" → Link to "Post Job" screen
Building the Freelancer Interface
Step 18: Create Freelancer Dashboard
‍
- Add new screen "Freelancer Dashboard"
- Add top navigation bar:
- "Browse Jobs" tab
- "My Proposals" tab
- "Active Contracts" tab
- "Messages" tab
- "Profile" icon
- Add stats summary section:
- Total proposals submitted (count)
- Active contracts
- Total earnings this month
- Average rating
- Add "Available Jobs" list (covered in next step)
Step 19: Build Browse Jobs Screen
- Add new screen "Browse Jobs" (or tab on dashboard)
- Add search and filter section:
- Search Input: Search by keywords in title/description
- Dropdown filters:
- Category
- Experience Level
- Budget Range
- Budget Type (Fixed/Hourly)
- Add List of Jobs:
- Filter: Status = "Open"
- Sort by: Posted Date (Newest First)
- Display for each job card:
- Job Title
- Category badge
- Budget and type
- Posted time (e.g., "2 hours ago")
- Number of proposals
- Required skills
- Click on job → Link to "Job Details" screen
Step 20: Create Job Details Screen
- Add new screen "Job Details"
- Display current job information:
- Full job title and description
- Client name and rating
- Budget details
- Project duration
- Required skills
- Experience level needed
- Number of proposals received
- Posted date
- Add "About the Client" section:
- Client's average rating
- Jobs posted
- Hire rate
- Member since
- Add action buttons:
- "Submit Proposal" → Link to "Submit Proposal" screen
- "Save Job" → Add to saved jobs list
Step 21: Build Submit Proposal Screen
- Add new screen "Submit Proposal"
- Add Form connected to Proposals collection:
- Set Job relationship to Current Job
- Set Freelancer to Logged In User
- Cover Letter (Large text area)
- Placeholder: "Explain why you're the best fit..."
- Proposed Rate (Number input)
- Show suggested range based on job budget
- Delivery Time (Number input in days)
- Portfolio Samples (Text input for URLs)
- Show fee breakdown:
- Your proposed rate: $X
- Platform fee (e.g., 10-20%—you can set your own rate): -$Y
- You'll receive: $Z
- Submit button actions:
- Create Proposal record
- Update Job → Proposals Count (+1)
- Send notification to client
- Navigate to "Proposal Submitted" confirmation
Step 22: Create My Proposals Screen
- Add new screen "My Proposals"
- Add tabs for proposal status:
- Active (Pending)
- Accepted
- Rejected
- Add List of Proposals:
- Filter: Freelancer = Logged In User
- Sort by: Submitted Date (Newest)
- Display for each proposal:
- Job title
- Submitted date
- Proposed rate
- Status badge
- Client response (if any)
- Click proposal → View full proposal details
- Add "Withdraw Proposal" button for pending proposals
Building the Client Interface
Step 23: Create Client Dashboard
- Add new screen "Client Dashboard"
- Add navigation tabs:
- "Active Jobs"
- "Posted Jobs"
- "Hired Freelancers"
- "Messages"
- Add quick stats:
- Active jobs
- Total spent this month
- Hired freelancers
- Add prominent "Post a Job" button
Step 24: Build Post Job Screen
- Add new screen "Post Job"
- Add multi-step Form connected to Jobs:
- Step 1: Job Basics
- Job Title
- Category (Dropdown)
- Description (detailed)
- Step 2: Budget & Timeline
- Budget Type (Fixed/Hourly)
- Budget Amount
- Project Duration
- Deadline (optional)
- Step 3: Requirements
- Required Skills (text tags)
- Experience Level
- Location Preference
- Step 1: Job Basics
- Set automatic values:
- Posted By = Logged In User
- Status = "Open"
- Proposals Count = 0
- Submit button actions:
- Create Job record
- Navigate to "Job Posted" confirmation
- Send notifications to matching freelancers
Step 25: Create Job Management Screen
- Add screen "Manage Job"
- Display current job details
- Add List of Proposals for this job:
- Filter: Job = Current Job
- Sort by: Rating (highest first) or Date
- For each proposal, show:
- Freelancer photo and name
- Average rating and reviews count
- Proposed rate and timeline
- Cover letter excerpt
- "View Full Proposal" button
- Add job management options:
- Edit job (if no proposals yet)
- Close job to new proposals
- Delete job (if no proposals)
Step 26: Build Proposal Review Screen
- Add screen "Review Proposal"
- Display full proposal details:
- Complete cover letter
- Proposed rate and delivery time
- Portfolio samples
- Show freelancer profile summary:
- Profile photo
- Professional title
- Average rating
- Completed jobs count
- Success rate
- Skills
- "View Full Profile" link
- Add action buttons:
- "Message Freelancer" → Start conversation
- "Hire Freelancer" → Create contract
- "Decline" → Update proposal status
Step 27: Create Contract Creation Screen
- Add screen "Create Contract"
- Pre-fill with proposal details
- Add Form to create Contract:
- Confirm rate
- Set payment terms (upfront %, on completion %)
- Define milestones (for larger projects)
- Set start date
- Add project specifics
- On submission:
- Create Contract record
- Update Job status to "In Progress"
- Update Proposal status to "Accepted"
- Reject all other proposals for this job
- Send notification to freelancer
- Navigate to "Contract Active" screen
Implementing Messaging
Step 28: Build Messages List Screen
- Add screen "Messages"
- Add List of unique conversations:
- Group Messages by Job
- Filter: Sender = Logged In User OR Recipient = Logged In User
- Show most recent message per conversation
- Display for each conversation:
- Other user's photo and name
- Job title
- Last message preview
- Timestamp
- Unread indicator (if Is Read = False)
- Click conversation → Link to "Chat" screen
Step 29: Create Chat Screen
- Add screen "Chat"
- Add header showing:
- Other user's name and photo
- Job title
- "View Job" link
- Add List of Messages:
- Filter: (Sender = Logged In User AND Recipient = Other User) OR (Sender = Other User AND Recipient = Logged In User)
- Filter by Current Job
- Sort by: Sent Date (Oldest first)
- Style messages:
- Sent messages aligned right
- Received messages aligned left
- Show timestamp
- Show read status
- Add message input at bottom:
- Form connected to Messages
- Text input field
- Send button (creates Message record)
- Auto-refresh messages using countdown timer (every 5 seconds)
Learn about Adalo messaging features
Adding Payment Processing with Stripe
Step 30: Install Stripe Integration
- Visit Adalo Marketplace
- Search for "Stripe" integration
- Click "Install"
- You'll need Stripe API keys (get from Stripe Dashboard)
- Enter your Stripe keys in Adalo settings
Step 31: Create Escrow-Like Payment Screen
- Add screen "Make Payment"
- Display contract details:
- Freelancer name
- Project description
- Total amount
- Payment breakdown
- Add Stripe Payment component:
- Amount: Contract → Total Amount
- Add platform fee calculation (e.g., 10-20% commission—you can set your own rate)
- Client pays full amount
- Funds held for processing (Note: True marketplace split payments require Stripe Connect and may require custom actions or an external backend like Xano)
- Add payment form fields:
- Card number
- Expiry date
- CVC
- Billing zip code
- Save card for future (checkbox)
- On successful payment:
- Create Payment record with Status = "Held for Processing"
- Update Contract status
- Send confirmation to both users
- Navigate to "Payment Successful" screen
Step 32: Build Payment Release Flow
- Add "Release Payment" button on completed contract
- Client clicks to release funds after satisfied with work
- Update Payment:
- Status = "Released"
- Release Date = Current Date/Time
- Calculate Freelancer Amount (Total - Platform Fee)
- Update freelancer's Account Balance
- Send payment release notification
- Prompt client to leave review
Step 33: Create Earnings Dashboard
- Add screen "Earnings" for freelancers
- Display financial summary:
- Available balance
- Pending (in escrow-like hold)
- Total earned (lifetime)
- This month's earnings
- Add List of Payments:
- Filter: Freelancer = Logged In User
- Sort by: Payment Date (Newest)
- Show payment details:
- Client name
- Job title
- Amount received
- Platform fee
- Status
- Date
Building the Rating and Review System
Step 34: Create Leave Review Screen
- Add screen "Leave Review" (shown after contract completion)
- Display project summary
- Add Form connected to Reviews:
- Overall Rating (1-5 stars)
- Communication Rating (1-5 stars)
- Quality Rating (1-5 stars)
- Professionalism Rating (1-5 stars)
- Written Review (text area)
- Would Recommend (Yes/No toggle)
- Set relationships:
- Reviewer = Logged In User
- Reviewed = Other User in contract
- Link to Contract
Step 35: Calculate Average Ratings
According to research, 89% of companies compete primarily on customer experience, making quality ratings critical.
- Create custom action on review submission:
- Count total reviews for user
- Calculate average of Overall Rating
- Update user's Average Rating property
- Update Total Reviews count
- Create similar calculations for:
- Communication Rating average
- Quality Rating average
- Professionalism Rating average
Step 36: Build Reviews Display
- On user profile screens, add List of Reviews:
- Filter: Reviewed = Current User
- Sort by: Created Date (Newest)
- Display for each review:
- Reviewer name and photo
- Star ratings
- Review text
- Project type
- Date
- Response (if any)
- Add "Respond to Review" option for reviewed user
Testing Your App
Step 37: Create Test Data
- Create test accounts:
- 3-4 freelancer profiles with different skills
- 2-3 client accounts
- Post sample jobs across categories
- Submit test proposals
- Create test contracts
- Use Stripe test card numbers for payment testing:
- Success: 4242 4242 4242 4242
- Declined: 4000 0000 0000 0002
Step 38: Test Core User Flows
Test each marketplace journey:
- Freelancer Flow:
- Sign up → Complete profile → Browse jobs → Submit proposal → Get hired → Complete work → Receive payment → Get reviewed
- Client Flow:
- Sign up → Post job → Review proposals → Hire freelancer → Fund payment → Approve work → Release payment → Leave review
- Messaging Flow:
- Start conversation → Exchange messages → Share files → Receive notifications
- Search & Filter:
- Search by keywords → Filter by category → Filter by budget → Sort results
Step 39: Preview and Debug
- Use Adalo's web previewer for desktop testing
- Download the Adalo Previewer app from the App Store or Google Play for iOS/Android testing
- Check all conditional logic and calculations
- Verify database relationships work correctly
- Test notification triggers
- Validate form inputs and error messages
Publishing Your Marketplace
Step 40: Prepare for Launch
With no-code platforms enabling significantly faster development, you can launch your MVP in weeks rather than months.
- Set up production Stripe account
- Configure push notification certificates
- Add essential legal pages:
- Terms of Service
- Privacy Policy
- Commission fee disclosure
- Set up customer support (email, chat)
- Create onboarding tutorial
- Test all payment flows thoroughly
Step 41: Publish to Web
‍
- In Adalo, click "Publish"
- Choose "Web App"
- Select custom domain (requires Starter plan or higher)
- Configure domain DNS settings
- Publish and test live site
Learn about publishing web apps
Step 42: Publish to App Stores
- For iOS:
- Purchase Apple Developer account ($99/year)
- Prepare app icons and screenshots
- Submit through Adalo's publishing flow
- Wait for App Store review
- For Android:
- Purchase Google Play Developer account ($25 one-time)
- Prepare app assets
- Submit through Adalo
- Publish to Google Play
Guide to iOS publishing | Guide to Android publishing
Solving the Marketplace Chicken-and-Egg Problem
One critical challenge all marketplaces face: buyers won't join without sellers, and sellers won't join without buyers. Here's how to address this:
Step 43: Launch Strategy
- Start with supply side first:
- Recruit 20-30 freelancers before opening to clients
- Offer incentives (zero fees for first 3 months)
- Focus on one niche category initially
- Bring your own demand:
- Ask early freelancers to invite existing clients
- Offer discounts for clients they bring
- Create referral bonuses
- Provide standalone value:
- Offer free portfolio hosting for freelancers
- Provide project management tools
- Create educational content
Research shows that focusing on micro-niches helps build critical mass faster than competing broadly.
Why Build Your Freelance Marketplace with Adalo
Adalo stands out as the optimal platform for building a freelance marketplace for several compelling reasons:
True Cross-Platform Development Unlike competitors like Softr (web-only), Sharetribe Go (template-based), or Sharetribe Flex (API-first with deep customization but no native mobile), Adalo lets you publish to iOS, Android, and web from a single build. This means your freelancers and clients can access your platform however they prefer.
Built-In Relational Database Adalo's native database handles complex marketplace relationships without requiring external tools like Airtable or Xano for your MVP. You can create sophisticated connections between users, jobs, proposals, and payments all within Adalo, then scale to Xano integration when you need advanced capabilities.
Rapid Development Without Compromise With 70% of new enterprise applications projected to use no-code/low-code by 2025, Adalo positions you at the forefront of this movement. Build your MVP in 8-15 weeks instead of 6-9 months with traditional development, at a fraction of the cost.
Enterprise-Grade Features for Growing Marketplaces As your platform scales, Adalo provides:
- High app uptime for reliability
- Enterprise-grade data security
- Custom API integrations through custom actions
- Zapier integration for workflow automation
- Payment processing via Stripe
Cost-Effective Scaling Start free, upgrade to Professional ($65/month billed monthly; ~20% off with annual billing) when ready to launch, and scale to Business ($250/month) only when needed.
Proven Track Record Adalo has demonstrated its capability to support successful marketplace platforms at scale.
For entrepreneurs targeting the growing freelance marketplace opportunity, Adalo provides the fastest path from concept to revenue-generating platform.










