{"id":15011387,"url":"https://github.com/tireymorris/hyperwave","last_synced_at":"2025-07-19T13:39:14.334Z","repository":{"id":195665592,"uuid":"685247315","full_name":"tireymorris/hyperwave","owner":"tireymorris","description":"🌊  build rich, performant UIs with the best possible developer experience","archived":false,"fork":false,"pushed_at":"2025-02-12T02:32:59.000Z","size":697,"stargazers_count":77,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-02T18:51:06.303Z","etag":null,"topics":["bun","htmx","hyperscript","sqlite","tailwind","tsx","typescript","zod"],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tireymorris.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-08-30T20:24:10.000Z","updated_at":"2025-03-22T02:44:07.000Z","dependencies_parsed_at":"2023-12-21T04:28:56.415Z","dependency_job_id":"25a1ebbc-fe62-4dc8-a48e-859f60b8eafd","html_url":"https://github.com/tireymorris/hyperwave","commit_stats":{"total_commits":11,"total_committers":1,"mean_commits":11.0,"dds":0.0,"last_synced_commit":"55e80969de517d27c530dd027fccbc67661f427f"},"previous_names":["tireymorris/hyperwave","tireymorris/flapjack"],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tireymorris%2Fhyperwave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tireymorris%2Fhyperwave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tireymorris%2Fhyperwave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tireymorris%2Fhyperwave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tireymorris","download_url":"https://codeload.github.com/tireymorris/hyperwave/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248126376,"owners_count":21051910,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bun","htmx","hyperscript","sqlite","tailwind","tsx","typescript","zod"],"created_at":"2024-09-24T19:41:01.420Z","updated_at":"2025-04-09T23:21:33.778Z","avatar_url":"https://github.com/tireymorris.png","language":"CSS","readme":"# hyperwave\n\nhyperwave combines the benefits of traditional server-rendered applications with the flexibility of modern client-side frameworks.\n\n- **Performance:** Server-side rendering ensures fast, responsive applications, tailored to produce the smallest possible bundles.\n- **Developer experience:** HTMX and Tailwind provide a minimalistic and declarative approach to building user interfaces\n- **Deployment:** bun applications can be easily deployed on any platform as portable binaries\n\n## Getting started\n\nFollow these steps to start developing with hyperwave:\n\n1. Clone the repository:\n\n   ```sh\n   git clone https://github.com/tireymorris/hyperwave.git\n   cd hyperwave\n   ```\n\n2. Install dependencies:\n\n   ```sh\n   bun install\n   ```\n\n3. Start the development server:\n\n   ```sh\n   bun dev\n   ```\n\n4. Visit `http://localhost:1234` in your browser.\n\n5. Start editing `server.tsx` to see your changes live.\n\n### Example\n\nThis is the endpoint serving our initial landing page:\n\n```typescript\napp.get(\"/\", ({ html }) =\u003e\n  html(\n    \u003cLayout title=\"hyperwave 🌊\"\u003e\n      \u003csection class=\"flex flex-col gap-8\"\u003e\n        \u003cdiv\u003e\n          \u003cbutton\n            class=\"bg-blue-100 p-4 text-sm font-bold rounded-md shadow-sm\"\n            hx-get=\"/instructions\"\n            hx-target=\"closest div\"\n            _=\"on click toggle .loading\"\n          \u003e\n            fetch instructions from \u003ccode\u003e/instructions\u003c/code\u003e\n          \u003c/button\u003e\n        \u003c/div\u003e\n      \u003c/section\u003e\n    \u003c/Layout\u003e,\n  ),\n);\n```\n\n- The API serves a full HTML document to the client, which includes Tailwind classes and HTMX attributes\n- The response is wrapped in a `\u003cLayout /\u003e` tag, a server-rendered functional component, which takes a `title` prop\n- The button, when clicked, will issue a `GET` request to `/instructions` and replace the content of its parent div with the response.\n- Includes a tiny hyperscript to toggle a class when the button is clicked\n\n---\n\n### Deployment\n\nBuild an executable for your current architecture with `bun run build`\n\n`PORT` environment variable is available if needed (default is 1234)\n\nNote: deploy `public/` with the executable, it contains the generated UnoCSS build.\n\n---\n\n### Components\n\n- [bun](https://bun.sh/) provides the bundler, runtime, test runner, and package manager.\n- [SQLite](https://bun.sh/docs/api/sqlite) is production-ready and built into Bun.\n- [hono](https://hono.dev) is a robust web framework with great DX and performance\n- [unoCSS](https://unocss.dev/integrations/cli) is Tailwind-compatible and generates only the styles used in application code.\n- [htmx](https://htmx.org/reference/) gives 99% of the client-side interactivity most apps need.\n- [hyperscript](http://hyperscript.org) is a scripting library for rapid application development.\n- [zod](https://zod.dev/) is a powerful runtime validation library.\n\n---\n\n### Benefits and takeways\n\n**Why bother switching to hyperwave?**\n\n- Drastically reduces time from idea to rendered UI\n- Very little cognitive friction to creating something new, after initial learning curve\n\n**Speed / performance benefit**\n\n- hyperwave is designed to generate the smallest possible payloads\n- Deployment is as simple as compiling and running a binary 😎\n\n**Simplicity**\n\n- Bun saves us a ton of time and effort fighting tooling issues\n- SPAs are over-prescribed and inherently introduce serious costs\n\n**Dev UX benefit**\n\n- Better primitives for quickly building UX\n- Uniform interface simplifies writing and reading code\n\n**Architectural benefit**\n\n- Can scale backend and product independently, loosely coupled\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftireymorris%2Fhyperwave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftireymorris%2Fhyperwave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftireymorris%2Fhyperwave/lists"}