create-better-t-stack 3.13.2 → 3.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/dist/cli.mjs +1 -1
  2. package/dist/index.d.mts +29 -33
  3. package/dist/index.mjs +2 -2
  4. package/dist/{src-kvJQuDe_.mjs → src-CSz9J82Z.mjs} +432 -3588
  5. package/dist/virtual.d.mts +4 -0
  6. package/dist/virtual.mjs +4 -0
  7. package/package.json +9 -5
  8. package/templates/addons/biome/biome.json.hbs +0 -96
  9. package/templates/addons/husky/.husky/pre-commit +0 -1
  10. package/templates/addons/pwa/apps/web/next/public/favicon/apple-touch-icon.png +0 -0
  11. package/templates/addons/pwa/apps/web/next/public/favicon/favicon-96x96.png +0 -0
  12. package/templates/addons/pwa/apps/web/next/public/favicon/favicon.svg +0 -6
  13. package/templates/addons/pwa/apps/web/next/public/favicon/site.webmanifest.hbs +0 -21
  14. package/templates/addons/pwa/apps/web/next/public/favicon/web-app-manifest-192x192.png +0 -0
  15. package/templates/addons/pwa/apps/web/next/public/favicon/web-app-manifest-512x512.png +0 -0
  16. package/templates/addons/pwa/apps/web/next/src/app/manifest.ts.hbs +0 -26
  17. package/templates/addons/pwa/apps/web/vite/public/logo.png +0 -0
  18. package/templates/addons/pwa/apps/web/vite/pwa-assets.config.ts.hbs +0 -12
  19. package/templates/addons/ruler/.ruler/bts.md.hbs +0 -142
  20. package/templates/addons/ruler/.ruler/ruler.toml.hbs +0 -80
  21. package/templates/addons/turborepo/turbo.json.hbs +0 -74
  22. package/templates/addons/ultracite/biome.json.hbs +0 -26
  23. package/templates/api/orpc/fullstack/next/src/app/api/rpc/[[...rest]]/route.ts.hbs +0 -50
  24. package/templates/api/orpc/fullstack/tanstack-start/src/routes/api/rpc/$.ts.hbs +0 -58
  25. package/templates/api/orpc/native/utils/orpc.ts.hbs +0 -39
  26. package/templates/api/orpc/server/_gitignore +0 -34
  27. package/templates/api/orpc/server/package.json.hbs +0 -15
  28. package/templates/api/orpc/server/src/context.ts.hbs +0 -148
  29. package/templates/api/orpc/server/src/index.ts.hbs +0 -21
  30. package/templates/api/orpc/server/src/routers/index.ts.hbs +0 -55
  31. package/templates/api/orpc/server/tsconfig.json.hbs +0 -10
  32. package/templates/api/orpc/web/nuxt/app/plugins/orpc.ts.hbs +0 -32
  33. package/templates/api/orpc/web/nuxt/app/plugins/vue-query.ts.hbs +0 -44
  34. package/templates/api/orpc/web/react/base/src/utils/orpc.ts.hbs +0 -113
  35. package/templates/api/orpc/web/solid/src/utils/orpc.ts.hbs +0 -30
  36. package/templates/api/orpc/web/svelte/src/lib/orpc.ts.hbs +0 -30
  37. package/templates/api/trpc/fullstack/next/src/app/api/trpc/[trpc]/route.ts.hbs +0 -14
  38. package/templates/api/trpc/fullstack/tanstack-start/src/routes/api/trpc/$.ts.hbs +0 -22
  39. package/templates/api/trpc/native/utils/trpc.ts.hbs +0 -37
  40. package/templates/api/trpc/server/_gitignore +0 -34
  41. package/templates/api/trpc/server/package.json.hbs +0 -14
  42. package/templates/api/trpc/server/src/context.ts.hbs +0 -148
  43. package/templates/api/trpc/server/src/index.ts.hbs +0 -26
  44. package/templates/api/trpc/server/src/routers/index.ts.hbs +0 -55
  45. package/templates/api/trpc/server/tsconfig.json.hbs +0 -10
  46. package/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs +0 -97
  47. package/templates/auth/better-auth/convex/backend/convex/auth.config.ts.hbs +0 -6
  48. package/templates/auth/better-auth/convex/backend/convex/auth.ts.hbs +0 -68
  49. package/templates/auth/better-auth/convex/backend/convex/http.ts.hbs +0 -12
  50. package/templates/auth/better-auth/convex/backend/convex/privateData.ts.hbs +0 -17
  51. package/templates/auth/better-auth/convex/native/bare/components/sign-in.tsx.hbs +0 -127
  52. package/templates/auth/better-auth/convex/native/bare/components/sign-up.tsx.hbs +0 -138
  53. package/templates/auth/better-auth/convex/native/base/lib/auth-client.ts.hbs +0 -18
  54. package/templates/auth/better-auth/convex/native/unistyles/components/sign-in.tsx.hbs +0 -127
  55. package/templates/auth/better-auth/convex/native/unistyles/components/sign-up.tsx.hbs +0 -145
  56. package/templates/auth/better-auth/convex/native/uniwind/components/sign-in.tsx.hbs +0 -73
  57. package/templates/auth/better-auth/convex/native/uniwind/components/sign-up.tsx.hbs +0 -85
  58. package/templates/auth/better-auth/convex/web/react/next/src/app/api/auth/[...all]/route.ts.hbs +0 -3
  59. package/templates/auth/better-auth/convex/web/react/next/src/app/dashboard/page.tsx.hbs +0 -40
  60. package/templates/auth/better-auth/convex/web/react/next/src/components/sign-in-form.tsx.hbs +0 -129
  61. package/templates/auth/better-auth/convex/web/react/next/src/components/sign-up-form.tsx.hbs +0 -154
  62. package/templates/auth/better-auth/convex/web/react/next/src/components/user-menu.tsx.hbs +0 -48
  63. package/templates/auth/better-auth/convex/web/react/next/src/lib/auth-client.ts.hbs +0 -6
  64. package/templates/auth/better-auth/convex/web/react/next/src/lib/auth-server.ts.hbs +0 -16
  65. package/templates/auth/better-auth/convex/web/react/tanstack-router/src/components/sign-in-form.tsx.hbs +0 -133
  66. package/templates/auth/better-auth/convex/web/react/tanstack-router/src/components/sign-up-form.tsx.hbs +0 -158
  67. package/templates/auth/better-auth/convex/web/react/tanstack-router/src/components/user-menu.tsx.hbs +0 -52
  68. package/templates/auth/better-auth/convex/web/react/tanstack-router/src/lib/auth-client.ts.hbs +0 -11
  69. package/templates/auth/better-auth/convex/web/react/tanstack-router/src/routes/dashboard.tsx.hbs +0 -43
  70. package/templates/auth/better-auth/convex/web/react/tanstack-start/src/components/sign-in-form.tsx.hbs +0 -133
  71. package/templates/auth/better-auth/convex/web/react/tanstack-start/src/components/sign-up-form.tsx.hbs +0 -158
  72. package/templates/auth/better-auth/convex/web/react/tanstack-start/src/components/user-menu.tsx.hbs +0 -47
  73. package/templates/auth/better-auth/convex/web/react/tanstack-start/src/lib/auth-client.ts.hbs +0 -6
  74. package/templates/auth/better-auth/convex/web/react/tanstack-start/src/lib/auth-server.ts.hbs +0 -13
  75. package/templates/auth/better-auth/convex/web/react/tanstack-start/src/routes/api/auth/$.ts.hbs +0 -11
  76. package/templates/auth/better-auth/convex/web/react/tanstack-start/src/routes/dashboard.tsx.hbs +0 -43
  77. package/templates/auth/better-auth/fullstack/next/src/app/api/auth/[...all]/route.ts.hbs +0 -4
  78. package/templates/auth/better-auth/fullstack/tanstack-start/src/routes/api/auth/$.ts.hbs +0 -15
  79. package/templates/auth/better-auth/native/bare/app/(drawer)/index.tsx.hbs +0 -186
  80. package/templates/auth/better-auth/native/bare/components/sign-in.tsx.hbs +0 -131
  81. package/templates/auth/better-auth/native/bare/components/sign-up.tsx.hbs +0 -150
  82. package/templates/auth/better-auth/native/base/lib/auth-client.ts.hbs +0 -16
  83. package/templates/auth/better-auth/native/unistyles/app/(drawer)/index.tsx.hbs +0 -187
  84. package/templates/auth/better-auth/native/unistyles/components/sign-in.tsx.hbs +0 -139
  85. package/templates/auth/better-auth/native/unistyles/components/sign-up.tsx.hbs +0 -157
  86. package/templates/auth/better-auth/native/uniwind/app/(drawer)/index.tsx.hbs +0 -123
  87. package/templates/auth/better-auth/native/uniwind/components/sign-in.tsx.hbs +0 -87
  88. package/templates/auth/better-auth/native/uniwind/components/sign-up.tsx.hbs +0 -128
  89. package/templates/auth/better-auth/server/base/_gitignore +0 -34
  90. package/templates/auth/better-auth/server/base/package.json.hbs +0 -14
  91. package/templates/auth/better-auth/server/base/src/index.ts.hbs +0 -304
  92. package/templates/auth/better-auth/server/base/tsconfig.json.hbs +0 -10
  93. package/templates/auth/better-auth/server/db/drizzle/mysql/src/schema/auth.ts.hbs +0 -100
  94. package/templates/auth/better-auth/server/db/drizzle/postgres/src/schema/auth.ts.hbs +0 -93
  95. package/templates/auth/better-auth/server/db/drizzle/sqlite/src/schema/auth.ts.hbs +0 -107
  96. package/templates/auth/better-auth/server/db/mongoose/mongodb/src/models/auth.model.ts.hbs +0 -68
  97. package/templates/auth/better-auth/server/db/prisma/mongodb/prisma/schema/auth.prisma.hbs +0 -62
  98. package/templates/auth/better-auth/server/db/prisma/mysql/prisma/schema/auth.prisma.hbs +0 -62
  99. package/templates/auth/better-auth/server/db/prisma/postgres/prisma/schema/auth.prisma.hbs +0 -62
  100. package/templates/auth/better-auth/server/db/prisma/sqlite/prisma/schema/auth.prisma.hbs +0 -62
  101. package/templates/auth/better-auth/web/nuxt/app/components/SignInForm.vue.hbs +0 -82
  102. package/templates/auth/better-auth/web/nuxt/app/components/SignUpForm.vue.hbs +0 -91
  103. package/templates/auth/better-auth/web/nuxt/app/components/UserMenu.vue.hbs +0 -42
  104. package/templates/auth/better-auth/web/nuxt/app/middleware/auth.ts.hbs +0 -14
  105. package/templates/auth/better-auth/web/nuxt/app/pages/dashboard.vue.hbs +0 -99
  106. package/templates/auth/better-auth/web/nuxt/app/pages/login.vue.hbs +0 -27
  107. package/templates/auth/better-auth/web/nuxt/app/plugins/auth-client.ts.hbs +0 -21
  108. package/templates/auth/better-auth/web/react/base/src/lib/auth-client.ts.hbs +0 -16
  109. package/templates/auth/better-auth/web/react/next/src/app/dashboard/dashboard.tsx.hbs +0 -60
  110. package/templates/auth/better-auth/web/react/next/src/app/dashboard/page.tsx.hbs +0 -42
  111. package/templates/auth/better-auth/web/react/next/src/app/login/page.tsx.hbs +0 -16
  112. package/templates/auth/better-auth/web/react/next/src/components/sign-in-form.tsx.hbs +0 -135
  113. package/templates/auth/better-auth/web/react/next/src/components/sign-up-form.tsx.hbs +0 -160
  114. package/templates/auth/better-auth/web/react/next/src/components/user-menu.tsx.hbs +0 -62
  115. package/templates/auth/better-auth/web/react/react-router/src/components/sign-in-form.tsx.hbs +0 -135
  116. package/templates/auth/better-auth/web/react/react-router/src/components/sign-up-form.tsx.hbs +0 -160
  117. package/templates/auth/better-auth/web/react/react-router/src/components/user-menu.tsx.hbs +0 -61
  118. package/templates/auth/better-auth/web/react/react-router/src/routes/dashboard.tsx.hbs +0 -80
  119. package/templates/auth/better-auth/web/react/react-router/src/routes/login.tsx.hbs +0 -13
  120. package/templates/auth/better-auth/web/react/tanstack-router/src/components/sign-in-form.tsx.hbs +0 -135
  121. package/templates/auth/better-auth/web/react/tanstack-router/src/components/sign-up-form.tsx.hbs +0 -160
  122. package/templates/auth/better-auth/web/react/tanstack-router/src/components/user-menu.tsx.hbs +0 -63
  123. package/templates/auth/better-auth/web/react/tanstack-router/src/routes/dashboard.tsx.hbs +0 -71
  124. package/templates/auth/better-auth/web/react/tanstack-router/src/routes/login.tsx.hbs +0 -18
  125. package/templates/auth/better-auth/web/react/tanstack-start/src/components/sign-in-form.tsx.hbs +0 -135
  126. package/templates/auth/better-auth/web/react/tanstack-start/src/components/sign-up-form.tsx.hbs +0 -160
  127. package/templates/auth/better-auth/web/react/tanstack-start/src/components/user-menu.tsx.hbs +0 -63
  128. package/templates/auth/better-auth/web/react/tanstack-start/src/functions/get-user.ts.hbs +0 -6
  129. package/templates/auth/better-auth/web/react/tanstack-start/src/middleware/auth.ts.hbs +0 -31
  130. package/templates/auth/better-auth/web/react/tanstack-start/src/routes/dashboard.tsx.hbs +0 -84
  131. package/templates/auth/better-auth/web/react/tanstack-start/src/routes/login.tsx.hbs +0 -18
  132. package/templates/auth/better-auth/web/solid/src/components/sign-in-form.tsx.hbs +0 -124
  133. package/templates/auth/better-auth/web/solid/src/components/sign-up-form.tsx.hbs +0 -148
  134. package/templates/auth/better-auth/web/solid/src/components/user-menu.tsx.hbs +0 -55
  135. package/templates/auth/better-auth/web/solid/src/lib/auth-client.ts.hbs +0 -12
  136. package/templates/auth/better-auth/web/solid/src/routes/dashboard.tsx.hbs +0 -67
  137. package/templates/auth/better-auth/web/solid/src/routes/login.tsx.hbs +0 -23
  138. package/templates/auth/better-auth/web/svelte/src/components/SignInForm.svelte.hbs +0 -109
  139. package/templates/auth/better-auth/web/svelte/src/components/SignUpForm.svelte.hbs +0 -142
  140. package/templates/auth/better-auth/web/svelte/src/components/UserMenu.svelte.hbs +0 -52
  141. package/templates/auth/better-auth/web/svelte/src/lib/auth-client.ts.hbs +0 -12
  142. package/templates/auth/better-auth/web/svelte/src/routes/dashboard/+page.svelte.hbs +0 -59
  143. package/templates/auth/better-auth/web/svelte/src/routes/login/+page.svelte.hbs +0 -12
  144. package/templates/auth/clerk/convex/backend/convex/auth.config.ts.hbs +0 -12
  145. package/templates/auth/clerk/convex/backend/convex/privateData.ts.hbs +0 -16
  146. package/templates/auth/clerk/convex/native/base/app/(auth)/_layout.tsx.hbs +0 -12
  147. package/templates/auth/clerk/convex/native/base/app/(auth)/sign-in.tsx.hbs +0 -67
  148. package/templates/auth/clerk/convex/native/base/app/(auth)/sign-up.tsx.hbs +0 -110
  149. package/templates/auth/clerk/convex/native/base/components/sign-out-button.tsx.hbs +0 -27
  150. package/templates/auth/clerk/convex/web/react/next/src/app/dashboard/page.tsx.hbs +0 -29
  151. package/templates/auth/clerk/convex/web/react/next/src/middleware.ts.hbs +0 -12
  152. package/templates/auth/clerk/convex/web/react/react-router/src/routes/dashboard.tsx.hbs +0 -32
  153. package/templates/auth/clerk/convex/web/react/tanstack-router/src/routes/dashboard.tsx.hbs +0 -37
  154. package/templates/auth/clerk/convex/web/react/tanstack-start/src/routes/dashboard.tsx.hbs +0 -37
  155. package/templates/auth/clerk/convex/web/react/tanstack-start/src/start.ts.hbs +0 -8
  156. package/templates/backend/convex/packages/backend/_gitignore +0 -2
  157. package/templates/backend/convex/packages/backend/convex/README.md +0 -90
  158. package/templates/backend/convex/packages/backend/convex/convex.config.ts.hbs +0 -17
  159. package/templates/backend/convex/packages/backend/convex/healthCheck.ts.hbs +0 -7
  160. package/templates/backend/convex/packages/backend/convex/schema.ts.hbs +0 -11
  161. package/templates/backend/convex/packages/backend/convex/tsconfig.json.hbs +0 -25
  162. package/templates/backend/convex/packages/backend/package.json.hbs +0 -15
  163. package/templates/backend/server/base/_gitignore +0 -55
  164. package/templates/backend/server/base/package.json.hbs +0 -17
  165. package/templates/backend/server/base/tsconfig.json.hbs +0 -13
  166. package/templates/backend/server/base/tsdown.config.ts.hbs +0 -9
  167. package/templates/backend/server/elysia/src/index.ts.hbs +0 -122
  168. package/templates/backend/server/express/src/index.ts.hbs +0 -126
  169. package/templates/backend/server/fastify/src/index.ts.hbs +0 -187
  170. package/templates/backend/server/hono/src/index.ts.hbs +0 -171
  171. package/templates/base/_gitignore +0 -50
  172. package/templates/base/package.json.hbs +0 -10
  173. package/templates/base/tsconfig.json.hbs +0 -3
  174. package/templates/db/base/_gitignore +0 -35
  175. package/templates/db/base/package.json.hbs +0 -14
  176. package/templates/db/base/tsconfig.json.hbs +0 -10
  177. package/templates/db/drizzle/base/src/schema/index.ts.hbs +0 -7
  178. package/templates/db/drizzle/mysql/drizzle.config.ts.hbs +0 -19
  179. package/templates/db/drizzle/mysql/src/index.ts.hbs +0 -54
  180. package/templates/db/drizzle/postgres/drizzle.config.ts.hbs +0 -19
  181. package/templates/db/drizzle/postgres/src/index.ts.hbs +0 -44
  182. package/templates/db/drizzle/sqlite/drizzle.config.ts.hbs +0 -28
  183. package/templates/db/drizzle/sqlite/src/index.ts.hbs +0 -39
  184. package/templates/db/mongoose/mongodb/src/index.ts.hbs +0 -10
  185. package/templates/db/prisma/mongodb/prisma/schema/schema.prisma.hbs +0 -19
  186. package/templates/db/prisma/mongodb/prisma.config.ts.hbs +0 -18
  187. package/templates/db/prisma/mongodb/src/index.ts.hbs +0 -5
  188. package/templates/db/prisma/mysql/prisma/schema/schema.prisma.hbs +0 -21
  189. package/templates/db/prisma/mysql/prisma.config.ts.hbs +0 -21
  190. package/templates/db/prisma/mysql/src/index.ts.hbs +0 -55
  191. package/templates/db/prisma/postgres/prisma/schema/schema.prisma.hbs +0 -21
  192. package/templates/db/prisma/postgres/prisma.config.ts.hbs +0 -21
  193. package/templates/db/prisma/postgres/src/index.ts.hbs +0 -69
  194. package/templates/db/prisma/sqlite/prisma/schema/schema.prisma.hbs +0 -18
  195. package/templates/db/prisma/sqlite/prisma.config.ts.hbs +0 -25
  196. package/templates/db/prisma/sqlite/src/index.ts.hbs +0 -25
  197. package/templates/db-setup/docker-compose/mongodb/docker-compose.yml.hbs +0 -23
  198. package/templates/db-setup/docker-compose/mysql/docker-compose.yml.hbs +0 -24
  199. package/templates/db-setup/docker-compose/postgres/docker-compose.yml.hbs +0 -23
  200. package/templates/examples/ai/convex/packages/backend/convex/agent.ts.hbs +0 -9
  201. package/templates/examples/ai/convex/packages/backend/convex/chat.ts.hbs +0 -67
  202. package/templates/examples/ai/fullstack/next/src/app/api/ai/route.ts.hbs +0 -20
  203. package/templates/examples/ai/fullstack/tanstack-start/src/routes/api/ai/$.ts.hbs +0 -36
  204. package/templates/examples/ai/native/bare/app/(drawer)/ai.tsx.hbs +0 -586
  205. package/templates/examples/ai/native/bare/polyfills.js +0 -25
  206. package/templates/examples/ai/native/unistyles/app/(drawer)/ai.tsx.hbs +0 -588
  207. package/templates/examples/ai/native/unistyles/polyfills.js +0 -22
  208. package/templates/examples/ai/native/uniwind/app/(drawer)/ai.tsx.hbs +0 -331
  209. package/templates/examples/ai/native/uniwind/polyfills.js +0 -22
  210. package/templates/examples/ai/web/nuxt/app/pages/ai.vue.hbs +0 -54
  211. package/templates/examples/ai/web/react/next/src/app/ai/page.tsx.hbs +0 -267
  212. package/templates/examples/ai/web/react/react-router/src/routes/ai.tsx.hbs +0 -235
  213. package/templates/examples/ai/web/react/tanstack-router/src/routes/ai.tsx.hbs +0 -242
  214. package/templates/examples/ai/web/react/tanstack-start/src/routes/ai.tsx.hbs +0 -243
  215. package/templates/examples/ai/web/svelte/src/routes/ai/+page.svelte.hbs +0 -107
  216. package/templates/examples/todo/convex/packages/backend/convex/todos.ts.hbs +0 -42
  217. package/templates/examples/todo/native/bare/app/(drawer)/todos.tsx.hbs +0 -521
  218. package/templates/examples/todo/native/unistyles/app/(drawer)/todos.tsx.hbs +0 -340
  219. package/templates/examples/todo/native/uniwind/app/(drawer)/todos.tsx.hbs +0 -282
  220. package/templates/examples/todo/server/drizzle/base/src/routers/todo.ts.hbs +0 -75
  221. package/templates/examples/todo/server/drizzle/mysql/src/schema/todo.ts +0 -7
  222. package/templates/examples/todo/server/drizzle/postgres/src/schema/todo.ts +0 -7
  223. package/templates/examples/todo/server/drizzle/sqlite/src/schema/todo.ts +0 -7
  224. package/templates/examples/todo/server/mongoose/base/src/routers/todo.ts.hbs +0 -66
  225. package/templates/examples/todo/server/mongoose/mongodb/src/models/todo.model.ts.hbs +0 -24
  226. package/templates/examples/todo/server/prisma/base/src/routers/todo.ts.hbs +0 -116
  227. package/templates/examples/todo/server/prisma/mongodb/prisma/schema/todo.prisma.hbs +0 -7
  228. package/templates/examples/todo/server/prisma/mysql/prisma/schema/todo.prisma.hbs +0 -7
  229. package/templates/examples/todo/server/prisma/postgres/prisma/schema/todo.prisma.hbs +0 -7
  230. package/templates/examples/todo/server/prisma/sqlite/prisma/schema/todo.prisma.hbs +0 -7
  231. package/templates/examples/todo/web/nuxt/app/pages/todos.vue.hbs +0 -220
  232. package/templates/examples/todo/web/react/next/src/app/todos/page.tsx.hbs +0 -245
  233. package/templates/examples/todo/web/react/react-router/src/routes/todos.tsx.hbs +0 -242
  234. package/templates/examples/todo/web/react/tanstack-router/src/routes/todos.tsx.hbs +0 -247
  235. package/templates/examples/todo/web/react/tanstack-start/src/routes/todos.tsx.hbs +0 -272
  236. package/templates/examples/todo/web/solid/src/routes/todos.tsx.hbs +0 -132
  237. package/templates/examples/todo/web/svelte/src/routes/todos/+page.svelte.hbs +0 -317
  238. package/templates/extras/_npmrc.hbs +0 -5
  239. package/templates/extras/bunfig.toml.hbs +0 -6
  240. package/templates/extras/pnpm-workspace.yaml +0 -3
  241. package/templates/frontend/native/bare/_gitignore +0 -18
  242. package/templates/frontend/native/bare/app/(drawer)/(tabs)/_layout.tsx.hbs +0 -41
  243. package/templates/frontend/native/bare/app/(drawer)/(tabs)/index.tsx.hbs +0 -43
  244. package/templates/frontend/native/bare/app/(drawer)/(tabs)/two.tsx.hbs +0 -43
  245. package/templates/frontend/native/bare/app/(drawer)/_layout.tsx.hbs +0 -90
  246. package/templates/frontend/native/bare/app/(drawer)/index.tsx.hbs +0 -234
  247. package/templates/frontend/native/bare/app/+not-found.tsx.hbs +0 -65
  248. package/templates/frontend/native/bare/app/_layout.tsx.hbs +0 -165
  249. package/templates/frontend/native/bare/app/modal.tsx.hbs +0 -34
  250. package/templates/frontend/native/bare/app.json.hbs +0 -50
  251. package/templates/frontend/native/bare/components/container.tsx.hbs +0 -25
  252. package/templates/frontend/native/bare/components/header-button.tsx.hbs +0 -47
  253. package/templates/frontend/native/bare/components/tabbar-icon.tsx.hbs +0 -9
  254. package/templates/frontend/native/bare/lib/android-navigation-bar.tsx.hbs +0 -12
  255. package/templates/frontend/native/bare/lib/constants.ts.hbs +0 -19
  256. package/templates/frontend/native/bare/lib/use-color-scheme.ts.hbs +0 -20
  257. package/templates/frontend/native/bare/metro.config.js.hbs +0 -9
  258. package/templates/frontend/native/bare/package.json.hbs +0 -51
  259. package/templates/frontend/native/bare/tsconfig.json.hbs +0 -11
  260. package/templates/frontend/native/base/assets/images/android-icon-background.png +0 -0
  261. package/templates/frontend/native/base/assets/images/android-icon-foreground.png +0 -0
  262. package/templates/frontend/native/base/assets/images/android-icon-monochrome.png +0 -0
  263. package/templates/frontend/native/base/assets/images/favicon.png +0 -0
  264. package/templates/frontend/native/base/assets/images/icon.png +0 -0
  265. package/templates/frontend/native/base/assets/images/partial-react-logo.png +0 -0
  266. package/templates/frontend/native/base/assets/images/react-logo.png +0 -0
  267. package/templates/frontend/native/base/assets/images/react-logo@2x.png +0 -0
  268. package/templates/frontend/native/base/assets/images/react-logo@3x.png +0 -0
  269. package/templates/frontend/native/base/assets/images/splash-icon.png +0 -0
  270. package/templates/frontend/native/unistyles/_gitignore +0 -24
  271. package/templates/frontend/native/unistyles/app/(drawer)/(tabs)/_layout.tsx.hbs +0 -39
  272. package/templates/frontend/native/unistyles/app/(drawer)/(tabs)/index.tsx.hbs +0 -37
  273. package/templates/frontend/native/unistyles/app/(drawer)/(tabs)/two.tsx.hbs +0 -37
  274. package/templates/frontend/native/unistyles/app/(drawer)/_layout.tsx.hbs +0 -87
  275. package/templates/frontend/native/unistyles/app/(drawer)/index.tsx.hbs +0 -333
  276. package/templates/frontend/native/unistyles/app/+not-found.tsx.hbs +0 -65
  277. package/templates/frontend/native/unistyles/app/_layout.tsx.hbs +0 -169
  278. package/templates/frontend/native/unistyles/app/modal.tsx.hbs +0 -33
  279. package/templates/frontend/native/unistyles/app.json.hbs +0 -49
  280. package/templates/frontend/native/unistyles/babel.config.js.hbs +0 -21
  281. package/templates/frontend/native/unistyles/breakpoints.ts.hbs +0 -9
  282. package/templates/frontend/native/unistyles/components/container.tsx.hbs +0 -15
  283. package/templates/frontend/native/unistyles/components/header-button.tsx.hbs +0 -36
  284. package/templates/frontend/native/unistyles/components/tabbar-icon.tsx.hbs +0 -8
  285. package/templates/frontend/native/unistyles/index.js.hbs +0 -2
  286. package/templates/frontend/native/unistyles/metro.config.js.hbs +0 -5
  287. package/templates/frontend/native/unistyles/package.json.hbs +0 -51
  288. package/templates/frontend/native/unistyles/theme.ts.hbs +0 -98
  289. package/templates/frontend/native/unistyles/tsconfig.json.hbs +0 -12
  290. package/templates/frontend/native/unistyles/unistyles.ts.hbs +0 -27
  291. package/templates/frontend/native/uniwind/_gitignore +0 -21
  292. package/templates/frontend/native/uniwind/app/(drawer)/(tabs)/_layout.tsx.hbs +0 -46
  293. package/templates/frontend/native/uniwind/app/(drawer)/(tabs)/index.tsx.hbs +0 -15
  294. package/templates/frontend/native/uniwind/app/(drawer)/(tabs)/two.tsx.hbs +0 -15
  295. package/templates/frontend/native/uniwind/app/(drawer)/_layout.tsx.hbs +0 -91
  296. package/templates/frontend/native/uniwind/app/(drawer)/index.tsx.hbs +0 -191
  297. package/templates/frontend/native/uniwind/app/+not-found.tsx.hbs +0 -27
  298. package/templates/frontend/native/uniwind/app/_layout.tsx.hbs +0 -132
  299. package/templates/frontend/native/uniwind/app/modal.tsx.hbs +0 -37
  300. package/templates/frontend/native/uniwind/app.json.hbs +0 -19
  301. package/templates/frontend/native/uniwind/components/container.tsx.hbs +0 -33
  302. package/templates/frontend/native/uniwind/components/theme-toggle.tsx.hbs +0 -35
  303. package/templates/frontend/native/uniwind/contexts/app-theme-context.tsx.hbs +0 -62
  304. package/templates/frontend/native/uniwind/global.css +0 -5
  305. package/templates/frontend/native/uniwind/metro.config.js.hbs +0 -13
  306. package/templates/frontend/native/uniwind/package.json.hbs +0 -54
  307. package/templates/frontend/native/uniwind/tsconfig.json.hbs +0 -14
  308. package/templates/frontend/nuxt/_gitignore +0 -27
  309. package/templates/frontend/nuxt/app/app.config.ts.hbs +0 -15
  310. package/templates/frontend/nuxt/app/app.vue.hbs +0 -17
  311. package/templates/frontend/nuxt/app/assets/css/main.css +0 -2
  312. package/templates/frontend/nuxt/app/components/Header.vue.hbs +0 -40
  313. package/templates/frontend/nuxt/app/layouts/default.vue.hbs +0 -10
  314. package/templates/frontend/nuxt/app/pages/index.vue.hbs +0 -97
  315. package/templates/frontend/nuxt/nuxt.config.ts.hbs +0 -29
  316. package/templates/frontend/nuxt/package.json.hbs +0 -24
  317. package/templates/frontend/nuxt/public/favicon.ico +0 -0
  318. package/templates/frontend/nuxt/public/robots.txt +0 -2
  319. package/templates/frontend/nuxt/server/tsconfig.json +0 -3
  320. package/templates/frontend/nuxt/tsconfig.json.hbs +0 -18
  321. package/templates/frontend/react/next/next-env.d.ts.hbs +0 -5
  322. package/templates/frontend/react/next/next.config.ts.hbs +0 -22
  323. package/templates/frontend/react/next/package.json.hbs +0 -34
  324. package/templates/frontend/react/next/postcss.config.mjs.hbs +0 -5
  325. package/templates/frontend/react/next/src/app/favicon.ico +0 -0
  326. package/templates/frontend/react/next/src/app/layout.tsx.hbs +0 -76
  327. package/templates/frontend/react/next/src/app/page.tsx.hbs +0 -79
  328. package/templates/frontend/react/next/src/components/mode-toggle.tsx.hbs +0 -37
  329. package/templates/frontend/react/next/src/components/providers.tsx.hbs +0 -89
  330. package/templates/frontend/react/next/src/components/theme-provider.tsx.hbs +0 -11
  331. package/templates/frontend/react/next/tsconfig.json.hbs +0 -41
  332. package/templates/frontend/react/react-router/package.json.hbs +0 -42
  333. package/templates/frontend/react/react-router/public/favicon.ico +0 -0
  334. package/templates/frontend/react/react-router/react-router.config.ts +0 -6
  335. package/templates/frontend/react/react-router/src/components/mode-toggle.tsx.hbs +0 -29
  336. package/templates/frontend/react/react-router/src/components/theme-provider.tsx.hbs +0 -11
  337. package/templates/frontend/react/react-router/src/root.tsx.hbs +0 -190
  338. package/templates/frontend/react/react-router/src/routes/_index.tsx.hbs +0 -85
  339. package/templates/frontend/react/react-router/src/routes.ts +0 -4
  340. package/templates/frontend/react/react-router/tsconfig.json.hbs +0 -27
  341. package/templates/frontend/react/react-router/vite.config.ts.hbs +0 -12
  342. package/templates/frontend/react/tanstack-router/index.html.hbs +0 -13
  343. package/templates/frontend/react/tanstack-router/package.json.hbs +0 -41
  344. package/templates/frontend/react/tanstack-router/src/components/mode-toggle.tsx.hbs +0 -29
  345. package/templates/frontend/react/tanstack-router/src/components/theme-provider.tsx.hbs +0 -11
  346. package/templates/frontend/react/tanstack-router/src/main.tsx.hbs +0 -90
  347. package/templates/frontend/react/tanstack-router/src/routes/__root.tsx.hbs +0 -103
  348. package/templates/frontend/react/tanstack-router/src/routes/index.tsx.hbs +0 -85
  349. package/templates/frontend/react/tanstack-router/tsconfig.json.hbs +0 -18
  350. package/templates/frontend/react/tanstack-router/vite.config.ts.hbs +0 -21
  351. package/templates/frontend/react/tanstack-start/package.json.hbs +0 -43
  352. package/templates/frontend/react/tanstack-start/public/robots.txt +0 -3
  353. package/templates/frontend/react/tanstack-start/src/router.tsx.hbs +0 -144
  354. package/templates/frontend/react/tanstack-start/src/routes/__root.tsx.hbs +0 -208
  355. package/templates/frontend/react/tanstack-start/src/routes/index.tsx.hbs +0 -85
  356. package/templates/frontend/react/tanstack-start/tsconfig.json.hbs +0 -28
  357. package/templates/frontend/react/tanstack-start/vite.config.ts.hbs +0 -22
  358. package/templates/frontend/react/web-base/_gitignore +0 -60
  359. package/templates/frontend/react/web-base/components.json +0 -24
  360. package/templates/frontend/react/web-base/src/components/header.tsx.hbs +0 -78
  361. package/templates/frontend/react/web-base/src/components/loader.tsx.hbs +0 -9
  362. package/templates/frontend/react/web-base/src/components/ui/button.tsx.hbs +0 -57
  363. package/templates/frontend/react/web-base/src/components/ui/card.tsx.hbs +0 -103
  364. package/templates/frontend/react/web-base/src/components/ui/checkbox.tsx.hbs +0 -26
  365. package/templates/frontend/react/web-base/src/components/ui/dropdown-menu.tsx.hbs +0 -262
  366. package/templates/frontend/react/web-base/src/components/ui/input.tsx.hbs +0 -20
  367. package/templates/frontend/react/web-base/src/components/ui/label.tsx.hbs +0 -20
  368. package/templates/frontend/react/web-base/src/components/ui/skeleton.tsx.hbs +0 -13
  369. package/templates/frontend/react/web-base/src/components/ui/sonner.tsx.hbs +0 -44
  370. package/templates/frontend/react/web-base/src/index.css.hbs +0 -131
  371. package/templates/frontend/react/web-base/src/lib/utils.ts.hbs +0 -6
  372. package/templates/frontend/solid/_gitignore +0 -11
  373. package/templates/frontend/solid/index.html +0 -13
  374. package/templates/frontend/solid/package.json.hbs +0 -24
  375. package/templates/frontend/solid/public/robots.txt +0 -3
  376. package/templates/frontend/solid/src/components/header.tsx.hbs +0 -38
  377. package/templates/frontend/solid/src/components/loader.tsx +0 -9
  378. package/templates/frontend/solid/src/main.tsx.hbs +0 -41
  379. package/templates/frontend/solid/src/routes/__root.tsx.hbs +0 -34
  380. package/templates/frontend/solid/src/routes/index.tsx.hbs +0 -72
  381. package/templates/frontend/solid/src/styles.css +0 -5
  382. package/templates/frontend/solid/tsconfig.json.hbs +0 -29
  383. package/templates/frontend/solid/vite.config.ts.hbs +0 -21
  384. package/templates/frontend/svelte/_gitignore +0 -24
  385. package/templates/frontend/svelte/_npmrc +0 -1
  386. package/templates/frontend/svelte/package.json.hbs +0 -27
  387. package/templates/frontend/svelte/src/app.css +0 -5
  388. package/templates/frontend/svelte/src/app.d.ts +0 -13
  389. package/templates/frontend/svelte/src/app.html +0 -12
  390. package/templates/frontend/svelte/src/components/Header.svelte.hbs +0 -40
  391. package/templates/frontend/svelte/src/lib/index.ts +0 -2
  392. package/templates/frontend/svelte/src/routes/+layout.svelte.hbs +0 -54
  393. package/templates/frontend/svelte/src/routes/+page.svelte.hbs +0 -92
  394. package/templates/frontend/svelte/static/favicon.png +0 -0
  395. package/templates/frontend/svelte/svelte.config.js.hbs +0 -18
  396. package/templates/frontend/svelte/tsconfig.json.hbs +0 -19
  397. package/templates/frontend/svelte/vite.config.ts.hbs +0 -7
  398. package/templates/packages/config/package.json.hbs +0 -5
  399. package/templates/packages/config/tsconfig.base.json.hbs +0 -33
  400. package/templates/packages/env/env.d.ts.hbs +0 -16
  401. package/templates/packages/env/package.json.hbs +0 -7
  402. package/templates/packages/env/src/native.ts.hbs +0 -21
  403. package/templates/packages/env/src/server.ts.hbs +0 -39
  404. package/templates/packages/env/src/web.ts.hbs +0 -98
  405. package/templates/packages/env/tsconfig.json.hbs +0 -3
  406. package/templates/packages/infra/alchemy.run.ts.hbs +0 -271
  407. package/templates/packages/infra/package.json.hbs +0 -10
  408. package/templates/payments/polar/server/base/src/lib/payments.ts.hbs +0 -7
  409. package/templates/payments/polar/web/nuxt/app/pages/success.vue.hbs +0 -11
  410. package/templates/payments/polar/web/react/next/src/app/success/page.tsx.hbs +0 -15
  411. package/templates/payments/polar/web/react/react-router/src/routes/success.tsx.hbs +0 -13
  412. package/templates/payments/polar/web/react/tanstack-router/src/routes/success.tsx.hbs +0 -19
  413. package/templates/payments/polar/web/react/tanstack-start/src/functions/get-payment.ts.hbs +0 -15
  414. package/templates/payments/polar/web/react/tanstack-start/src/routes/success.tsx.hbs +0 -19
  415. package/templates/payments/polar/web/solid/src/routes/success.tsx.hbs +0 -23
  416. package/templates/payments/polar/web/svelte/src/routes/success/+page.svelte.hbs +0 -12
  417. /package/dist/{chunk-Dt3mZKp0.mjs → chunk-DPg_XC7m.mjs} +0 -0
@@ -1,52 +0,0 @@
1
- <script lang="ts">
2
- import { authClient } from '$lib/auth-client';
3
- import { goto } from '$app/navigation';
4
-
5
- const sessionQuery = authClient.useSession();
6
-
7
- async function handleSignOut() {
8
- await authClient.signOut({
9
- fetchOptions: {
10
- onSuccess: () => {
11
- goto('/');
12
- },
13
- onError: (error) => {
14
- console.error('Sign out failed:', error);
15
- }
16
- }
17
- });
18
- }
19
-
20
- function goToLogin() {
21
- goto('/login');
22
- }
23
-
24
- </script>
25
-
26
- <div class="relative">
27
- {#if $sessionQuery.isPending}
28
- <div class="h-8 w-24 animate-pulse rounded bg-neutral-700"></div>
29
- {:else if $sessionQuery.data?.user}
30
- {@const user = $sessionQuery.data.user}
31
- <div class="flex items-center gap-3">
32
- <span class="text-sm text-neutral-300 hidden sm:inline" title={user.email}>
33
- {user.name || user.email?.split('@')[0] || 'User'}
34
- </span>
35
- <button
36
- onclick={handleSignOut}
37
- class="rounded px-3 py-1 text-sm bg-red-600 hover:bg-red-700 text-white transition-colors"
38
- >
39
- Sign Out
40
- </button>
41
- </div>
42
- {:else}
43
- <div class="flex items-center gap-2">
44
- <button
45
- onclick={goToLogin}
46
- class="rounded px-3 py-1 text-sm bg-indigo-600 hover:bg-indigo-700 text-white transition-colors"
47
- >
48
- Sign In
49
- </button>
50
- </div>
51
- {/if}
52
- </div>
@@ -1,12 +0,0 @@
1
- import { PUBLIC_SERVER_URL } from "$env/static/public";
2
- import { createAuthClient } from "better-auth/svelte";
3
- {{#if (eq payments "polar")}}
4
- import { polarClient } from "@polar-sh/better-auth";
5
- {{/if}}
6
-
7
- export const authClient = createAuthClient({
8
- baseURL: PUBLIC_SERVER_URL,
9
- {{#if (eq payments "polar")}}
10
- plugins: [polarClient()]
11
- {{/if}}
12
- });
@@ -1,59 +0,0 @@
1
- <script lang="ts">
2
- import { goto } from '$app/navigation';
3
- import { authClient } from '$lib/auth-client';
4
- {{#if (eq api "orpc")}}
5
- import { orpc } from '$lib/orpc';
6
- import { createQuery } from '@tanstack/svelte-query';
7
- {{/if}}
8
- {{#if (eq payments "polar")}}
9
- let customerState = $state<{ activeSubscriptions?: unknown[] } | null>(null);
10
- {{/if}}
11
-
12
- const sessionQuery = authClient.useSession();
13
-
14
- {{#if (eq api "orpc")}}
15
- const privateDataQuery = createQuery(orpc.privateData.queryOptions());
16
- {{/if}}
17
-
18
- $effect(() => {
19
- if (!$sessionQuery.isPending && !$sessionQuery.data) {
20
- goto('/login');
21
- }
22
- });
23
-
24
- {{#if (eq payments "polar")}}
25
- $effect(() => {
26
- if ($sessionQuery.data) {
27
- authClient.customer.state().then(({ data }) => {
28
- customerState = data;
29
- });
30
- }
31
- });
32
- {{/if}}
33
- </script>
34
-
35
- {#if $sessionQuery.isPending}
36
- <div>Loading...</div>
37
- {:else if !$sessionQuery.data}
38
- <div>Redirecting to login...</div>
39
- {:else}
40
- <div>
41
- <h1>Dashboard</h1>
42
- <p>Welcome {$sessionQuery.data.user.name}</p>
43
- {{#if (eq api "orpc")}}
44
- <p>API: {$privateDataQuery.data?.message}</p>
45
- {{/if}}
46
- {{#if (eq payments "polar")}}
47
- <p>Plan: {customerState?.activeSubscriptions?.length > 0 ? "Pro" : "Free"}</p>
48
- {#if customerState?.activeSubscriptions?.length > 0}
49
- <button onclick={async () => await authClient.customer.portal()}>
50
- Manage Subscription
51
- </button>
52
- {:else}
53
- <button onclick={async () => await authClient.checkout({ slug: "pro" })}>
54
- Upgrade to Pro
55
- </button>
56
- {/if}
57
- {{/if}}
58
- </div>
59
- {/if}
@@ -1,12 +0,0 @@
1
- <script lang="ts">
2
- import SignInForm from '../../components/SignInForm.svelte';
3
- import SignUpForm from '../../components/SignUpForm.svelte';
4
-
5
- let showSignIn = $state(true);
6
- </script>
7
-
8
- {#if showSignIn}
9
- <SignInForm switchToSignUp={() => showSignIn = false} />
10
- {:else}
11
- <SignUpForm switchToSignIn={() => showSignIn = true} />
12
- {/if}
@@ -1,12 +0,0 @@
1
- export default {
2
- providers: [
3
- {
4
- // Replace with your own Clerk Issuer URL from your "convex" JWT template
5
- // or with `process.env.CLERK_JWT_ISSUER_DOMAIN`
6
- // and configure CLERK_JWT_ISSUER_DOMAIN on the Convex Dashboard
7
- // See https://docs.convex.dev/auth/clerk#configuring-dev-and-prod-instances
8
- domain: process.env.CLERK_JWT_ISSUER_DOMAIN,
9
- applicationID: "convex",
10
- },
11
- ],
12
- };
@@ -1,16 +0,0 @@
1
- import { query } from "./_generated/server";
2
-
3
- export const get = query({
4
- args: {},
5
- handler: async (ctx) => {
6
- const identity = await ctx.auth.getUserIdentity();
7
- if (identity === null) {
8
- return {
9
- message: "Not authenticated",
10
- };
11
- }
12
- return {
13
- message: "This is private",
14
- };
15
- },
16
- });
@@ -1,12 +0,0 @@
1
- import { Redirect, Stack } from "expo-router";
2
- import { useAuth } from "@clerk/clerk-expo";
3
-
4
- export default function AuthRoutesLayout() {
5
- const { isSignedIn } = useAuth();
6
-
7
- if (isSignedIn) {
8
- return <Redirect href={"/"} />;
9
- }
10
-
11
- return <Stack />;
12
- }
@@ -1,67 +0,0 @@
1
- import { useSignIn } from "@clerk/clerk-expo";
2
- import { Link, useRouter } from "expo-router";
3
- import { Text, TextInput, TouchableOpacity, View } from "react-native";
4
- import React from "react";
5
-
6
- export default function Page() {
7
- const { signIn, setActive, isLoaded } = useSignIn();
8
- const router = useRouter();
9
-
10
- const [emailAddress, setEmailAddress] = React.useState("");
11
- const [password, setPassword] = React.useState("");
12
-
13
- // Handle the submission of the sign-in form
14
- const onSignInPress = async () => {
15
- if (!isLoaded) return;
16
-
17
- // Start the sign-in process using the email and password provided
18
- try {
19
- const signInAttempt = await signIn.create({
20
- identifier: emailAddress,
21
- password,
22
- });
23
-
24
- // If sign-in process is complete, set the created session as active
25
- // and redirect the user
26
- if (signInAttempt.status === "complete") {
27
- await setActive({ session: signInAttempt.createdSessionId });
28
- router.replace("/");
29
- } else {
30
- // If the status isn't complete, check why. User might need to
31
- // complete further steps.
32
- console.error(JSON.stringify(signInAttempt, null, 2));
33
- }
34
- } catch (err) {
35
- // See https://clerk.com/docs/custom-flows/error-handling
36
- // for more info on error handling
37
- console.error(JSON.stringify(err, null, 2));
38
- }
39
- };
40
-
41
- return (
42
- <View>
43
- <Text>Sign in</Text>
44
- <TextInput
45
- autoCapitalize="none"
46
- value={emailAddress}
47
- placeholder="Enter email"
48
- onChangeText={(emailAddress) => setEmailAddress(emailAddress)}
49
- />
50
- <TextInput
51
- value={password}
52
- placeholder="Enter password"
53
- secureTextEntry={true}
54
- onChangeText={(password) => setPassword(password)}
55
- />
56
- <TouchableOpacity onPress={onSignInPress}>
57
- <Text>Continue</Text>
58
- </TouchableOpacity>
59
- <View style=\{{ display: "flex", flexDirection: "row", gap: 3 }}>
60
- <Text>Don't have an account?</Text>
61
- <Link href="/sign-up">
62
- <Text>Sign up</Text>
63
- </Link>
64
- </View>
65
- </View>
66
- );
67
- }
@@ -1,110 +0,0 @@
1
- import * as React from "react";
2
- import { Text, TextInput, TouchableOpacity, View } from "react-native";
3
- import { useSignUp } from "@clerk/clerk-expo";
4
- import { Link, useRouter } from "expo-router";
5
-
6
- export default function SignUpScreen() {
7
- const { isLoaded, signUp, setActive } = useSignUp();
8
- const router = useRouter();
9
-
10
- const [emailAddress, setEmailAddress] = React.useState("");
11
- const [password, setPassword] = React.useState("");
12
- const [pendingVerification, setPendingVerification] = React.useState(false);
13
- const [code, setCode] = React.useState("");
14
-
15
- // Handle submission of sign-up form
16
- const onSignUpPress = async () => {
17
- if (!isLoaded) return;
18
-
19
- console.log(emailAddress, password);
20
-
21
- // Start sign-up process using email and password provided
22
- try {
23
- await signUp.create({
24
- emailAddress,
25
- password,
26
- });
27
-
28
- // Send user an email with verification code
29
- await signUp.prepareEmailAddressVerification({ strategy: "email_code" });
30
-
31
- // Set 'pendingVerification' to true to display second form
32
- // and capture OTP code
33
- setPendingVerification(true);
34
- } catch (err) {
35
- // See https://clerk.com/docs/custom-flows/error-handling
36
- // for more info on error handling
37
- console.error(JSON.stringify(err, null, 2));
38
- }
39
- };
40
-
41
- // Handle submission of verification form
42
- const onVerifyPress = async () => {
43
- if (!isLoaded) return;
44
-
45
- try {
46
- // Use the code the user provided to attempt verification
47
- const signUpAttempt = await signUp.attemptEmailAddressVerification({
48
- code,
49
- });
50
-
51
- // If verification was completed, set the session to active
52
- // and redirect the user
53
- if (signUpAttempt.status === "complete") {
54
- await setActive({ session: signUpAttempt.createdSessionId });
55
- router.replace("/");
56
- } else {
57
- // If the status is not complete, check why. User may need to
58
- // complete further steps.
59
- console.error(JSON.stringify(signUpAttempt, null, 2));
60
- }
61
- } catch (err) {
62
- // See https://clerk.com/docs/custom-flows/error-handling
63
- // for more info on error handling
64
- console.error(JSON.stringify(err, null, 2));
65
- }
66
- };
67
-
68
- if (pendingVerification) {
69
- return (
70
- <>
71
- <Text>Verify your email</Text>
72
- <TextInput
73
- value={code}
74
- placeholder="Enter your verification code"
75
- onChangeText={(code) => setCode(code)}
76
- />
77
- <TouchableOpacity onPress={onVerifyPress}>
78
- <Text>Verify</Text>
79
- </TouchableOpacity>
80
- </>
81
- );
82
- }
83
-
84
- return (
85
- <View>
86
- <Text>Sign up</Text>
87
- <TextInput
88
- autoCapitalize="none"
89
- value={emailAddress}
90
- placeholder="Enter email"
91
- onChangeText={(email) => setEmailAddress(email)}
92
- />
93
- <TextInput
94
- value={password}
95
- placeholder="Enter password"
96
- secureTextEntry={true}
97
- onChangeText={(password) => setPassword(password)}
98
- />
99
- <TouchableOpacity onPress={onSignUpPress}>
100
- <Text>Continue</Text>
101
- </TouchableOpacity>
102
- <View style=\{{ display: "flex", flexDirection: "row", gap: 3 }}>
103
- <Text>Already have an account?</Text>
104
- <Link href="/sign-in">
105
- <Text>Sign in</Text>
106
- </Link>
107
- </View>
108
- </View>
109
- );
110
- }
@@ -1,27 +0,0 @@
1
- import { useClerk } from "@clerk/clerk-expo";
2
- import { useRouter } from "expo-router";
3
- import { Text, TouchableOpacity } from "react-native";
4
-
5
- export const SignOutButton = () => {
6
- // Use `useClerk()` to access the `signOut()` function
7
- const { signOut } = useClerk();
8
- const router = useRouter();
9
-
10
- const handleSignOut = async () => {
11
- try {
12
- await signOut();
13
- // Redirect to your desired page
14
- router.replace("/");
15
- } catch (err) {
16
- // See https://clerk.com/docs/custom-flows/error-handling
17
- // for more info on error handling
18
- console.error(JSON.stringify(err, null, 2));
19
- }
20
- };
21
-
22
- return (
23
- <TouchableOpacity onPress={handleSignOut}>
24
- <Text>Sign out</Text>
25
- </TouchableOpacity>
26
- );
27
- };
@@ -1,29 +0,0 @@
1
- "use client";
2
-
3
- import { api } from "@{{projectName}}/backend/convex/_generated/api";
4
- import { SignInButton, UserButton, useUser } from "@clerk/nextjs";
5
- import { Authenticated, AuthLoading, Unauthenticated, useQuery } from "convex/react";
6
-
7
- export default function Dashboard() {
8
- const user = useUser();
9
- const privateData = useQuery(api.privateData.get);
10
-
11
- return (
12
- <>
13
- <Authenticated>
14
- <div>
15
- <h1>Dashboard</h1>
16
- <p>Welcome {user.user?.fullName}</p>
17
- <p>privateData: {privateData?.message}</p>
18
- <UserButton />
19
- </div>
20
- </Authenticated>
21
- <Unauthenticated>
22
- <SignInButton />
23
- </Unauthenticated>
24
- <AuthLoading>
25
- <div>Loading...</div>
26
- </AuthLoading>
27
- </>
28
- );
29
- }
@@ -1,12 +0,0 @@
1
- import { clerkMiddleware } from "@clerk/nextjs/server";
2
-
3
- export default clerkMiddleware();
4
-
5
- export const config = {
6
- matcher: [
7
- // Skip Next.js internals and all static files, unless found in search params
8
- "/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)",
9
- // Always run for API routes
10
- "/(api|trpc)(.*)",
11
- ],
12
- };
@@ -1,32 +0,0 @@
1
- import { SignInButton, UserButton, useUser } from "@clerk/clerk-react";
2
- import { api } from "@{{projectName}}/backend/convex/_generated/api";
3
- import {
4
- Authenticated,
5
- AuthLoading,
6
- Unauthenticated,
7
- useQuery,
8
- } from "convex/react";
9
-
10
- export default function Dashboard() {
11
- const privateData = useQuery(api.privateData.get);
12
- const user = useUser();
13
-
14
- return (
15
- <>
16
- <Authenticated>
17
- <div>
18
- <h1>Dashboard</h1>
19
- <p>Welcome {user.user?.fullName}</p>
20
- <p>privateData: {privateData?.message}</p>
21
- <UserButton />
22
- </div>
23
- </Authenticated>
24
- <Unauthenticated>
25
- <SignInButton />
26
- </Unauthenticated>
27
- <AuthLoading>
28
- <div>Loading...</div>
29
- </AuthLoading>
30
- </>
31
- );
32
- }
@@ -1,37 +0,0 @@
1
- import { SignInButton, UserButton, useUser } from "@clerk/clerk-react";
2
- import { api } from "@{{projectName}}/backend/convex/_generated/api";
3
- import { createFileRoute } from "@tanstack/react-router";
4
- import {
5
- Authenticated,
6
- AuthLoading,
7
- Unauthenticated,
8
- useQuery,
9
- } from "convex/react";
10
-
11
- export const Route = createFileRoute("/dashboard")({
12
- component: RouteComponent,
13
- });
14
-
15
- function RouteComponent() {
16
- const privateData = useQuery(api.privateData.get);
17
- const user = useUser()
18
-
19
- return (
20
- <>
21
- <Authenticated>
22
- <div>
23
- <h1>Dashboard</h1>
24
- <p>Welcome {user.user?.fullName}</p>
25
- <p>privateData: {privateData?.message}</p>
26
- <UserButton />
27
- </div>
28
- </Authenticated>
29
- <Unauthenticated>
30
- <SignInButton />
31
- </Unauthenticated>
32
- <AuthLoading>
33
- <div>Loading...</div>
34
- </AuthLoading>
35
- </>
36
- );
37
- }
@@ -1,37 +0,0 @@
1
- import { SignInButton, UserButton, useUser } from "@clerk/tanstack-react-start";
2
- import { api } from "@{{projectName}}/backend/convex/_generated/api";
3
- import { createFileRoute } from "@tanstack/react-router";
4
- import {
5
- Authenticated,
6
- AuthLoading,
7
- Unauthenticated,
8
- useQuery,
9
- } from "convex/react";
10
-
11
- export const Route = createFileRoute("/dashboard")({
12
- component: RouteComponent,
13
- });
14
-
15
- function RouteComponent() {
16
- const privateData = useQuery(api.privateData.get);
17
- const user = useUser();
18
-
19
- return (
20
- <>
21
- <Authenticated>
22
- <div>
23
- <h1>Dashboard</h1>
24
- <p>Welcome {user.user?.fullName}</p>
25
- <p>privateData: {privateData?.message}</p>
26
- <UserButton />
27
- </div>
28
- </Authenticated>
29
- <Unauthenticated>
30
- <SignInButton />
31
- </Unauthenticated>
32
- <AuthLoading>
33
- <div>Loading...</div>
34
- </AuthLoading>
35
- </>
36
- );
37
- }
@@ -1,8 +0,0 @@
1
- import { clerkMiddleware } from '@clerk/tanstack-react-start/server'
2
- import { createStart } from '@tanstack/react-start'
3
-
4
- export const startInstance = createStart(() => {
5
- return {
6
- requestMiddleware: [clerkMiddleware()],
7
- }
8
- })
@@ -1,2 +0,0 @@
1
-
2
- .env.local
@@ -1,90 +0,0 @@
1
- # Welcome to your Convex functions directory!
2
-
3
- Write your Convex functions here.
4
- See https://docs.convex.dev/functions for more.
5
-
6
- A query function that takes two arguments looks like:
7
-
8
- ```ts
9
- // convex/myFunctions.ts
10
- import { query } from "./_generated/server";
11
- import { v } from "convex/values";
12
-
13
- export const myQueryFunction = query({
14
- // Validators for arguments.
15
- args: {
16
- first: v.number(),
17
- second: v.string(),
18
- },
19
-
20
- // Function implementation.
21
- handler: async (ctx, args) => {
22
- // Read the database as many times as you need here.
23
- // See https://docs.convex.dev/database/reading-data.
24
- const documents = await ctx.db.query("tablename").collect();
25
-
26
- // Arguments passed from the client are properties of the args object.
27
- console.log(args.first, args.second);
28
-
29
- // Write arbitrary JavaScript here: filter, aggregate, build derived data,
30
- // remove non-public properties, or create new objects.
31
- return documents;
32
- },
33
- });
34
- ```
35
-
36
- Using this query function in a React component looks like:
37
-
38
- ```ts
39
- const data = useQuery(api.myFunctions.myQueryFunction, {
40
- first: 10,
41
- second: "hello",
42
- });
43
- ```
44
-
45
- A mutation function looks like:
46
-
47
- ```ts
48
- // convex/myFunctions.ts
49
- import { mutation } from "./_generated/server";
50
- import { v } from "convex/values";
51
-
52
- export const myMutationFunction = mutation({
53
- // Validators for arguments.
54
- args: {
55
- first: v.string(),
56
- second: v.string(),
57
- },
58
-
59
- // Function implementation.
60
- handler: async (ctx, args) => {
61
- // Insert or modify documents in the database here.
62
- // Mutations can also read from the database like queries.
63
- // See https://docs.convex.dev/database/writing-data.
64
- const message = { body: args.first, author: args.second };
65
- const id = await ctx.db.insert("messages", message);
66
-
67
- // Optionally, return a value from your mutation.
68
- return await ctx.db.get("messages", id);
69
- },
70
- });
71
- ```
72
-
73
- Using this mutation function in a React component looks like:
74
-
75
- ```ts
76
- const mutation = useMutation(api.myFunctions.myMutationFunction);
77
- function handleButtonPress() {
78
- // fire and forget, the most common way to use mutations
79
- mutation({ first: "Hello!", second: "me" });
80
- // OR
81
- // use the result once the mutation has completed
82
- mutation({ first: "Hello!", second: "me" }).then((result) =>
83
- console.log(result),
84
- );
85
- }
86
- ```
87
-
88
- Use the Convex CLI to push your functions to a deployment. See everything
89
- the Convex CLI can do by running `npx convex -h` in your project root
90
- directory. To learn more, launch the docs with `npx convex docs`.
@@ -1,17 +0,0 @@
1
- import { defineApp } from "convex/server";
2
- {{#if (eq auth "better-auth")}}
3
- import betterAuth from "@convex-dev/better-auth/convex.config";
4
- {{/if}}
5
- {{#if (includes examples "ai")}}
6
- import agent from "@convex-dev/agent/convex.config";
7
- {{/if}}
8
-
9
- const app = defineApp();
10
- {{#if (eq auth "better-auth")}}
11
- app.use(betterAuth);
12
- {{/if}}
13
- {{#if (includes examples "ai")}}
14
- app.use(agent);
15
- {{/if}}
16
-
17
- export default app;
@@ -1,7 +0,0 @@
1
- import { query } from "./_generated/server";
2
-
3
- export const get = query({
4
- handler: async () => {
5
- return "OK";
6
- },
7
- });