Tap is a proof-of-concept editor for screenplays formatted in Fountain markup. It stores all data in AT Protocol records.
Go 57.8%
TypeScript 25.6%
HTML 12.5%
CSS 3.5%
Dockerfile 0.6%
Other 0.1%
23 3 0

Clone this repository

https://tangled.org/limeleaf.coop/tap-app
git@tangled.org:limeleaf.coop/tap-app

For self-hosted knots, clone URLs may differ based on your setup.

README.md

Tap – A Minimal Fountain Editor (Go + Web Components)#

This repository hosts a Go-powered Fountain editor UI implemented with vanilla Web Components and server-side rendering in Go templates.

The app renders HTML previews via a Go endpoint and uses a small client bundle built with esbuild. No React/Next.js is required.

A demo server is running at https://tapapp.lol.

Authentication#

Tap uses Bluesky OAuth authentication. Enter your Bluesky handle on the home page to sign in. You will be redirected to Bluesky to authorize the app.

Export features#

  • Export builds a .fountain file in plain text format and triggers a download.
  • Download PDF generates a PDF from the preview content and triggers a download

Development#

Run the web components watcher in one terminal:

npm run dev:wc

Run the Go server in another terminal:

npm run dev:go
# or manually:
# (cd server && PORT=8088 go run .)

Open the app at:

http://localhost:8088

What’s included#

  • web/ – TypeScript sources for Web Components
    • <tap-app> top-level orchestrator
    • <tap-toolbar> controls (Preview toggle, Hide notes, Export)
    • <tap-editor> textarea-based editor (MVP)
    • <tap-preview> renders HTML from the Go /preview endpoint
  • server/templates/ – Go HTML templates
    • index.html renders <tap-app> and includes /static/js/tap.js
  • server/static/ – CSS and built JS
    • styles.css screenplay styles
    • js/tap.js built bundle output
  • server/tap/ – Go Fountain parser/renderer

Build (production bundle)#

npm run build:wc