# DFTZ BBS — Credits & References

## Project
- **DFTZ BBS** — Don't Feed The Zombies
- **Author** — Nathan Brewer ([brewersystems.com](https://brewersystems.com), [github.com/nathanabrewer](https://github.com/nathanabrewer))
- **Built with** — Claude Code (Anthropic)

---

## BBS Heritage
The DFTZ BBS interface is inspired by 1990s bulletin board systems, particularly:
- **Wildcat! BBS** — Mustang Software (commercial BBS platform)
- **Renegade BBS** — ANSI art and lightbar menus
- **WWIV BBS** — Numbered menu systems
- **PCBoard** — Command-line style navigation
- IBM VGA text mode aesthetics and ANSI color palette

## Fonts
- **IBM VGA 8x16** — [viler-int10h/vga-text-mode-fonts](https://github.com/viler-int10h/vga-text-mode-fonts) (MIT License)
  - Authentic DOS-era VGA font served via jsDelivr CDN

---

## Blockchain / Smart Contracts
- **Solidity** — Smart contract language ([soliditylang.org](https://soliditylang.org))
- **OpenZeppelin Contracts** — [github.com/OpenZeppelin/openzeppelin-contracts](https://github.com/OpenZeppelin/openzeppelin-contracts) (MIT License)
  - IERC20 interface used in DFTZBBS.sol
- **ethers.js v6** — [github.com/ethers-io/ethers.js](https://github.com/ethers-io/ethers.js) (MIT License)
  - Browser wallet connection, contract interaction, event queries
  - Loaded from [esm.sh](https://esm.sh)
- **Base** — [base.org](https://base.org) (Coinbase L2)
  - Base Sepolia testnet for contract deployment
- **EIP-4844 / Dencun** — Ethereum blob transactions that make L2 data posting affordable

### Contract
- **DFTZBBS.sol** — On-chain BBS contract (registration, wall posts, direct messages, welcome gifts)
- **DFTZToken** — ERC20 community credit token (originally from [notflix_protocol](https://github.com/nathanabrewer/notflix_protocol))

---

## FT8 Codec
- **ft8ts** — [github.com/e04/ft8ts](https://github.com/e04/ft8ts) (GPL-3.0)
  - Pure TypeScript FT8/FT4 encoder and decoder
  - Ported from WSJT-X v2.7.0 Fortran source
  - Used for FT8 signal decoding in the JS8 Station door game
  - npm: `@e04/ft8ts`

- **WSJT-X** — [wsjt.sourceforge.io](https://wsjt.sourceforge.io) (GPL-3.0)
  - Original FT8/FT4 implementation by Joe Taylor (K1JT) et al.
  - The (174,91) LDPC code and signal processing algorithms that ft8ts is based on

- **ft8_lib** — [github.com/kgoba/ft8_lib](https://github.com/kgoba/ft8_lib) (MIT License)
  - Karlis Goba (YL3JG) — Lightweight C implementation of FT8
  - The foundational library that many browser FT8 projects build on

---

## JS8 Codec
- **JS8Call** — [github.com/js8call/js8call](https://github.com/js8call/js8call) (GPL-3.0)
  - Jordan Sherer (KN4CRD) — JS8Call application and protocol.
  - Source of the (174,87) LDPC code, CRC-12 framing, Costas arrays, synchronization, and message transport.
- **IQ Hub JS8 browser adapter** — [github.com/lxe/iqhub](https://github.com/lxe/iqhub) (project MIT; vendored JS8 core GPL-3.0)
  - Receive-capable browser build derived from JS8Call-improved 3.0.3.
  - Replaces FFTW with the BSD-licensed KISS FFT adapter and runs as single-file WASM.
  - Original adapter source, build script, upstream notice, and GPL license are retained under `js/vendor/js8/` and `scripts/build-js8-wasm.sh`.

### DFTZ JS8 Bench
The main-site bench uses the upstream-derived WASM modem rather than the earlier experimental JavaScript correlation decoder. It provides:

- JS8 Normal-mode encode of an exact 12-symbol transport frame to 79 tones.
- Continuous-phase 12 kHz audio synthesis, playback, and WAV export.
- Audio-file and 15-second microphone capture with browser resampling to 12 kHz mono.
- Upstream synchronization, LDPC(174,87), and CRC-12 validation before a frame is displayed.
- Interpretation of heartbeat, compound, and directed transport frames.
- A checked compatibility vector that resolves `SJWkJnSNwzqH` / type 3 to `KD8SKZ → KN4CRD · HEARTBEAT SNR -14`.
- An unmodified upstream JS8Call `A_1_4.wav` fixture test that independently recovers all four expected Normal-mode signals.

The former hand-ported JavaScript decoder and the complete dial-up interface remain available under `bbs/` for preservation and comparison. They are not used by the primary bench.

---

## Related Projects Referenced During Development
- **webft8** — [github.com/webft8/webft8](https://github.com/webft8/webft8) (AGPL-3.0) — Browser FT8 decoder
- **ChromeFT8** — [github.com/Transwarp8/ChromeFT8](https://github.com/Transwarp8/ChromeFT8) (MIT) — Chrome extension FT8 decoder
- **ft8play** — [github.com/pengowray/ft8play](https://github.com/pengowray/ft8play) — Online FT8 player
- **fTelnet** — [github.com/rickparrish/fTelnet](https://github.com/rickparrish/fTelnet) — Web BBS terminal client
- **ENiGMA½ BBS** — [github.com/NuSkooler/enigma-bbs](https://github.com/NuSkooler/enigma-bbs) — Node.js BBS software
- **ansilove.js** — [github.com/ansilove/ansilove.js](https://github.com/ansilove/ansilove.js) — ANSI art renderer
- **16colo.rs** — [16colo.rs](https://16colo.rs) — ANSI art archive and renderer
- **RustFT8** — [github.com/jl1nie/RustFT8](https://github.com/jl1nie/RustFT8) — Rust port of ft8_lib

---

## Web APIs Used
- **Web Audio API** — Microphone capture, FFT analysis, audio generation (modem sounds)
- **WebAuthn / Credential Management** — Referenced but not used (passkeys were per-device)
- **MetaMask / EIP-1193** — `window.ethereum` provider for wallet connection
- **localStorage** — Offline BBS state persistence

---

## Standards & Protocols
- **FT8** — Franke & Taylor, 2017. 8-GFSK modulation, (174,91) LDPC code, 15-second transmissions
- **JS8** — Jordan Sherer (KN4CRD). Modified FT8 for keyboard-to-keyboard QSOs. (174,87) LDPC code, multiple speed modes
- **ERC-20** — Ethereum token standard (EIP-20)
- **EIP-4337** — Account abstraction / Paymaster (referenced, not implemented)
- **Solidity ^0.8.20** — Smart contract language

---

## License Notes
- ft8ts and JS8Call are GPL-3.0 — the DFTZ JS8 decoder port inherits this license for the codec components
- ft8_lib is MIT
- OpenZeppelin is MIT
- ethers.js is MIT
- IBM VGA fonts are covered under viler-int10h's license terms

---

*This file maintained as part of the DFTZ BBS project. Last updated 2026-03-24.*
