DEV3 Technologies home

DEV3 Lessonpier – Tutor Marketplace Laravel Script with Live Lessons, Gemini AI admin tools, Packages & Flutter App

Tutor marketplace on Laravel 12 and Filament 4 with Gemini AI admin tools (bring your own key): time-zone booking, trial lessons, packages, Jitsi lesson rooms, guardians, held payments and payouts. Web installer and demo data included. Flutter app source included.
by DEV3 TechnologiesVerified Author(0) 0 sales 0 viewsUpdated 14 Nov 2026

Video tour. Pick a section below to browse 62 screenshots in 8 sections.

App & phone tours

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

  • Mobile web0:20
  • Learn app app1:27

Lessonpier is the software for running your own tutoring marketplace. Tutors apply and are verified by hand, students and parents find them in a directory and book in their own time zone, lessons run in an embedded Jitsi room, and the operator holds each payment until the lesson has happened, then releases it to the tutor and pays out weekly. It is built by DEV3 Technologies on Laravel 12 and Filament 4, with one Flutter app (student and tutor modes) whose source is included.

What it does

  • Tutor directory and profiles. Filters for subject, level, language, lesson length, price and rating, with times shown in the student's own time zone. Verified tutors, reviews, a trial lesson and package prices on every profile.
  • Time-zone-correct booking. Tutors set weekly hours in their own zone; slots are built in 15-minute steps and shown in the viewer's clock, with a notice when a clock change falls before a lesson. A slot is held for ten minutes while the student pays, so two students never take the same time.
  • Trial lessons, single lessons, packages and group classes. Package credits are counted in half-credit steps, expire on a date you set, and are refunded pro rata. Group classes have seats, a per-seat price and a minimum that decides go or no-go before the start.
  • Cancellation and no-show rules. A student cancelling early gets the credit or the money back; late cancellations follow your policy, and the screen shows the exact refund before the student confirms. A tutor no-show refunds in full and counts a strike.
  • Live lesson room. An embedded Jitsi room opened with a one-time signed link, with a join window, presence tracking, masked chat, shared notes with versions, a shelf of files and a timer. Your own Jitsi server does the video; the demo uses a simulated room.
  • Homework and progress. Tutors assign work, students submit text or a photo, and feedback lands in one list.
  • Guardians and safety. Under-age students need a guardian account with consent. Guardians see lessons, notes and messages; tutors cannot start a thread with a minor. Phone numbers, emails and handles in chat are masked and sent to a review queue.
  • Held payments, releases and payouts. The operator is merchant of record. Each lesson's money is held, auto-released after a delay, split by commission tiers, and paid out in a weekly batch with a holding period. Disputes carry evidence and the operator rules refund, release or split.
  • Operator panel. Dashboard, tutor applications and documents, lessons, orders, held funds, earnings, payouts, disputes, flagged messages, reviews, FX rates, reports, a lesson calendar and settings.
  • API and app. A key-based REST API with an OpenAPI document, plus the app API used by the Flutter app.

The Flutter app

The learn app (apps/learn) is one login with a student mode and a tutor mode. Students find tutors, book a time, see lessons with a countdown and a Join button, use credits, hand in homework and message tutors; a guardian uses student mode with a children switcher. Tutors see their schedule in their own zone, edit weekly availability, check earnings and students. It starts in demo mode and has a store-publishing guide in docs/STORE-PUBLISHING.md.

Gemini AI admin tools

Optional, bring your own key: add your own Gemini key after purchase (Google bills your account); with no key the AI buttons say "Add your Gemini key in Settings". Every result is a draft you preview and edit; nothing is saved, released, refunded or sent automatically.

  • Tutor desk: rewrite a bio (applied only after you confirm), flag risks, suggest a decision on a document from its metadata, and next-best-action hints.
  • Lessons and students: summarise lesson notes, next-best-action hints, and "Ask in plain words" filters on the lessons and payouts lists.
  • Money: flag risks on orders, held funds, payout batches and blocks, explain an earning, a payout batch or a commission tier, and flag an implausible FX rate.
  • Disputes and safety: summarise a dispute, suggest an outcome for a human to decide, draft a note to the parties, triage flagged messages and user reports, and draft replies.
  • Reviews and catalogue: check a review for toxicity, draft a tutor reply, and write subject and level descriptions.
  • Reports: explain the dashboard numbers, a report or the week.
  • A Google Translate language switcher (20 languages) in the public header, the member header and the admin bar.

Names, emails, phone numbers and birth dates are replaced before any call, text that involves a minor is withheld entirely, and no card or bank detail ever leaves your server. You remain responsible for your own privacy notices and your agreement with Google.

Quality checks

The release passed seven gates on the final code: Larastan level 6 with 0 errors, a Pest suite of 506 tests, a build with a 6 KB page budget and no 3D, migrations and the full demo seed on MySQL 8 and SQLite, a headless smoke test over 85 pages plus 43 MySQL race checks (same slot, last group seat, one trial per student, one credit, dispute against the release job, parallel cancellations, payout batches, presence), the web installer driven from the zip, and a secret scan. A consistency command (lessonpier:check) proves credit balances, held funds, releases, earnings, payouts and presence totals agree on the demo data. The Flutter app passed analysis, 36 tests and simulator builds, and ran once against the live API.

