Tap is a proof-of-concept editor for screenplays formatted in Fountain markup. It stores all data in AT Protocol records.
Go 53.3%
TypeScript 28.0%
HTML 14.5%
CSS 3.4%
Dockerfile 0.7%
Other 0.1%
13 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 App Passwords (not your main account password).

  • Enter your Bluesky handle and an App Password on the home page to sign in.
  • The server stores your access and refresh tokens in memory for the duration of your session.
  • Tokens are refreshed automatically via com.atproto.server.refreshSession.
  • You can revoke the App Password any time in your Bluesky account settings.

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