Open sourceFree to self-host under AGPL-3.0

Stop chasing clients for documents

DocRequest is a client portal you run on your own server. Send a secure link with a checklist, your client uploads from their phone, and you review, accept and download. Every file is scanned, encrypted and deleted on schedule.

Follow one request from start to finish

Click any step. Your view on the left, your client's phone on the right.

Pick a checklist and send one secure link

Choose a template, add the client's name and email, and send. DocRequest emails them a unique link that only opens this one request.

Why not just use email?

Because passports end up sitting in inboxes, files arrive as IMG_4021.jpg, and someone on your team spends their week writing “just following up”. Paid portals fix that, but your clients' documents then live on someone else's servers.

FeatureEmail and WhatsAppHosted portals DocRequest
Documents kept out of inboxes and chats
A checklist that shows what is missing
Reminders sent for you
Files stay on your own server
Photo location data removedVaries
Source code you can check
CostFreeMonthly, per userFree

Follow one file through DocRequest

Security you can see, not a badge in the footer. Step through what happens to a photo of a passport from the moment it is uploaded.

A photo of a passport arrives

Amara takes a photo on her phone. Before anything is saved, DocRequest checks the file's real type from its content, not its name, and its size.

file inspector1 / 6
Name
IMG_4021.HEIC
Type
HEIC image, checked by content
Size
3.4 MB of 20 MB allowed
Camera
iPhone 15hidden in the photo
Location
51.4613° N, 0.1156° Whidden in the photo
Taken
2 Nov 2026, 09:14hidden in the photo
  • Links stored only as hashes

    Even with the database, nobody can rebuild a client link.

  • Codes are rate-limited

    6-digit codes expire in 10 minutes and lock after 5 wrong tries.

  • Workspaces never mix

    Every query is scoped to one business, with Owner, Admin and Staff roles.

  • Append-only audit log

    Views, downloads, decisions and deletions are recorded and cannot be edited.

  • No client details in logs

    The audit log records actions, never names, emails or file names.

Checklists written for your clients

Five ready-made templates, each with plain help text and the file types it accepts. Copy one, change it, or build your own.

New tenant

5 documents, edit any of them per client
  • Passport or driving licence

    A clear photo of the page with your photo on it.

    PDFJPEGPNGHEIC

  • Proof of address

    A utility bill or council tax letter from the last 3 months.

    PDFJPEGPNGHEIC

  • Last 3 payslips

    One file per month is fine.

    PDF

  • Bank statements

    The last 3 months, showing your name and address.

    PDF

  • Employer referenceOptional

    A letter on company headed paper, if you have one.

    PDF

Running in minutes, on your own server

One command starts everything. A small VPS is enough, and there is a Terraform guide if you would rather use AWS.

Web app
Next.js, port 8020
API and worker
NestJS with BullMQ queues
Database
PostgreSQL 18
Queue and cache
Redis
Virus scanner
ClamAV, optional
File storage
Local disk or S3-compatible
$ git clone https://github.com/toukirofficial/docrequest.git
$ cd docrequest && ./scripts/init-env.sh
$ docker compose up -d
✔ docrequest-postgres Started
✔ docrequest-redis Started
✔ docrequest-clamav Started
✔ docrequest-api Started
✔ docrequest-worker Started
✔ docrequest-web Started
✔ Ready on http://localhost:8020

Questions

Something else? Ask on GitHub.

Is it really free?

Yes. DocRequest is open source under the AGPL-3.0 licence. You only pay for the server you run it on.

Do my clients need an account?

No. They get a link that only works for their request, and confirm it is them with a 6-digit code sent to their email.

Where are the files stored?

On your own server's disk, or in any S3-compatible storage you choose. Every file is encrypted before it is saved, whichever you pick.

What if someone uploads a virus?

ClamAV scans every upload. An infected file is deleted before anyone can open it, and the client is asked to upload it again.

How long are files kept?

You decide, per workspace. By default files are deleted 30 days after a request is complete or expires, and client details are anonymised.

Can my whole team use it?

Yes. Invite colleagues as Admins or Staff. Admins manage the team, templates and settings. Staff create and review requests.

What do I need to run it?

Docker on a small Linux server. Or run it directly with Node.js 24, PostgreSQL 18 and Redis.

Your next client request could be the last one you chase

Try the demo with made-up clients, or install it on your own server today.