{"id":47679760,"url":"https://github.com/volfpeter/htmui","last_synced_at":"2026-04-02T13:55:48.020Z","repository":{"id":340151360,"uuid":"1164769512","full_name":"volfpeter/htmui","owner":"volfpeter","description":"Python UI components for building hypermedia applications","archived":false,"fork":false,"pushed_at":"2026-02-23T13:48:50.000Z","size":159,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-23T21:50:56.731Z","etag":null,"topics":["fastapi","html","htmx","hypermedia","python","server-side-rend","web","web-development"],"latest_commit_sha":null,"homepage":"https://htmui.vercel.app","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/volfpeter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/funding.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"buy_me_a_coffee":"volfpeter"}},"created_at":"2026-02-23T13:15:35.000Z","updated_at":"2026-02-23T16:40:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/volfpeter/htmui","commit_stats":null,"previous_names":["volfpeter/htmui"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/volfpeter/htmui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volfpeter%2Fhtmui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volfpeter%2Fhtmui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volfpeter%2Fhtmui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volfpeter%2Fhtmui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/volfpeter","download_url":"https://codeload.github.com/volfpeter/htmui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/volfpeter%2Fhtmui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31307365,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fastapi","html","htmx","hypermedia","python","server-side-rend","web","web-development"],"created_at":"2026-04-02T13:55:47.055Z","updated_at":"2026-04-02T13:55:48.013Z","avatar_url":"https://github.com/volfpeter.png","language":"Python","funding_links":["https://buymeacoffee.com/volfpeter"],"categories":[],"sub_categories":[],"readme":"# htmui\n\n`htmui` is a Python library that implements complex UI components using `htmy`.\n\nIt is designed with hypermedia applications, and specifically HTMX in mind.\n\nWhat if you are using Jinja or similar templating engines instead of `htmy`? Converting the components from `htmy` to your templating engine of choice is straightforward, because of how `htmy` mimics HTML.\n\n## Prerequisites\n\nYou need to have [htmy](https://volfpeter.github.io/htmy/) installed in your project to be able to use `htmui` components.\n\nYou can do it with a simple `pip install htmy`.\n\nFor the best developer experience, it is recommended to use [holm](https://volfpeter.github.io/holm/) as your application framework. It brings built-in `htmy` (and thus `htmui`) and HTMX support, and is built around FastAPI.\n\n## How to use\n\n`htmui` is designed to be \"vendored\". You don't install either the library or its components. Instead you copy the components you need into your project and adjust them to fit your requirements.\n\n## UI framework integrations\n\n### BasecoatUI\n\n[BasecoatUI](https://basecoatui.com/) components and utilities are in the `htmui/basecoat` package.\n\nThese components require [BasecoatUI](https://basecoatui.com/) and [TailwindCSS](https://tailwindcss.com/) to be installed. While TailwindCSS fully works from a CDN, some BasecoatUI classes do not, so a full local JS setup is recommended.\n\nMost of the BasecoatUI components are implemented, except trivial ones that only require a single CSS class name.\n\nThere are also extra components like `codeblock`, that use BasecoatUI to a degree, but are not in BasecoatUI.\n\n### Highlight.js\n\n[Highlight.js](https://highlightjs.org/) components and utilities are in the `htmui/highlightjs.py` module.\n\n### TailwindCSS\n\n[TailwindCSS](https://tailwindcss.com/) components and utilities are in the `htmui/tailwind` package.\n\nThere are a couple of simple utility components that use TailwindCSS classes. The goal of these components is to complement TailwindCSS-based UI libraries.\n\n### Unstyled\n\nGeneral components and utilities are in the `htmui/unstyled` package.\n\nSimilarly minimal as the TailwindCSS components, the goal is to complement TailwindCSS-based UI libraries.\n\n## Development\n\n### Tools\n\nPython:\n\n- `uv` for project and dependency management.\n- `poethepoet` for running tasks. Run `uv run poe` to see all available tasks.\n- `mypy` for static code analysis.\n- `ruff` is used for formatting and linting.\n\nJavaScript:\n\n- `npm` for managing JavaScript dependencies for example applications.\n\nOther:\n\n- `honcho` for running applications that require multiple processes, like a Python application and the TailwindCSS CLI.\n\nTo get started, run `uv sync` and `npm install`.\n\n## Applications\n\n### Basecoat\n\nJust run `honcho start`. This will spin up `basecoat_app` and the corresponding TailwindCSS CLI that generates the application's CSS file.\n\n## License\n\nThe package is open-sourced under the conditions of the [MIT license](https://choosealicense.com/licenses/mit/).\n\n## Credits\n\nThis project wouldn't exist without the JavaScript components and excellent documentation of [BasecoatUI](https://basecoatui.com/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolfpeter%2Fhtmui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvolfpeter%2Fhtmui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolfpeter%2Fhtmui/lists"}