{"id":47240670,"url":"https://github.com/hedystia/hedystia","last_synced_at":"2026-05-10T20:12:04.167Z","repository":{"id":287648849,"uuid":"965386158","full_name":"Hedystia/Hedystia","owner":"Hedystia","description":"end to end type safe framework","archived":false,"fork":false,"pushed_at":"2026-03-28T23:46:08.000Z","size":863,"stargazers_count":19,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-04-03T00:28:33.575Z","etag":null,"topics":["api","backend","bun","framework","hedystia","server","type-safe","typescript","web"],"latest_commit_sha":null,"homepage":"https://docs.hedystia.com","language":"TypeScript","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/Hedystia.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"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}},"created_at":"2025-04-13T03:36:36.000Z","updated_at":"2026-03-28T23:46:11.000Z","dependencies_parsed_at":"2026-04-07T04:00:48.463Z","dependency_job_id":null,"html_url":"https://github.com/Hedystia/Hedystia","commit_stats":null,"previous_names":["zastinian/framework","hedystia/framework","hedystia/hedystia"],"tags_count":99,"template":false,"template_full_name":null,"purl":"pkg:github/Hedystia/Hedystia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hedystia%2FHedystia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hedystia%2FHedystia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hedystia%2FHedystia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hedystia%2FHedystia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hedystia","download_url":"https://codeload.github.com/Hedystia/Hedystia/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hedystia%2FHedystia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31499193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"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":["api","backend","bun","framework","hedystia","server","type-safe","typescript","web"],"created_at":"2026-03-14T02:26:09.401Z","updated_at":"2026-05-10T20:12:04.160Z","avatar_url":"https://github.com/Hedystia.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\n    \u003cstrong\u003e🚀 Hedystia\u003c/strong\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003cstrong\u003eA complete TypeScript ecosystem — server, ORM, reactive UI, validations, and more. ⚡\u003c/strong\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://docs.hedystia.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/Docs-blue?style=flat-square\" alt=\"Documentation\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.npmjs.com/package/hedystia\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/hedystia.svg?style=flat-square\" alt=\"npm version\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.npmjs.com/package/hedystia\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/hedystia.svg?style=flat-square\" alt=\"npm downloads\"\u003e\u003c/a\u003e\n    \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/Hedystia/Hedystia.svg?style=flat-square\" alt=\"license\"\u003e\u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Bun-powered-FFD43B?style=flat-square\u0026logo=bun\" alt=\"Bun powered\"\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## 📦 Packages\n\n| Package | npm | Description |\n|---------|-----|-------------|\n| [`hedystia`](./Packages/server) | [![npm](https://img.shields.io/npm/v/hedystia.svg?style=flat-square)](https://www.npmjs.com/package/hedystia) | Core HTTP server framework with full type safety, WebSocket, SSE, middleware, hooks and macros |\n| [`@hedystia/validations`](./Packages/validations) | [![npm](https://img.shields.io/npm/v/@hedystia/validations.svg?style=flat-square)](https://www.npmjs.com/package/@hedystia/validations) | Schema validation system — Standard Schema v1 compliant, interoperable with Zod, ArkType, etc. |\n| [`@hedystia/db`](./Packages/database) | [![npm](https://img.shields.io/npm/v/@hedystia/db.svg?style=flat-square)](https://www.npmjs.com/package/@hedystia/db) | Type-safe ORM with schema-first design, migrations, caching, and multi-driver support (MySQL, SQLite, S3) |\n| [`@hedystia/view`](./Packages/view) | [![npm](https://img.shields.io/npm/v/@hedystia/view.svg?style=flat-square)](https://www.npmjs.com/package/@hedystia/view) | Reactive UI engine — fine-grained signals, no Virtual DOM, JSX, SSR, and control flow primitives |\n| [`@hedystia/client`](./Packages/client) | [![npm](https://img.shields.io/npm/v/@hedystia/client.svg?style=flat-square)](https://www.npmjs.com/package/@hedystia/client) | Auto-generated type-safe HTTP client with path chaining, SSE and WebSocket support |\n| [`@hedystia/adapter`](./Packages/adapter) | [![npm](https://img.shields.io/npm/v/@hedystia/adapter.svg?style=flat-square)](https://www.npmjs.com/package/@hedystia/adapter) | Multi-runtime adapters — Cloudflare Workers, Node.js, Deno, Lambda, Vercel, Fastly Compute |\n| [`@hedystia/swagger`](./Packages/swagger) | [![npm](https://img.shields.io/npm/v/@hedystia/swagger.svg?style=flat-square)](https://www.npmjs.com/package/@hedystia/swagger) | OpenAPI/Swagger documentation auto-generated from your routes |\n| [`@hedystia/types`](./Packages/types) | [![npm](https://img.shields.io/npm/v/@hedystia/types.svg?style=flat-square)](https://www.npmjs.com/package/@hedystia/types) | Route type generation utility for end-to-end type safety |\n| [`@hedystia/ws`](./Packages/websocket) | [![npm](https://img.shields.io/npm/v/@hedystia/ws.svg?style=flat-square)](https://www.npmjs.com/package/@hedystia/ws) | Universal WebSocket primitives — server, client, runtime detection |\n\n### Integrations\n\n| Package | npm | Description |\n|---------|-----|-------------|\n| [`@hedystia/astro`](./Packages/integrations/view/astro) | [![npm](https://img.shields.io/npm/v/@hedystia/astro.svg?style=flat-square)](https://www.npmjs.com/package/@hedystia/astro) | Astro integration for `@hedystia/view` components |\n| [`@hedystia/better-auth`](./Packages/integrations/database/better-auth) | [![npm](https://img.shields.io/npm/v/@hedystia/better-auth.svg?style=flat-square)](https://www.npmjs.com/package/@hedystia/better-auth) | Better Auth adapter for `@hedystia/db` |\n\n## 🚀 Quick Start\n\n### Server\n\n```bash\nbun add hedystia\n```\n\n```typescript\nimport { Hedystia, h } from \"hedystia\";\n\nconst app = new Hedystia()\n  .get(\"/hello/:name\", (ctx) =\u003e `Hello ${ctx.params.name}!`, {\n    params: h.object({ name: h.string() }),\n    response: h.string()\n  })\n  .listen(3000);\n```\n\n### Type-safe Client\n\n```bash\nbun add @hedystia/client\n```\n\n```typescript\nimport { createClient } from \"@hedystia/client\";\n\nconst client = createClient\u003ctypeof app\u003e(\"http://localhost:3000\");\n\nconst { data } = await client.hello.name(\"World\").get();\nconsole.log(data); // \"Hello World!\"\n```\n\n### Database (ORM)\n\n```bash\nbun add @hedystia/db\n```\n\n```typescript\nimport { table, integer, varchar, text } from \"@hedystia/db\";\n\n// Define your schema\nconst users = table(\"example_users\", {\n  id: integer().primaryKey().autoIncrement(),\n  fullName: varchar(255).name(\"full_name\").notNull(),\n  email: varchar(255).unique(),\n});\n\nconst posts = table(\"example_posts\", {\n  id: integer().primaryKey().autoIncrement(),\n  authorId: integer().name(\"author_id\").references(() =\u003e users.id),\n  title: varchar(255).notNull(),\n  body: text(),\n});\n```\n\n```typescript\nimport { database } from \"@hedystia/db\";\nimport { users, posts } from \"./schema\";\n\n// Initialize with object schema (recommended)\nconst db = database({\n  schemas: { users, posts },\n  database: \"sqlite\",\n  connection: { filename: \"./main.db\" },\n  syncSchemas: true, // Auto-create tables in development\n});\n\nawait db.initialize();\n\n// Query data\nconst newUser = await db.users.insert({ \n  fullName: \"Alice Vance\", \n  email: \"alice@hedystia.com\" \n});\n\nconst userWithPosts = await db.users.findFirst({\n  where: { fullName: \"Alice Vance\" },\n  with: { posts: true }\n});\n```\n\n### Reactive UI (View)\n\n```bash\nbun add @hedystia/view\n```\n\nConfigure your `tsconfig.json`:\n```json\n{\n  \"compilerOptions\": {\n    \"jsx\": \"react-jsx\",\n    \"jsxImportSource\": \"@hedystia/view\"\n  }\n}\n```\n\n```tsx\nimport { sig, val, set, mount } from \"@hedystia/view\";\n\nfunction Counter() {\n  const count = sig(0);\n  return (\n    \u003cdiv\u003e\n      \u003ch1\u003eCounter: {() =\u003e val(count)}\u003c/h1\u003e\n      \u003cbutton onClick={() =\u003e set(count, val(count) + 1)}\u003e+\u003c/button\u003e\n    \u003c/div\u003e\n  );\n}\n\nmount(Counter, document.getElementById(\"root\")!);\n```\n\n\u003e Components run **once**. Reactivity comes from wrapping signal reads in `() =\u003e ...` accessors.\n\n### Validations\n\n```bash\nbun add @hedystia/validations\n```\n\n```typescript\nimport { h, Infer } from \"@hedystia/validations\";\n\nconst userSchema = h.object({\n  id: h.number(),\n  name: h.string(),\n  email: h.string().email(),\n  tags: h.string().array().optional()\n});\n\n// Type inference\ntype User = Infer\u003ctypeof userSchema\u003e;\n/*\n{\n  id: number;\n  name: string;\n  email: string;\n  tags?: string[] | undefined;\n}\n*/\n\n// Standard Schema v1 compliant — works with Zod, ArkType, etc.\n```\n\n### Swagger\n\n```typescript\nimport { swagger } from \"@hedystia/swagger\";\n\nconst swaggerPlugin = swagger({\n  title: \"My API\",\n  description: \"An example API with Swagger\",\n  version: \"1.0.0\",\n  tags: [\n    { name: \"users\", description: \"User operations\" },\n  ],\n});\n\napp.use(\"/swagger\", swaggerPlugin.plugin(app));\n```\n\n### Multi-runtime Adapters\n\n```typescript\nimport { adapter } from \"@hedystia/adapter\";\n\n// Deploy anywhere\nadapter(app).toCloudflareWorker();\nadapter(app).toNodeHandler();\nadapter(app).toDeno();\nadapter(app).toLambda();\nadapter(app).toVercel();\nadapter(app).toFastlyCompute();\n```\n\n## 📜 License\n\nMIT License © 2026 Hedystia\n\n## 📖 Documentation\n\n- [Full Documentation](https://docs.hedystia.com)\n- [Getting Started Guide](https://docs.hedystia.com/framework/getting-started)\n- [API Reference](https://docs.hedystia.com/framework/overview)\n\n## 🗣️ Community\n\n- [GitHub Issues](https://github.com/Hedystia/Hedystia/issues)\n- [Discord Server](https://hedystia.com/support)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhedystia%2Fhedystia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhedystia%2Fhedystia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhedystia%2Fhedystia/lists"}