Skip to content

dvelton/faxmachine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitFax GH-9600

A virtual fax machine that runs entirely on GitHub. Fork this repo to set up your own. Send faxes to anyone else who has one.

Your GitHub username is your fax number. Sending a fax creates an issue on the recipient's repo. The web interface looks and sounds like a 1990s office fax machine.

GitFax GH-9600 — virtual fax machine interface

No servers. No backend. No cost. The entire phone network is GitHub.


Set up your fax machine

Five steps, no coding required.

  1. Fork this repo — click the Fork button at the top of this page

  2. Enable GitHub Pages — in your fork, go to Settings > Pages. Under "Source," select main branch and / (root) directory. Click Save.

  3. Create a GitHub token — go to github.com/settings/tokens/new. Check the public_repo box. Click "Generate token." Copy the token.

  4. Open your fax machine — visit https://YOUR-USERNAME.github.io/faxmachine

  5. Paste your token — the setup screen will ask for it. Your token stays in your browser's local storage and is only used to talk to the GitHub API.

Your fax machine is now online. Your fax number is @your-github-username.


Send a fax

Click SEND on the machine. Enter the recipient's GitHub username, type your message, and hit Send Fax.

Composing a fax with cover sheet

You can send plain text (with Markdown formatting) or switch to the Image tab to fax a picture. Attach a cover sheet if you want the full experience — complete with URGENT, FOR REVIEW, PLEASE COMMENT, PLEASE REPLY, and PLEASE RECYCLE checkboxes.

When you send, the machine dials, plays the full modem handshake screech through your speakers, and shows transmission progress on the LCD. A confirmation slip prints in the paper tray when it's done.


Check your inbox

Click INBOX to see faxes people have sent you. Unread faxes show a blue dot.

Inbox with received faxes

Click any fax to read it. Received faxes render on thermal paper with a fax header showing sender, date, and page number.

Reading a fax on thermal paper


How it works

Fax concept GitHub equivalent
Your fax machine Your faxmachine repo
Your fax number Your GitHub username
Sending a fax Creating an issue on the recipient's repo
Receiving a fax Someone creating an issue on your repo
Delivery confirmation A GitHub Action that comments on the issue
Busy signal Recipient has Issues disabled
Blocking someone Blocking them on GitHub
Fax history Your repo's Issues tab

A GitHub Actions workflow on your repo automatically processes incoming faxes: it labels them, marks them as unread, and posts a delivery confirmation.

Your token never leaves your browser except to make authenticated requests to api.github.com. There is no intermediary server.


Features

The sounds. Full modem handshake audio synthesized in the browser via the Web Audio API. DTMF keypad tones, dial tone, CNG/CED negotiation, the signature screech, and data transmission sounds. Volume control on the machine, or mute it from Settings.

Cover sheets. Attach a cover sheet with TO, FROM, DATE, RE fields and the classic checkbox options. The cover sheet renders in the fax body as a formatted table.

Phonebook. Save frequent contacts in the phone book. Click "Fax" next to any contact to start composing immediately.

Image faxes. Upload an image and fax it. The image is stored in your repo's faxes/outgoing/ directory and referenced in the issue body.

Manual faxing. People can also send you a fax directly through GitHub's issue interface using the "Send a Fax" issue template on your repo, without needing the web UI at all.

Transmission reports. After every send attempt, a confirmation slip prints in the paper tray showing recipient, timestamp, page count, and result (OK or FAILED).


FAQ

Do I need to know how to code? No. Fork, enable Pages, create a token. Everything else happens in the browser.

Can someone spam my fax machine? You have the same controls as any GitHub repo. Block users, restrict who can open issues, or turn off Issues entirely (callers get a busy signal).

Does it actually make the sounds? Yes. Full fax modem handshake synthesized in real time. Through whatever speakers your computer has. The volume buttons work.

What happens if the person I'm faxing doesn't have a faxmachine repo? The recipient field shows a red X and the fax won't send. They need to fork this repo first.

Where are my faxes stored? Received faxes are Issues on your faxmachine repo. Sent faxes are Issues on the recipient's repo. You can see them all in the GitHub Issues tab.

Is my token safe? Your token is stored in your browser's localStorage. It's sent only to api.github.com over HTTPS. No other server ever sees it. You can revoke it from your GitHub settings at any time.

Can I customize the look? The CSS uses custom properties for all colors. Fork the repo and edit the :root variables in style.css to change the machine's color scheme.


The network

Every fork of this repo is a node on the GitFax network. The more people who set up their fax machine, the more people you can fax.

Share your fax number: @your-github-username

@dvelton


License

MIT

About

GitHub-powered virtual fax machine. Fork it. Fax your friends.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors