{"id":15147711,"url":"https://github.com/exectx/t3-cloudflare","last_synced_at":"2025-10-14T02:17:59.652Z","repository":{"id":212725660,"uuid":"731419129","full_name":"exectx/t3-cloudflare","owner":"exectx","description":"A collection of basic create-t3-app templates compatible with Cloudflare Pages/Workers - (Next.js App Router + Cloudflare Pages + tRPC + Cloudflare D1 + TursoDB + Drizzle)","archived":false,"fork":false,"pushed_at":"2024-11-07T22:51:36.000Z","size":1166,"stargazers_count":72,"open_issues_count":0,"forks_count":15,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-20T15:06:18.998Z","etag":null,"topics":["app-router-nextjs","c3-cli","cloudflare-d1","cloudflare-pages","cloudflare-workers","d1","drizzle","drizzle-orm","edge","next-on-pages","nextjs","nextjs-template","sqlite","starter-template","static-assets","t3","trpc","turso","workers"],"latest_commit_sha":null,"homepage":"https://ct3a.exectx.run/","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/exectx.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-12-14T03:25:57.000Z","updated_at":"2025-05-19T15:31:17.000Z","dependencies_parsed_at":"2023-12-15T22:18:06.149Z","dependency_job_id":"a23d27a9-6104-4cf5-941d-2b8021c15d21","html_url":"https://github.com/exectx/t3-cloudflare","commit_stats":{"total_commits":58,"total_committers":1,"mean_commits":58.0,"dds":0.0,"last_synced_commit":"6bcac89da268fab3f5b38ba7050c8b5c8967210c"},"previous_names":["senabi/t3-cloudflare","van14u/t3-cloudflare","exectx/t3-cloudflare"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/exectx/t3-cloudflare","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exectx%2Ft3-cloudflare","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exectx%2Ft3-cloudflare/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exectx%2Ft3-cloudflare/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exectx%2Ft3-cloudflare/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exectx","download_url":"https://codeload.github.com/exectx/t3-cloudflare/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exectx%2Ft3-cloudflare/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017676,"owners_count":26086125,"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","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"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":["app-router-nextjs","c3-cli","cloudflare-d1","cloudflare-pages","cloudflare-workers","d1","drizzle","drizzle-orm","edge","next-on-pages","nextjs","nextjs-template","sqlite","starter-template","static-assets","t3","trpc","turso","workers"],"created_at":"2024-09-26T13:00:30.226Z","updated_at":"2025-10-14T02:17:59.626Z","avatar_url":"https://github.com/exectx.png","language":"TypeScript","readme":"# T3-App templates - Cloudflare Workers \u0026 Pages\n\nThis is a collection of basic create-t3-app templates designed for compatibility with Cloudflare Workers \u0026 Pages. You can use these templates with the Cloudflare C3 CLI and pnpm as the package manager:\n\n\u003e [!NOTE]\n\u003e Feel free to open an issue or PR if you have better templates\n\n## Live demo\n\nLive demo at https://ct3a.exectx.run/ (cloudflare pages + next-on-pages)\n\n- Generated using `create-t3-app` with the following options: tRPC, drizzle, no auth, tailwind, SQLite. Then modified to support D1\n- D1 instance location: Eastern North America — `enam`\n\n## Templates\n\nD1 template (pages) - [next steps guide](./templates/d1/README.md):\n\n\u003e [!IMPORTANT]\n\u003e After runing the command, follow the instructions below or in the link above to finish setting up your D1 template\n\n```sh\npnpm create cloudflare@latest --template=exectx/t3-cloudflare/templates/d1\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eNext steps... \u003cins\u003eInstructions for finishing setting up your D1 database\u003c/ins\u003e\u003c/summary\u003e\n\nRun the following command to create a D1 Database, then update the `database_id` in `wrangler.toml`. (Cloudflare's D1 [guide](https://developers.cloudflare.com/d1/get-started/))\n\n```sh\npnpx wrangler d1 create \u003cDATABASE-NAME\u003e\n```\n\n### 1. Set Up Database and Run Migrations\n\n\u003e Running drizzle-kit commands for remote databases requires valid cloudflare environment variables ([guide](#3-configure-cloudflare-environment-variables-optional))\n\nOnce you have updated your `wrangler.toml` with the correct `database_id`, follow the instructions below.\n\n\u003cdetails\u003e\n  \u003csummary\u003eUsing Wrangler for \u003ccode\u003elocal\u003c/code\u003e database\u003c/summary\u003e\n\n```sh\npnpm db:generate\npnpm d1:migrate:local\npnpm dev # or pnpm preview\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eUsing Wrangler for \u003ccode\u003eremote\u003c/code\u003e database\u003c/summary\u003e\n  \n  ```sh\n  pnpm db:generate\n  pnpm d1:migrate:remote\n  pnpm dev # or pnpm preview\n  ```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eUsing Drizzle-Kit for \u003ccode\u003elocal\u003c/code\u003e database\u003c/summary\u003e\n  \n  #### Using Migrations\n  ```sh\n  pnpm db:generate\n  pnpm db:migrate:local\n  pnpm dev # or pnpm preview\n  ```\n\n#### Pushing Schema Changes\n\n```sh\npnpm db:push:local\npnpm dev # or pnpm preview\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eUsing Drizzle-Kit for \u003ccode\u003eremote\u003c/code\u003e database \u003cstrong\u003erequires Cloudflare environment variables\u003c/strong\u003e\u003c/summary\u003e \n  \n  #### Using Migrations\n  ```sh\n  pnpm db:generate\n  pnpm db:migrate\n  pnpm dev # or pnpm preview\n  ```\n\n#### Pushing Schema Changes\n\n```sh\npnpm db:push\npnpm dev # or pnpm preview\n```\n\n\u003c/details\u003e\n\n### 2. Deployment\n\nTo deploy to Cloudflare, you can connect your application via cloudflare dashboard (GitHub integration) or run `pnpm deploy`. follow [Cloudflare's Next.js guide](https://developers.cloudflare.com/pages/framework-guides/nextjs/ssr/get-started/#6-deploy-to-cloudflare-pages).\n\n### 3. Configure Cloudflare Environment Variables (Optional)\n\nYou can run migrations using `wrangler d1 migrations ...`, but if you want to use `drizzle-kit` instead, you need to configure your environment variables.\n\n```sh\ncp .dev.vars.example .dev.vars\n```\n\nYou can find `CLOUDFLARE_ACCOUNT_ID`, `CLOUDFLARE_DATABASE_ID`, and `CLOUDFLARE_TOKEN` in the Cloudflare dashboard:\n\n- To get `CLOUDFLARE_ACCOUNT_ID`, go to Workers \u0026 Pages -\u003e Overview -\u003e copy Account ID from the right sidebar.\n- To get `CLOUDFLARE_DATABASE_ID`, open the D1 database you want to connect to and copy the Database ID.\n- To get `CLOUDFLARE_TOKEN`, go to My Profile -\u003e API Tokens and create a token with D1 edit permissions.\n\nNow you can run Drizzle-Kit remote commands such as `db:push`, `db:migrate`, `db:studio`, etc.\n\n\u003c/details\u003e\n\nD1 template ([workers static assets](https://developers.cloudflare.com/workers/static-assets/) \u0026 OpenNext) [next steps guide](./templates/workers-d1/README.md)\n\n\u003e Cloudflare pages \u0026 workers compatibility matrix [here](https://developers.cloudflare.com/workers/static-assets/compatibility-matrix/).\n\n```sh\npnpm create cloudflare@latest --template=exectx/t3-cloudflare/templates/workers-d1\n```\n\nTurso template - [next steps guide](./templates/turso/README.md)\n\n```sh\npnpm create cloudflare@latest --template=exectx/t3-cloudflare/templates/turso\n```\n\nJust tRPC\n\n```sh\npnpm create cloudflare@latest --template=exectx/t3-cloudflare/templates/trpc\n```\n\n## TODO Templates\n\n- [x] T3 + D1 (cf pages)\n- [x] T3 + TursoDB (cf pages)\n- [x] T3 + tRPC (only) (cf pages)\n- [x] T3 + D1 (cf workers)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexectx%2Ft3-cloudflare","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexectx%2Ft3-cloudflare","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexectx%2Ft3-cloudflare/lists"}