{"id":26210019,"url":"https://github.com/redwoodjs/sdk","last_synced_at":"2026-04-19T20:02:29.161Z","repository":{"id":263616017,"uuid":"890269286","full_name":"redwoodjs/sdk","owner":"redwoodjs","description":"A simple framework for humans: Server-first React with zero magic. Built to stay understandable.","archived":false,"fork":false,"pushed_at":"2026-02-18T11:24:03.000Z","size":96229,"stargazers_count":1398,"open_issues_count":41,"forks_count":79,"subscribers_count":12,"default_branch":"main","last_synced_at":"2026-02-18T15:55:27.547Z","etag":null,"topics":["cloudflare","react","react-server-components","realtime","typescript"],"latest_commit_sha":null,"homepage":"https://rwsdk.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/redwoodjs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","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":"2024-11-18T09:34:31.000Z","updated_at":"2026-02-18T11:24:05.000Z","dependencies_parsed_at":"2026-01-21T10:02:11.808Z","dependency_job_id":null,"html_url":"https://github.com/redwoodjs/sdk","commit_stats":{"total_commits":127,"total_committers":3,"mean_commits":"42.333333333333336","dds":"0.36220472440944884","last_synced_commit":"b74afc962720e590a821dc1d4aae2c886f6133b8"},"previous_names":["redwoodjs/reloaded","redwoodjs/sdk"],"tags_count":435,"template":false,"template_full_name":null,"purl":"pkg:github/redwoodjs/sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redwoodjs%2Fsdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redwoodjs%2Fsdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redwoodjs%2Fsdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redwoodjs%2Fsdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redwoodjs","download_url":"https://codeload.github.com/redwoodjs/sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redwoodjs%2Fsdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29741732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: 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":["cloudflare","react","react-server-components","realtime","typescript"],"created_at":"2025-03-12T07:18:47.669Z","updated_at":"2026-02-23T11:42:52.185Z","avatar_url":"https://github.com/redwoodjs.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","Frameworks \u0026 Libraries"],"sub_categories":["Web Frameworks"],"readme":"\u003cdiv align=\"center\" style=\"margin: 0; padding: 0;\"\u003e\n  \u003ca href=\"https://rwsdk.com\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://imagedelivery.net/EBSSfnGYYD9-tGTmYMjDgg/53dbc43a-e481-469a-91fc-40d9c0947d00/public\"\u003e\n      \u003cimg alt=\"RedwoodSDK logo\" src=\"https://imagedelivery.net/EBSSfnGYYD9-tGTmYMjDgg/37162c6c-890c-48e3-790a-48b2b87fcd00/public\" height=\"128\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\n  \u003ch1\u003eA simple framework for humans\u003c/h1\u003e\n\n  \u003cp\u003e\u003cb\u003eServer-first React with zero magic. Built to stay understandable.\u003c/b\u003e\u003c/p\u003e\n\n\u003ca href=\"https://rwsdk.com\"\u003e\u003cimg alt=\"Redwood Inc. logo\" src=\"https://img.shields.io/badge/MADE%20BY%20Redwood%20Inc.-000000.svg?style=for-the-badge\u0026logo=Redwood\u0026labelColor=000\"\u003e\u003c/a\u003e\n\u003ca href=\"https://docs.rwsdk.com\"\u003e\u003cimg alt=\"Documentation\" src=\"https://img.shields.io/badge/Documentation-000000.svg?style=for-the-badge\u0026logo=Redwood\u0026labelColor=000\"\u003e\u003c/a\u003e\n\u003ca href=\"https://discord.gg/redwoodjs\"\u003e\u003cimg alt=\"Join the community on Discord\" src=\"https://img.shields.io/badge/Join%20the%20community-blueviolet.svg?style=for-the-badge\u0026logo=Discord\u0026labelColor=000000\u0026logoWidth=20\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/redwoodjs/sdk/blob/main/LICENSE\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/redwoodjs/sdk?style=for-the-badge\u0026labelColor=000000\"\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\n---\n\n## What is this?\n\nRedwoodSDK is a server-first React framework.\nIt starts as a Vite plugin that enables React Server Components and Server Functions, then layers on a type-safe, standards-compliant router that takes you from request to response—end to end.\n\n(For Cloudflare (workerd) only)\n\nIt includes:\n\n- Vite-first setup (no ceremony)\n- React Server Components + Server Functions\n- Type-safe server router (web standards, not framework magic)\n- Middleware \u0026 per router middleware for request/response control\n- Realtime-ready primitives for modern apps\n\n---\n\n## 📦 Quickstart\n\nStart a new project:\n\n```bash\nnpx create-rwsdk my-project-name\n```\n\nInstall dependencies:\n\n```bash\ncd my-project-name\npnpm install\n```\n\nRun the dev server:\n\n```bash\npnpm dev\n```\n\n```bash\nVITE v6.2.0  ready in 500 ms\n\n➜  Local:   http://localhost:5173/\n➜  Network: use --host to expose\n➜  press h + enter to show help\n```\n\nThat's it, your RedwoodSDK is up and running!\n\n### Add more routes?\n\nAs long as you return a valid Response, RedwoodSDK is happy!\n\n```js\n// worker.tsx\n\nimport { defineApp } from \"rwsdk/worker\";\nimport { route, render } from \"rwsdk/router\";\nimport MyReactPage from \"@app/pages/MyReactPage\";\n\nexport default defineApp([\n  render(Document, [\n    route(\"/\", () =\u003e new Response(\"Hello, World!\")),\n    route(\"/ping\", function () {\n      return \u003ch1\u003ePong!\u003c/h1\u003e;\n    }),\n    route(\"/react\", MyReactPage)\n    route(\"/docs\", async () =\u003e {\n      return new Response(null, {\n        status: 301,\n        headers: {\n          \"Location\": \"https://docs.rwsdk.com\",\n        },\n      });\n    }),\n    route(\"/sitemap.xml\", async () =\u003e {\n      return new Response(sitemap, {\n        status: 200,\n        headers: {\n          \"Content-Type\": \"application/xml\",\n        },\n      });\n    }),\n    route(\"/robots.txt\", async () =\u003e {\n      const robotsTxt = `User-agent: *\n        Allow: /\n        Disallow: /search\n        Sitemap: https://rwsdk.com/sitemap.xml`;\n\n      return new Response(robotsTxt, {\n        status: 200,\n        headers: {\n          \"Content-Type\": \"text/plain\",\n        },\n      });\n    }),\n  ]),\n]);\n```\n\nStart building immediately → [Quick start guide](https://docs.rwsdk.com/getting-started/quick-start/)\n\n---\n\n## 🚀 React Server Components\n\nRedwoodSDK is true Javascript full-stack:\n\n```js\n// users.ts (server function)\n\"use server\";\nimport { db } from \"@/db\";\n\nexport async function getUsers() {\n  const users = await db.users.findAll();\n  return users;\n}\n\n// UserList.tsx (React server component)\nimport { getUsers } from \"./users\";\n\nexport default async function UsersPage() {\n  const users = await getUsers();\n  return (\n    \u003cdiv\u003e\n      \u003cul\u003e\n        {users.map((user) =\u003e (\n          \u003cli key={user.id}\u003e{user.name}\u003c/li\u003e\n        ))}\n      \u003c/ul\u003e\n    \u003c/div\u003e\n  );\n}\n```\n\nSetup a database now → [React Server Components](https://docs.rwsdk.com/core/react-server-components/)\n\n---\n\n## ⭐️ Like it? Star it!\n\nIf this project saves you time or sparks ideas, please [⭐ star the repo](https://github.com/redwoodjs/sdk) — it really helps us grow the community.\n\n---\n\n## 🛠 Contributing\n\nThis is a monorepo. To contribute or explore packages:\n\n- Join our community on [Discord](https://discord.gg/redwoodjs)\n- Check out the [Contributing Guide](./CONTRIBUTING.md) for how to get started.\n\n**Policy docs:**\n- [Contributing](./CONTRIBUTING.md)\n- [Support \u0026 Versioning](./SUPPORT.md)\n- [Security Policy](./SECURITY.md)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredwoodjs%2Fsdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredwoodjs%2Fsdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredwoodjs%2Fsdk/lists"}