DEV3 Technologies home

DEV3 Mileroost – Freelance Marketplace Laravel Script with Escrow Milestones, Hourly Billing & Flutter App

A freelance marketplace script on Laravel 12 and Filament 4: projects and proposals with bid credits, fixed contracts with funded milestones, hourly timesheets, gig packages, disputes, fee tiers and payouts. Web installer and demo data included. Flutter app source included.
by DEV3 TechnologiesVerified Author(0) 0 sales 0 viewsUpdated 13 Nov 2026

Video tour. Pick a section below to browse 52 screenshots in 7 sections.

App & phone tours

Tap play to watch each app. Nothing downloads until you do.

  • Mobile web0:26
  • Work app1:52

Mileroost is a freelance marketplace you operate, built by DEV3 Technologies on Laravel 12 and Filament 4, with one Flutter app that switches between client and freelancer modes. Clients post projects or buy gigs, freelancers send proposals with bid credits, and the money for each milestone is held in your platform's escrow wallet until the work is approved. Your staff run disputes, payouts and trust and safety from the operator panel.

What it does

  • Projects and proposals. Clients post fixed-price or hourly projects with skills, budget and screening questions. Freelancers send proposals that cost bid credits (called roosts), can boost a proposal, and see a fee estimate before they send. Clients shortlist, compare up to three proposals side by side and hire.
  • Escrow milestones. A fixed contract is split into milestones. The client funds one, the freelancer submits work, and the client approves, asks for changes (with a revision limit) or opens a dispute. If the client stays silent, the milestone releases itself after the number of days you set. Every transition is idempotent and journalled.
  • Hourly contracts. Freelancers log time with a timer or manual entries under a weekly cap. The week closes in the client's timezone, the client reviews it, can dispute single days, and the invoice is charged and released.
  • Gigs. Freelancers sell fixed packages (basic, standard, premium) with delivery days and revisions.
  • Disputes. Both sides add evidence to a hash-chained timeline. Your staff rule with a split preview: release, refund or any percentage, and the ruling posts to the escrow wallet in one step.
  • Fee tiers. A service fee by lifetime billings per client and freelancer pair, applied marginally across bands, plus an optional client fee. Everything you can change sits in Settings.
  • Payouts and KYC. Earnings mature after a holding period, freelancers request payouts, finance builds a weekly batch and marks it processed. ID and address documents are reviewed by hand before the first payout.
  • Reviews and messages. Double-blind reviews after a contract ends, one message thread per contract with attachments and a meeting-link field.
  • Operator panel. Users, projects, contracts, an escrow board with ageing and an auto-release queue, disputes, payments and refunds, payout batches, KYC queue, reports, catalogue, fee tiers and roost packs. Roles for owner, trust and safety, finance and support.
  • The Roost Ladder. A dashboard strip showing how milestones climb from waiting for funding, through funded and submitted, to approved and released.
  • Flutter app. One app for both modes: post a project, compare proposals, hire, fund a milestone, review work, run a timer, submit work, request a payout, message, dispute and review. Demo mode works without a server, and the source is included.

Install and demo data

A web installer checks the server, writes the configuration, migrates and loads demo data or an empty install, then creates the operator account. The demo is a fictional marketplace with about 9,000 users, 16,000 projects, 190,000 proposals and 7,500 contracts. Every demo password is password. Node.js is not needed because compiled assets are included.

Good to know before you buy

  • You are the merchant of record. Client funds for milestones are held in your platform's escrow wallet and released to freelancers' earnings. Payments and payouts are simulated until you connect a gateway that supports marketplaces. This is not a licensed escrow service: you are responsible for payment and money-transmission licensing where you operate.
  • Disputes are decided by your staff from an evidence timeline. There is no appeal and no arbitration service in 1.0.
  • Hourly work uses timesheets (manual entries and a timer). There is no screenshot or activity monitoring. Automatic hourly charging works with the simulated gateway only; real gateways use the client's hosted checkout.
  • KYC is manual document review. There is no identity-verification API.
  • No video calls. Contracts carry a meeting-link field. No AI matching, proposal writing or dispute decisions.
  • One marketplace currency, with display conversion only. Roost packs are bought on the web; the app shows balances.
  • One Flutter app (client and freelancer modes) with source. Store publishing is your step, and a guide is included.
  • A cron entry is required (schedule:run every minute) for auto-release, weekly billing, maturity and reminders.
  • No hosted demo. The brands, people and places in the screenshots are fictional.

Quality checks

Mileroost 1.0.0 passed the seven release gates of the DEV3 Laravel suite on the final code: static analysis (Larastan level 6), the Pest suite (322 tests, 75 of them money vectors), a front-end size budget, migrations and seeding on MySQL 8 and SQLite, a headless-browser pass over 60 pages with full happy paths and a dispute path, MySQL race checks (double release, dispute against release, double fund, payout requests, last roosts and weekly caps), an installer test from the package and a secret scan. The app passed 263 Flutter tests, including the same money vectors and a run against the live backend. A review of the escrow, fee and dispute logic found sixteen issues, all fixed before release.

How it's built

Architecture, stack, key decisions and the quality gates DEV3 Mileroost passed before release.

The engineering behind Mileroost: milestone escrow under row locks with idempotent journals, marginal fee tiers per client and freelancer pair, weekly hourly billing in the client's timezone and hash-chained dispute evidence.

The problem it solves

