{"id":31842769,"url":"https://github.com/firtoz/fullstack-toolkit","last_synced_at":"2026-05-31T23:00:49.399Z","repository":{"id":303134852,"uuid":"1014530240","full_name":"firtoz/fullstack-toolkit","owner":"firtoz","description":"Typed building blocks for full-stack TypeScript: React Router, Cloudflare Workers, Durable Objects, Hono, Drizzle, WebSockets, and shared utilities.","archived":false,"fork":false,"pushed_at":"2026-05-31T14:10:14.000Z","size":4613,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-31T14:20:05.946Z","etag":null,"topics":["cloudflare-workers","drizzle-orm","durable-objects","hono","monorepo","react-router","typescript","websockets"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/firtoz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-07-05T22:54:31.000Z","updated_at":"2026-05-31T14:10:17.000Z","dependencies_parsed_at":"2025-07-12T23:19:51.905Z","dependency_job_id":"186a3d0e-1899-408d-a3da-6db8636c80e3","html_url":"https://github.com/firtoz/fullstack-toolkit","commit_stats":null,"previous_names":["firtoz/router-toolkit","firtoz/fullstack-toolkit"],"tags_count":206,"template":false,"template_full_name":null,"purl":"pkg:github/firtoz/fullstack-toolkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firtoz%2Ffullstack-toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firtoz%2Ffullstack-toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firtoz%2Ffullstack-toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firtoz%2Ffullstack-toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/firtoz","download_url":"https://codeload.github.com/firtoz/fullstack-toolkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firtoz%2Ffullstack-toolkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33752286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-workers","drizzle-orm","durable-objects","hono","monorepo","react-router","typescript","websockets"],"created_at":"2025-10-12T06:53:09.636Z","updated_at":"2026-05-31T23:00:49.377Z","avatar_url":"https://github.com/firtoz.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fullstack-toolkit\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript\u0026logoColor=white)](https://www.typescriptlang.org/)\n[![Bun](https://img.shields.io/badge/Bun-000000?logo=bun\u0026logoColor=white)](https://bun.sh)\n[![Turborepo](https://img.shields.io/badge/Turborepo-EF4444?logo=turborepo\u0026logoColor=white)](https://turbo.build)\n[![Pull Request Checks](https://github.com/firtoz/fullstack-toolkit/actions/workflows/pr-checks.yml/badge.svg)](https://github.com/firtoz/fullstack-toolkit/actions/workflows/pr-checks.yml)\n\n**Typed building blocks for full-stack TypeScript** — React Router 7, Cloudflare Workers \u0026 Durable Objects, TanStack DB with Drizzle in the browser and on the edge, schema-first WebSocket RPC, and small shared utilities. Everything publishes as [`@firtoz/*` on npm](https://www.npmjs.com/search?q=scope%3A%40firtoz).\n\n---\n\n## Packages\n\nGrouped by what you’re building; each name links to the package README.\n\n### React \u0026 routing\n\n| Package | What it does |\n|--------|----------------|\n| [**@firtoz/router-toolkit**](packages/router-toolkit) | Typed fetchers, submitters, and form actions for React Router 7 framework mode. |\n\n### Cloudflare \u0026 edge\n\n| Package | What it does |\n|--------|----------------|\n| [**@firtoz/hono-fetcher**](packages/hono-fetcher) | Infer Hono `AppType` routes and bodies from Workers / DO fetchers. |\n| [**@firtoz/websocket-do**](packages/websocket-do) | WebSocket sessions on Durable Objects with Standard Schema messages. |\n| [**@firtoz/chat-agent**](packages/chat-agent) | Wire protocol + `ChatAgentBase` for DO chat agents (OpenRouter). |\n| [**@firtoz/chat-agent-drizzle**](packages/chat-agent-drizzle) | Drizzle persistence + migrations for chat-agent. |\n| [**@firtoz/chat-agent-sql**](packages/chat-agent-sql) | Raw `this.sql` persistence for chat-agent. |\n| [**@firtoz/drizzle-durable-sqlite**](packages/drizzle-durable-sqlite) | TanStack DB + Drizzle on Durable Object SQLite. |\n\n### WebSockets \u0026 RPC\n\n| Package | What it does |\n|--------|----------------|\n| [**@firtoz/socka**](packages/socka) | One Standard Schema contract: typed `session.send.*` RPC + optional pushes — [docs hub](packages/socka/docs/README.md). |\n\n### Browser data (TanStack DB · Drizzle)\n\n| Package | What it does |\n|--------|----------------|\n| [**@firtoz/drizzle-indexeddb**](packages/drizzle-indexeddb) | TanStack DB collections on IndexedDB with Drizzle-shaped migrations. |\n| [**@firtoz/drizzle-sqlite-wasm**](packages/drizzle-sqlite-wasm) | SQLite WASM in a worker + TanStack DB collections. |\n| [**@firtoz/idb-collections**](packages/idb-collections) | IndexedDB key-value adapter and query helpers for TanStack DB. |\n| [**@firtoz/collection-sync**](packages/collection-sync) | WebSocket sync protocol and bridges for collections (see also `@firtoz/websocket-do`). |\n\n### Shared primitives\n\n| Package | What it does |\n|--------|----------------|\n| [**@firtoz/maybe-error**](packages/maybe-error) | `MaybeError` / `success` / `fail` — typed results without exceptions. |\n| [**@firtoz/drizzle-utils**](packages/drizzle-utils) | Syncable tables, branded IDs, helpers shared across Drizzle packages. |\n| [**@firtoz/db-helpers**](packages/db-helpers) | TanStack DB helpers (e.g. memory collections for tests). |\n| [**@firtoz/worker-helper**](packages/worker-helper) | Typed Web Workers with Zod; includes Cloudflare typegen helpers. |\n\nSeveral packages are still **early / WIP** — check each README for status and peers.\n\n---\n\n## Installation\n\nInstall only what you need; peers vary by package.\n\n```bash\n# Examples — see each package README for full peer lists\nbun add @firtoz/router-toolkit\nbun add @firtoz/maybe-error\nbun add @firtoz/hono-fetcher\nbun add @firtoz/websocket-do\nnpm install @firtoz/socka\nbun add @firtoz/chat-agent @openrouter/sdk agents\n# bun add @firtoz/chat-agent-drizzle drizzle-orm\n# bun add @firtoz/chat-agent-sql\n\nbun add @firtoz/drizzle-indexeddb @firtoz/drizzle-utils drizzle-orm @tanstack/db\nbun add @firtoz/drizzle-sqlite-wasm @firtoz/drizzle-utils drizzle-orm @tanstack/db\nbun add @firtoz/worker-helper zod\n```\n\n---\n\n## Development\n\nUses [Bun](https://bun.sh/), [Turborepo](https://turbo.build/), and [Changesets](https://github.com/changesets/changesets) for releases.\n\n```bash\nbun install\nbun run typecheck\nbun run lint\nbun run format\n```\n\nFilter a single workspace:\n\n```bash\nbun run --filter=\"@firtoz/router-toolkit\" typecheck\n```\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md). Commits follow [Conventional Commits](https://www.conventionalcommits.org/); use `bun changeset` when you change a published package.\n\n```text\nfeat(router-toolkit): add hook for …\nfix(maybe-error): …\ndocs: update README\n```\n\n---\n\n## Releases\n\n1. Land changes and add a changeset: `bun changeset`\n2. Merge to `main`\n3. CI opens a **Version Packages** PR; merging it publishes `@firtoz/*` to npm.\n\n---\n\n## License\n\nMIT © [Firtina Ozbalikchi](https://github.com/firtoz)\n\n## Ecosystem docs\n\n- [React Router](https://reactrouter.com) · [Hono](https://hono.dev) · [Cloudflare Durable Objects](https://developers.cloudflare.com/durable-objects)\n- [Drizzle ORM](https://orm.drizzle.team) · [TanStack DB](https://tanstack.com/db) · [Standard Schema](https://standardschema.dev)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirtoz%2Ffullstack-toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffirtoz%2Ffullstack-toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirtoz%2Ffullstack-toolkit/lists"}