Railway - easy deployment
This project is deployed on Railway. For me it works like a charm: I just add my repo and Railway builds and deploys it by itself. This link gives $20 in credits. No pressure - use if it fits your stack.
Example

Example layout based on an example in the Wikipedia article Interlinear gloss (illustrative; Leipzig-style conventions).
The German phrase unsern Vätern means “to our fathers”. The plural of Vater is Väter, where the vowel changes from a to ä instead of an ending being added. Marking that vowel change in a gloss needs a special notation, and this example shows how, alongside the dative plural that appears on both words.
The plural and the case sit on both the possessive and the noun:
A hyphen separates pieces that sit next to each other, but the umlaut plural is not a separable piece: it is a change inside the stem. Leipzig conventions write that with a backslash, so father\PL means the plural is shown by the vowel, not by an added ending. The dative -n, which is a real suffix, keeps its hyphen. One word can use both marks at once.
More on the backslash and the other marks:
Open the example and type the backslash in the gloss line where a category shows as a stem change. Set the morpheme boundary character under Settings → Tokens for the parts that do separate, then export the diagram as PNG, SVG, or PDF.
Related examples:
This project is deployed on Railway. For me it works like a charm: I just add my repo and Railway builds and deploys it by itself. This link gives $20 in credits. No pressure - use if it fits your stack.