What you should know before buying

  • You operate the marketplace and are merchant of record. Lesson payments are held and released to tutors after the lesson, then paid out. Payments, escrow and payouts are simulated until you connect a marketplace-capable gateway. This is not a licensed escrow service.
  • No video is hosted by the script. Live lessons use Jitsi Meet embedded in the lesson room: your own Jitsi server, or meet.jit.si for testing under its terms. Recording is off by default.
  • Contact masking is a heuristic filter, not a guarantee. Background checks are a manual document field; there is no background-check service.
  • No AI tutor and no AI matching. Search is filters and plain ranking rules; the AI tools above are for the operator desk only.
  • Currencies. A tutor's price in USD, EUR or GBP is converted for display and charge from an FX table you maintain.
  • One Flutter app (student and tutor modes) with source and a store-publishing guide. Building, publishing and store approval are your step; the app was verified in simulator builds, automated tests and against the live API, not on a physical device.
  • Use MySQL or MariaDB for a live site; the concurrency checks were run on MySQL 8. One cron entry every minute is required.

Included

Source code, the web installer, the Flutter app source with a store-publishing guide, a buyer guide, demo data for a fictional marketplace (260 tutors, 3,400 students, about 24,000 lessons, about 23,000 orders and about 10,800 reviews) and six months of support.

How it's built

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

The engineering behind Lessonpier: slots that survive daylight-saving changes, a half-credit ledger, held payments that release exactly once, a one-time join token and a consistency command over about 24,000 demo lessons.

The problem it solves

A tutoring marketplace fails in small ways that cost trust: two students taking the same hour, a lesson at the wrong time after a clock change, a package credit used twice, a payment released and refunded at once, a minor messaged by a stranger, or a lesson room opened by someone who should not be in it. Each case must end with one winner, correct money and a record of who did what.

Architecture and approach

Lessonpier is a Laravel 12 application with a Filament 4 operator panel, member areas for tutors and students, a lesson room, a public site and an app API used by one Flutter app whose displayed money maths is checked against the same test vectors as the server. Tutors store weekly hours in their own time zone; a nightly job builds 15-minute UTC slots eight weeks ahead and every view converts to the viewer's clock, with tests for daylight-saving gaps and overlaps. A slot hold locks the slot row and lasts ten minutes. Package credits live in a ledger counted in half-credit units, consumed in order of expiry. Each lesson's payment becomes one held-funds row, and every outcome (release, refund, dispute split) is a single-winner state flip, so a dispute and the release job cannot both win. Money is held in integer minor units with commission tiers by lifetime released amount. The lesson room admits a browser with a one-time signed token, a second device waits for the tutor to admit it, and presence beats add up to the attendance total. Every route is checked so an outsider gets a 404, never a 403.

Quality gates and results

The release passed seven gates, including a headless smoke test over 85 pages and 43 MySQL race checks for the same slot, the last group seat, one trial per student, one credit, a dispute against the release job, parallel cancellations, payout batches and presence. The consistency command passes on the demo data: 260 tutors, 3,400 students and about 24,000 lessons with their orders, releases, earnings and payouts.

Tech stack

Area Technologies
Application Laravel 12, Filament 4, Blade, REST API
Data MySQL 8, SQLite
Frontend Tailwind CSS 4, Vite
Mobile Flutter
Quality Pest, Larastan level 6, Playwright

Inside the build

Your own tutoring marketplace: tutors, trial lessons, packages and live lesson rooms, with a desk lamp over an open notebook. Your own tutoring marketplace — tutors, trial lessons, packages and live lesson rooms, with a desk lamp over an open notebook.

Everything inside: timezone booking, trial lessons, packages, a live room, homework, guardians and held payments. Everything inside — timezone booking, trial lessons, packages, a live room, homework, guardians and held payments.

Guides & articles

Practical guides and engineering write-ups for DEV3 Lessonpier.

Tutoring marketplace software: 7 things to check before you pick one

Last updated
Tutoring marketplace software: 7 things to check before you pick one: DEV3 Lessonpier

Students want a tutor in their own time zone, a lesson that starts on time and a payment that is safe. Operators want trustworthy tutors, parents who can see what is going on and money that releases once and correctly. Here are seven things to check before you pick tutoring marketplace software, with DEV3 Lessonpier as the worked example.

The Lessonpier home page

1. Does it show times in the student's own clock?

Tutors set weekly hours in their own zone, slots are built in UTC and every page converts them, with a notice when a clock change falls before a lesson.

The tutor directory in New York time

2. Can a slot be taken twice?

A slot should be held for a few minutes while the student pays, so two people never book the same hour.

Picking a time

3. Are packages and cancellations clear?

Package credits, expiry and the refund for each cancellation window should be shown before the student confirms.

A lesson with its cancellation preview

4. Where does the video run?

Hosting video is a big cost. Lessonpier embeds Jitsi, so you use your own server, and the room opens with a one-time link.

The lesson room

5. Is it safe for under-18s?

Guardian accounts with consent, masked contact details in chat and no tutor-started threads with minors.

Guardian view of children

6. Is the money held and released once?

Each lesson's payment is held, released after a delay, split by commission tier and paid out weekly, with disputes ruled by the operator.

Tutor earnings

Operator disputes

7. Are the limits honest?

Lessonpier is not a licensed escrow service: you are merchant of record and payments are simulated until you connect a gateway. No video is hosted, contact masking is a heuristic, and the Flutter app was verified in simulator builds and tests, not on a physical device. Optional Gemini AI admin tools run only with your own key and only produce drafts. Say all of that plainly to your buyers.

The learn app home

Video: The Lessonpier tour

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