{"data":{"slug":"textual","name":"Textual","tagline":"Build TUIs like web apps","category":"python","categoryName":"Python","url":"https://textual.textualize.io","github":"https://github.com/Textualize/textual","pricing":"open-source","hook":"Textual brings CSS layouts and reactive widgets to the terminal.","whatsGood":"The component model feels familiar to web developers. CSS-style layouts work in the terminal. Async-first design handles I/O without blocking. The widget library covers common patterns.","theCatch":"Terminal constraints limit what is possible. Learning curve for the reactive model. Not every terminal renders correctly.","verdict":"TUI development that feels like modern web dev.","addedAt":"2026-08-19","featured":false,"domain":"Python","subSpecialty":"TUI","capabilities":["tui"],"surfaces":["Self-host"],"ecosystem":["Python"],"licenseModel":"OSS/MIT","githubStars":37126},"related":[{"slug":"fastapi","name":"FastAPI","tagline":"Modern Python APIs at startup speed"},{"slug":"pydantic","name":"Pydantic","tagline":"Data validation using Python type hints"},{"slug":"uv","name":"uv","tagline":"Python packaging at Rust speed"},{"slug":"ruff","name":"Ruff","tagline":"Python linter faster than your test suite"},{"slug":"polars","name":"Polars","tagline":"DataFrames that respect your CPU"}],"links":{"self":"/api/gems/textual","html":"/gems/textual","markdown":"/gems/textual.md","category":"/api/gems?category=python","categoryPage":"/stacks/python"}}