Intake | Client Onboarding and Document Collection PHP Script With Flutter App

Bluehost Shared Hosting

Stop chasing clients for documents over email

Every agency, accountant and law firm runs the same broken loop: send a list of what you need, get half of it back, chase the rest, lose a version in a reply thread, and start the engagement two weeks late. Intake replaces that loop with one link.

You build a request (a checklist of documents, a short form, a signature if you need one) and send it. Your client opens a page with your logo on your domain, drags their files in, signs, and submits. You get an email. Nothing was attached to anything, and nothing was lost.

One installation, many workspaces

Intake is multi-tenant out of the box. Run it for your own firm on one domain, or run it for twenty firms (each with its own domain, logo, accent color, staff and clients, completely isolated from each other) from a single codebase and a single database. An operator console sits above them all for branding, legal pages, accounts and analytics.

What your client sees

  • A page with your name and colors. The word “Intake” never appears.
  • A checklist that says exactly what is still missing and how many files each item needs.
  • Drag-and-drop upload with a live progress bar, working on a phone.
  • A signature pad, if the request asks for one.
  • No account and no password, unless you want them to have one.

What you get

  • Reusable form templates: build once, apply everywhere. Edits never rewrite a sent request.
  • Document checklists with per-folder minimums, enforced rather than hoped for.
  • Signed PDF certificates: who signed, when, from which IP, with a SHA-256 digest.
  • Automatic reminders before the deadline and after it.
  • Private storage on local disk or any S3-compatible provider, behind signed, short-lived links.
  • A complete activity trail: sent, opened, uploaded, submitted, reviewed, completed.
  • Client portals holding a returning client’s whole document history in one place.

Built properly

Laravel 12, Filament 4, Livewire 3, Tailwind CSS 4. Light and dark mode throughout. 213 automated tests covering tenant isolation, file authorization, the portal flow, panel access boundaries and the signature certificate, including pulling the PKCS#7 blob out of a generated PDF and making OpenSSL agree it is real.

Try it before you buy it

intake.foundrcode.com: the full script, with a workspace of demo clients mid-pipeline.

  • Read-only admin: viewer@northbank.test, at /admin. Every staff screen, nothing editable.
  • Read-only client: viewer@ferreira.test, at /portal. What your client sees when they sign in.

Password for both: 1JhuAmmgICTVUUSUmbqD

Both accounts are read-only on purpose: a public demo whose password is printed on this page stays useful only if no visitor can change it for the next one. Read-only is a flag on the account, not a separate build: it ships with the script, so you can hand a client a look-but-do-not-touch login too.

A companion Android app

Flutter, built against the same installation over a token-authenticated REST API. Clients can answer a request, upload documents and sign from their phone, with the workspace’s own branding.

Try it: open intake.foundrcode.com and use the “Get the Android app” button, then sign in with the demo credentials above.

  • Full source included in mobile/: build it, rebrand it, publish it under your own name.
  • Ships as an APK you host yourself, offered from your own landing page. Set INTAKE_ANDROID_APP_URL and the download appears; leave it empty and it stays hidden.
  • Optional by design: every flow the app covers also works in a mobile browser. Nothing depends on it.
  • The API is part of the script, not a separate purchase, so you can build your own client against it.

Requirements

  • PHP 8.2 or newer, with the standard Laravel extensions
  • MySQL 8, MariaDB 10.6, PostgreSQL 13 or SQLite
  • Composer and Node.js for installation
  • A wildcard DNS record if you want workspaces on subdomains

Third-party services

Intake runs with none of these. A fresh install sends mail to the log, stores files on local disk, and works. Each service below is optional, switched on from the operator console, and can be swapped for an alternative of the same kind.

  • Email: any SMTP server you already have, or PostaLynk’s HTTP API when your host blocks outbound SMTP. Configure either from the console. Leave both blank and mail goes to the log.
  • File storage: local disk by default. Amazon S3, Cloudflare R2, DigitalOcean Spaces and any other S3-compatible endpoint are supported by changing one setting.
  • Push notifications: Firebase Cloud Messaging, for the mobile app. Email notifications cover the same events if you skip it.
  • Live chat: an optional support widget on the marketing site and the client portal. Your support address is shown either way.

You pay for what you use. Every service above is a separate sign-up under your own account, billed directly to you by that provider at their own rates. Amazon S3, PostaLynk, Firebase and any live-chat provider charge you, not us. None of those usage costs are included in the price of this item, and we neither resell them nor take a share. The documentation lists drop-in alternatives for each so you can compare before committing to any of them.

Documentation

A multi-page HTML manual with a sidebar ships in the download, along with a single-file copy and a PDF. It covers installation on shared hosting and on a VPS, every environment variable, branding and reskinning, the scheduler, backups, and a troubleshooting section written from things that actually go wrong.

Support

Six months of support included, through the item’s comments. Bug reports are fixed, not deflected.

0 average based on 0 ratings.

EZMatrix

EZMatrix

Visit Author's Portfolio

View Portfolio
Last Update 2026-10-02
Created 2026-10-02
Sales 0
Discussion Comments
Software Version Flutter 3.x
Files Included Dart YAML JavaScript JSON .java .kotlin .h .storyboard .plist .swift Layered PSD Layered PNG JavaScript JS CSS LESS Sass Stylus PHP HTML
Video Preview Resolution