Web app
Prosodic ships a FastAPI backend and a SvelteKit frontend (compiled to static files, ~180 KB, PWA-ready and mobile-friendly).
Hosted
A hosted instance is live at prosodic.app — no install required. Paste a poem, see scansions, rhyme schemes, and form classification immediately. Results are shareable via permalink.
Run locally
prosodic web # http://127.0.0.1:8181
prosodic web --host 0.0.0.0 --port 5111
prosodic web --dev # auto-reload backend + frontend on changeThe five tabs
- Parse — text input and corpus dropdown; sortable, paginated results with foot boundaries drawn into each scansion. Long/prose lines fall back to phrase-level parsing automatically (with syntax-aware sub-splitting when phrasal stress is on). Export the table as CSV, TSV, or JSON.
- Line — single-line scansion detail: every candidate scansion shown with per-position violations, bounded parses grayed out (including dominated alternative-pronunciation readings, each at its own best pronunciation — so you can see why a reading isn’t on top). Clicking a candidate renders a combined Liberman & Prince-style figure: the metrical grid stacked over the syllables, with the syntax tree hanging beneath when
syntaxis enabled. - Meter — configure constraints, weights, and position widths.
- MaxEnt — upload annotated data (or a target scansion) and learn constraint weights; learned zone weights feed back into the Parse tab.
- Settings — global options: phrasal stress (
syntax), spaCy model, language, maximum syllables per parse unit, parse timeout.
All configuration is persisted in localStorage, and every tab keeps its state and scroll position across switches (URL routing with working back/forward).
See prosodic/web/ in the source tree for the implementation, and Deployment for running your own instance (nginx + systemd + certbot).