Personal Fax

Personal Fax

How this was built

Upload a PDF, enter a fax number, and send it. Every fax is saved so you can find it again and resend it later.

The problem

I kept signing up for an online fax service, sending one document, then cancelling before the next month billed. Every one of them wanted a subscription for something I use a few times a year. I own the process now, and I only pay when I actually send something.

What it does

Upload a PDF, enter the fax number, and review it on a confirmation screen before anything sends. Add a cover page if you want one. Once it’s sent, you’ll see delivery confirmed instead of just assuming it went through, and every fax you’ve sent stays in your history so you can look it up or resend it later.

A quick example

You need to fax a signed form to an insurance company or a doctor’s office, somewhere that still hasn’t caught up to email. Instead of paying for a fax app subscription for one document, you send it here for pennies.

Features

  • Send a real fax straight from a PDF.
  • Add a cover page when you need one.
  • Review everything on a confirmation screen, with the cost shown, before anything sends.
  • Get delivery actually confirmed instead of assuming it went through.
  • Every fax stays in your history, so you can look one up or resend it later.

What it's built with

What I usedWhat it does here
Next.jsThe whole app, App Router, rendered and deployed on Vercel.
TelnyxActually sends the fax and reports back whether it was delivered.
WebhooksTelnyx calls back with the delivery result, which is what turns "sent" into "confirmed".
Supabase PostgresKeeps your fax history so you can look one up or resend it.
Plain CSSNo framework. Design tokens are CSS custom properties.
Open Personal Fax