A freelance marketplace holds other people's money. Approve and auto-release must not both pay out, a dispute must freeze a milestone the moment it opens, a fee band must be applied the same way every time, and a client must never see another client's contract.

Architecture and approach

Mileroost is a Laravel 12 application with a Filament 4 operator panel, server-rendered client and freelancer areas, a JSON API and a Flutter app. It builds on the shared DEV3 core for wallets, settings, roles, files and audit.

Escrow under locks

Every milestone transition takes the milestone row lock, then the escrow sub-ledger, and writes one journal entry with an idempotency key. A retry posts nothing twice, and a nightly check proves that held money equals funded minus released minus refunded for every milestone.

Fees by band

The service fee follows lifetime billings for a client and freelancer pair. A release that crosses a threshold is split across bands like income tax, and the tiers in force are snapshotted into the hashed contract terms.

Hourly weeks in the client's timezone

Weeks run Monday to Sunday in the client's timezone, including across daylight saving changes. Caps are enforced when an entry is written, and disputed days move to their own invoice.

Disputes with a hash chain

Evidence entries are chained by hash, so staff can verify that nothing was edited. A ruling applies its split to the disputed amount only and posts to the wallet in one transaction.

Party isolation that fails closed

A generated test walks every web, API and app route with a third account and expects 404, and a new route fails the test until it is classified.

Quality gates and results

Mileroost 1.0.0 passed the seven release gates on the final code, including Larastan level 6, 322 Pest tests with 75 money vectors, a headless-browser pass over 60 pages and MySQL race checks. The app passed 263 tests. A review of the escrow, fee and dispute logic found sixteen issues, all fixed. The demo seed holds 16,000 projects, 190,000 proposals and 7,500 contracts and reconciles to the cent.

Tech stack

Area Technologies
Application Laravel 12, Filament 4, Blade, REST API
Work app Flutter, Demo mode, Client and freelancer modes, Fee maths on device
Money Escrow wallet, Row-lock journals, Marginal fee tiers, Simulated gateway
Trust Hash-chained evidence, Party isolation, SSRF-safe HTTP client
Quality Pest, Larastan level 6, Headless browser smoke, MySQL race checks, Installer test

Inside the build

Hire, fund, deliver, release: the marketing home with the milestone path over a desk and laptop. Hire, fund, deliver, release — the marketing home with the milestone path over a desk and laptop.

Everything inside: proposals with roosts, escrow milestones, hourly timesheets, gigs, disputes and fee tiers. Everything inside — proposals with roosts, escrow milestones, hourly timesheets, gigs, disputes and fee tiers.

Guides & articles

Practical guides and engineering write-ups for DEV3 Mileroost.

Freelance marketplace software: 7 things to check before you launch one

Last updated
Freelance marketplace software: 7 things to check before you launch one: DEV3 Mileroost

Launching a freelance marketplace is easy; getting clients to fund work and freelancers to stay is the hard part. Here are seven things to check before you launch one, with DEV3 Mileroost as the worked example.

Video tour — a client hires and funds a milestone, a freelancer logs hours and requests a payout, staff rule on a dispute

Mileroost home page: hire, fund, deliver, release

1. How do freelancers find work, and what does it cost them?

Many marketplaces limit proposals with bid credits. Decide the price per proposal, whether a proposal can be boosted, and when credits come back (for example when a project closes without a hire). Mileroost calls them roosts and refunds them by rule.

The proposal composer with roost cost, boost and fee estimate

2. Can clients compare proposals quickly?

A client with fourteen proposals needs a shortlist and a side-by-side view, not a long list.

Proposals compared side by side before hiring

3. How is the money held?

Split fixed work into milestones, hold each one when the client funds it, and release it on approval or after a silent period. Two actions must never both pay out, so every step needs a lock and an idempotent ledger entry. Be clear that you are the merchant of record and that this is not a licensed escrow service.

A milestone board: fund, submit, approve, request changes, open a dispute

The operator escrow board with ageing and the auto-release queue

4. How do you bill hourly work fairly?

Use a weekly timesheet with a cap, a review window for the client and a way to dispute single days. Mileroost closes weeks in the client's timezone and moves disputed hours to their own invoice.

A weekly timesheet with a disputed day

5. Who decides a dispute?

Collect evidence in one timeline that nobody can edit afterwards, and give staff a ruling form that shows the split before it is applied.

Dispute evidence timeline

The operator dispute queue

6. How do you earn, and when are people paid?

Fee tiers by lifetime billings reward long relationships. A holding period protects against chargebacks, and a weekly payout batch keeps finance work predictable.

Freelancer earnings with pending and available balances

Payout batches for finance

7. Is there an app?

Most freelancers and clients check progress on a phone. One app with a client and a freelancer mode keeps the code and the store listing simple.

Find work on a phone

What you get

Mileroost is a Laravel 12 and Filament 4 freelance marketplace with a web installer, demo data, an API and a Flutter app. Payments and payouts are simulated until you connect a gateway, you are responsible for payment licensing where you operate, and disputes are decided by your own staff.

Frequently asked questions

The complete source code (version 1.0.0) as a download from your account, with the setup and usage guides shown on this page. You can modify the code to suit your product.

Buying guides: Laravel scripts with Filament panels and a web installer · Next.js or Laravel for a SaaS script?

Questions about this product (0)

Answers from the DEV3 team and the community.

Ask a question

No questions yet.

Wondering about setup, licensing or customisation? Ask, and the DEV3 team will help.

More from this author

View all

Related in Web Scripts & Software

View all