Portfolio_Detail
All_Items

I Need To Send a Fax

Tech: Go, Asterisk (T.38), Stripe
Screenshots
Main project screenshot
Project_Details

INeedToSendAFax.com is a production fax-over-IP service I built end to end, from the telecom layer up to the web UI and public API. It lets anyone send a fax to any US/Canada number straight from a web page — with a free tier and a $1.99 paid option — and exposes a self-serve developer API that needs no account, just a prepaid key. Under the hood it's a real fax system, not a wrapper around someone else's API. The service terminates a T.38 SIP trunk through Asterisk's res_fax_spandsp, drives outbound calls over AMI, and reconciles delivery results back into a job queue. Around that I built a Go web app, a document pipeline, billing, email, and abuse controls.

Highlights

  • Real T.38 fax engine — Asterisk + res_fax_spandsp over a T38Fax SIP trunk, driven from Go via AMI, with per-job status reconciliation from Asterisk FAXRESULT events.
  • Document pipeline — accepts PDF, Word (DOC/DOCX), PNG/JPEG, PostScript, and TIFF; converts via Ghostscript, headless LibreOffice, and ImageMagick; merges up to 10 files into one fax; auto-generates branded cover pages.
  • Free + paid tiers — free faxes (3 pages, 2/day, captcha + email confirmation) and $1.99 paid faxes via Stripe Checkout, with automatic refunds on failed delivery.
  • Public JSON API at api.ineedtosendafax.com — prepaid credit keys, no accounts, idempotent submissions, signed webhooks, rate limits, and OpenAPI docs.
  • Reliability engineering — retry with backoff, a channel-aware stale-job reaper that never cuts off long multi-page faxes, late-event guards, and content auto-purge.
  • Ops — in-process Let's Encrypt TLS, systemd services, PostgreSQL, Resend transactional email, an abuse/admin console, and automated tests — all running on a single small VPS. Stack: Go · PostgreSQL · Asterisk (T.38) · AMI · Stripe · Resend · Let's Encrypt (autocert) · Ghostscript · LibreOffice · ImageMagick · systemd · Debian
Like_What_You_See?

I'm available for similar projects. Let's discuss how I can help you achieve your goals.

View My Services