{"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","subcategory":"TUI","tags":["tui","self-host","permissive","active"],"capabilities":["tui"],"surfaces":["Self-host"],"ecosystem":["Python"],"licenseModel":"OSS/MIT","githubStars":37488,"starsPerWeek":130,"access":"free","archived":false,"repo":{"createdAt":"2021-04-08","pushedAt":"2026-10-09","license":"MIT","archived":false,"checkedAt":"2026-10-21"}},"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"}}