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 used | What it does here |
|---|---|
| Next.js | The whole app, App Router, rendered and deployed on Vercel. |
| Telnyx | Actually sends the fax and reports back whether it was delivered. |
| Webhooks | Telnyx calls back with the delivery result, which is what turns "sent" into "confirmed". |
| Supabase Postgres | Keeps your fax history so you can look one up or resend it. |
| Plain CSS | No framework. Design tokens are CSS custom properties. |