virastack 0.0.1 → 1.0.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 (447) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +94 -18
  3. package/bin/virastack.js +7 -0
  4. package/package.json +43 -9
  5. package/src/commands/add.js +64 -0
  6. package/src/commands/init.js +286 -0
  7. package/src/i18n.js +231 -0
  8. package/src/index.js +64 -0
  9. package/src/utils/args.js +60 -0
  10. package/src/utils/copy-template.js +81 -0
  11. package/src/utils/exec.js +29 -0
  12. package/src/utils/git.js +38 -0
  13. package/src/utils/is-online.js +14 -0
  14. package/src/utils/package-info.js +12 -0
  15. package/src/utils/package-manager.js +33 -0
  16. package/src/utils/setup-env.js +25 -0
  17. package/src/utils/telemetry.js +86 -0
  18. package/src/utils/tools.js +48 -0
  19. package/src/utils/update-package-json.js +44 -0
  20. package/src/utils/update-readme.js +25 -0
  21. package/src/utils/validate-project-name.js +26 -0
  22. package/templates/nextjs/.changeset/README.md +8 -0
  23. package/templates/nextjs/.changeset/config.json +11 -0
  24. package/templates/nextjs/.env.example +6 -0
  25. package/templates/nextjs/.env.local +6 -0
  26. package/templates/nextjs/.eslintcache +1 -0
  27. package/templates/nextjs/.github/workflows/ci.yml +41 -0
  28. package/templates/nextjs/.husky/commit-msg +1 -0
  29. package/templates/nextjs/.husky/pre-commit +1 -0
  30. package/templates/nextjs/.husky/pre-push +1 -0
  31. package/templates/nextjs/.prettierignore +6 -0
  32. package/templates/nextjs/.prettierrc +42 -0
  33. package/templates/nextjs/.vscode/extensions.json +7 -0
  34. package/templates/nextjs/.vscode/settings.json +20 -0
  35. package/templates/nextjs/LICENSE +21 -0
  36. package/templates/nextjs/README.md +202 -0
  37. package/templates/nextjs/_gitignore +45 -0
  38. package/templates/nextjs/commitlint.config.js +6 -0
  39. package/templates/nextjs/eslint.config.mjs +27 -0
  40. package/templates/nextjs/knip.config.js +25 -0
  41. package/templates/nextjs/next-env.d.ts +6 -0
  42. package/templates/nextjs/next.config.ts +39 -0
  43. package/templates/nextjs/package.json +115 -0
  44. package/templates/nextjs/pnpm-lock.yaml +6467 -0
  45. package/templates/nextjs/pnpm-workspace.yaml +3 -0
  46. package/templates/nextjs/postcss.config.mjs +7 -0
  47. package/templates/nextjs/public/favicon.ico +0 -0
  48. package/templates/nextjs/public/llms.txt +96 -0
  49. package/templates/nextjs/public/logo.png +0 -0
  50. package/templates/nextjs/public/logo.webp +0 -0
  51. package/templates/nextjs/public/og.png +0 -0
  52. package/templates/nextjs/src/app/error.tsx +34 -0
  53. package/templates/nextjs/src/app/favicon.ico +0 -0
  54. package/templates/nextjs/src/app/global-error.tsx +32 -0
  55. package/templates/nextjs/src/app/layout.tsx +37 -0
  56. package/templates/nextjs/src/app/loading.tsx +12 -0
  57. package/templates/nextjs/src/app/manifest.ts +22 -0
  58. package/templates/nextjs/src/app/not-found.tsx +18 -0
  59. package/templates/nextjs/src/app/page.tsx +5 -0
  60. package/templates/nextjs/src/app/robots.ts +13 -0
  61. package/templates/nextjs/src/app/sitemap.ts +14 -0
  62. package/templates/nextjs/src/components/shared/ThemeToggle.tsx +30 -0
  63. package/templates/nextjs/src/components/ui/avatar.tsx +54 -0
  64. package/templates/nextjs/src/components/ui/button.tsx +46 -0
  65. package/templates/nextjs/src/components/ui/dialog.tsx +107 -0
  66. package/templates/nextjs/src/components/ui/field.tsx +24 -0
  67. package/templates/nextjs/src/components/ui/index.ts +27 -0
  68. package/templates/nextjs/src/components/ui/input.tsx +23 -0
  69. package/templates/nextjs/src/components/ui/label.tsx +17 -0
  70. package/templates/nextjs/src/components/ui/skeleton.tsx +13 -0
  71. package/templates/nextjs/src/components/ui/table.tsx +94 -0
  72. package/templates/nextjs/src/components/ui/tabs.tsx +46 -0
  73. package/templates/nextjs/src/config/seo.config.ts +37 -0
  74. package/templates/nextjs/src/config/site.config.ts +15 -0
  75. package/templates/nextjs/src/constants/index.ts +5 -0
  76. package/templates/nextjs/src/env.ts +41 -0
  77. package/templates/nextjs/src/features/landing/api/get-users.api.ts +7 -0
  78. package/templates/nextjs/src/features/landing/api/index.ts +2 -0
  79. package/templates/nextjs/src/features/landing/api/query-keys.ts +7 -0
  80. package/templates/nextjs/src/features/landing/components/CartDemo.tsx +66 -0
  81. package/templates/nextjs/src/features/landing/components/Features.tsx +39 -0
  82. package/templates/nextjs/src/features/landing/components/Hero.tsx +65 -0
  83. package/templates/nextjs/src/features/landing/components/LandingPage.tsx +17 -0
  84. package/templates/nextjs/src/features/landing/components/ProjectFormDemo.tsx +62 -0
  85. package/templates/nextjs/src/features/landing/components/Reveal.tsx +83 -0
  86. package/templates/nextjs/src/features/landing/components/Showcase.tsx +66 -0
  87. package/templates/nextjs/src/features/landing/components/UsersDemo.tsx +188 -0
  88. package/templates/nextjs/src/features/landing/data/features.data.tsx +47 -0
  89. package/templates/nextjs/src/features/landing/data/index.ts +1 -0
  90. package/templates/nextjs/src/features/landing/helpers/get-initials.ts +15 -0
  91. package/templates/nextjs/src/features/landing/helpers/index.ts +7 -0
  92. package/templates/nextjs/src/features/landing/helpers/motion.ts +21 -0
  93. package/templates/nextjs/src/features/landing/hooks/index.ts +1 -0
  94. package/templates/nextjs/src/features/landing/hooks/use-users.ts +16 -0
  95. package/templates/nextjs/src/features/landing/icons/index.ts +6 -0
  96. package/templates/nextjs/src/features/landing/icons/nextjs.tsx +68 -0
  97. package/templates/nextjs/src/features/landing/icons/react-hook-form.tsx +18 -0
  98. package/templates/nextjs/src/features/landing/icons/react.tsx +20 -0
  99. package/templates/nextjs/src/features/landing/icons/tailwind.tsx +14 -0
  100. package/templates/nextjs/src/features/landing/icons/tanstack.tsx +321 -0
  101. package/templates/nextjs/src/features/landing/icons/typescript.tsx +16 -0
  102. package/templates/nextjs/src/features/landing/index.ts +1 -0
  103. package/templates/nextjs/src/features/landing/schemas/index.ts +1 -0
  104. package/templates/nextjs/src/features/landing/schemas/project.schema.ts +7 -0
  105. package/templates/nextjs/src/features/landing/stores/counter.store.ts +18 -0
  106. package/templates/nextjs/src/features/landing/stores/index.ts +1 -0
  107. package/templates/nextjs/src/features/landing/types/index.ts +1 -0
  108. package/templates/nextjs/src/features/landing/types/user.types.ts +9 -0
  109. package/templates/nextjs/src/helpers/format-date.ts +13 -0
  110. package/templates/nextjs/src/helpers/index.ts +1 -0
  111. package/templates/nextjs/src/hooks/index.ts +5 -0
  112. package/templates/nextjs/src/lib/api.ts +97 -0
  113. package/templates/nextjs/src/lib/query-client.ts +18 -0
  114. package/templates/nextjs/src/lib/utils.ts +12 -0
  115. package/templates/nextjs/src/providers/Providers.tsx +15 -0
  116. package/templates/nextjs/src/providers/QueryProvider.tsx +19 -0
  117. package/templates/nextjs/src/providers/ThemeProvider.tsx +9 -0
  118. package/templates/nextjs/src/providers/index.ts +1 -0
  119. package/templates/nextjs/src/proxy.ts +6 -0
  120. package/templates/nextjs/src/schemas/index.ts +5 -0
  121. package/templates/nextjs/src/stores/index.ts +5 -0
  122. package/templates/nextjs/src/styles/tailwind.css +122 -0
  123. package/templates/nextjs/src/types/site-config.types.ts +10 -0
  124. package/templates/nextjs/tsconfig.json +45 -0
  125. package/templates/nextjs/tsconfig.tsbuildinfo +1 -0
  126. package/templates/tanstack/.changeset/README.md +8 -0
  127. package/templates/tanstack/.changeset/config.json +11 -0
  128. package/templates/tanstack/.env.example +6 -0
  129. package/templates/tanstack/.env.local +6 -0
  130. package/templates/tanstack/.eslintcache +1 -0
  131. package/templates/tanstack/.github/workflows/ci.yml +41 -0
  132. package/templates/tanstack/.husky/commit-msg +1 -0
  133. package/templates/tanstack/.husky/pre-commit +1 -0
  134. package/templates/tanstack/.husky/pre-push +1 -0
  135. package/templates/tanstack/.prettierignore +7 -0
  136. package/templates/tanstack/.prettierrc +41 -0
  137. package/templates/tanstack/.vscode/extensions.json +7 -0
  138. package/templates/tanstack/.vscode/settings.json +22 -0
  139. package/templates/tanstack/LICENSE +21 -0
  140. package/templates/tanstack/README.md +204 -0
  141. package/templates/tanstack/_gitignore +52 -0
  142. package/templates/tanstack/commitlint.config.js +6 -0
  143. package/templates/tanstack/eslint.config.js +28 -0
  144. package/templates/tanstack/knip.config.js +22 -0
  145. package/templates/tanstack/package.json +130 -0
  146. package/templates/tanstack/pnpm-lock.yaml +5835 -0
  147. package/templates/tanstack/pnpm-workspace.yaml +3 -0
  148. package/templates/tanstack/public/favicon.ico +0 -0
  149. package/templates/tanstack/public/llms.txt +86 -0
  150. package/templates/tanstack/public/logo.png +0 -0
  151. package/templates/tanstack/public/logo.webp +0 -0
  152. package/templates/tanstack/public/og.png +0 -0
  153. package/templates/tanstack/src/components/shared/DefaultCatchBoundary.tsx +36 -0
  154. package/templates/tanstack/src/components/shared/NotFound.tsx +18 -0
  155. package/templates/tanstack/src/components/shared/Pending.tsx +13 -0
  156. package/templates/tanstack/src/components/shared/ThemeToggle.tsx +31 -0
  157. package/templates/tanstack/src/components/ui/avatar.tsx +52 -0
  158. package/templates/tanstack/src/components/ui/button.tsx +47 -0
  159. package/templates/tanstack/src/components/ui/dialog.tsx +107 -0
  160. package/templates/tanstack/src/components/ui/field.tsx +24 -0
  161. package/templates/tanstack/src/components/ui/index.ts +27 -0
  162. package/templates/tanstack/src/components/ui/input.tsx +23 -0
  163. package/templates/tanstack/src/components/ui/label.tsx +17 -0
  164. package/templates/tanstack/src/components/ui/skeleton.tsx +13 -0
  165. package/templates/tanstack/src/components/ui/table.tsx +94 -0
  166. package/templates/tanstack/src/components/ui/tabs.tsx +46 -0
  167. package/templates/tanstack/src/config/seo.config.ts +52 -0
  168. package/templates/tanstack/src/config/site.config.ts +15 -0
  169. package/templates/tanstack/src/constants/index.ts +5 -0
  170. package/templates/tanstack/src/env.ts +47 -0
  171. package/templates/tanstack/src/features/landing/api/get-users.api.ts +7 -0
  172. package/templates/tanstack/src/features/landing/api/index.ts +2 -0
  173. package/templates/tanstack/src/features/landing/api/query-keys.ts +7 -0
  174. package/templates/tanstack/src/features/landing/components/CartDemo.tsx +66 -0
  175. package/templates/tanstack/src/features/landing/components/Features.tsx +39 -0
  176. package/templates/tanstack/src/features/landing/components/Hero.tsx +63 -0
  177. package/templates/tanstack/src/features/landing/components/LandingPage.tsx +17 -0
  178. package/templates/tanstack/src/features/landing/components/ProjectFormDemo.tsx +63 -0
  179. package/templates/tanstack/src/features/landing/components/Reveal.tsx +83 -0
  180. package/templates/tanstack/src/features/landing/components/Showcase.tsx +66 -0
  181. package/templates/tanstack/src/features/landing/components/UsersDemo.tsx +191 -0
  182. package/templates/tanstack/src/features/landing/data/features.data.tsx +45 -0
  183. package/templates/tanstack/src/features/landing/data/index.ts +1 -0
  184. package/templates/tanstack/src/features/landing/helpers/get-initials.ts +15 -0
  185. package/templates/tanstack/src/features/landing/helpers/index.ts +7 -0
  186. package/templates/tanstack/src/features/landing/helpers/motion.ts +21 -0
  187. package/templates/tanstack/src/features/landing/hooks/index.ts +1 -0
  188. package/templates/tanstack/src/features/landing/hooks/use-users.ts +19 -0
  189. package/templates/tanstack/src/features/landing/icons/index.ts +5 -0
  190. package/templates/tanstack/src/features/landing/icons/react-hook-form.tsx +18 -0
  191. package/templates/tanstack/src/features/landing/icons/react.tsx +20 -0
  192. package/templates/tanstack/src/features/landing/icons/tailwind.tsx +14 -0
  193. package/templates/tanstack/src/features/landing/icons/tanstack.tsx +321 -0
  194. package/templates/tanstack/src/features/landing/icons/typescript.tsx +16 -0
  195. package/templates/tanstack/src/features/landing/index.ts +1 -0
  196. package/templates/tanstack/src/features/landing/schemas/index.ts +1 -0
  197. package/templates/tanstack/src/features/landing/schemas/project.schema.ts +7 -0
  198. package/templates/tanstack/src/features/landing/stores/counter.store.ts +18 -0
  199. package/templates/tanstack/src/features/landing/stores/index.ts +1 -0
  200. package/templates/tanstack/src/features/landing/types/index.ts +1 -0
  201. package/templates/tanstack/src/features/landing/types/user.types.ts +9 -0
  202. package/templates/tanstack/src/helpers/format-date.ts +13 -0
  203. package/templates/tanstack/src/helpers/index.ts +1 -0
  204. package/templates/tanstack/src/hooks/index.ts +5 -0
  205. package/templates/tanstack/src/lib/api.ts +97 -0
  206. package/templates/tanstack/src/lib/query-client.ts +18 -0
  207. package/templates/tanstack/src/lib/utils.ts +13 -0
  208. package/templates/tanstack/src/providers/Providers.tsx +12 -0
  209. package/templates/tanstack/src/providers/ThemeProvider.tsx +98 -0
  210. package/templates/tanstack/src/providers/devtools.tsx +6 -0
  211. package/templates/tanstack/src/providers/index.ts +1 -0
  212. package/templates/tanstack/src/providers/root-provider.ts +9 -0
  213. package/templates/tanstack/src/routeTree.gen.ts +123 -0
  214. package/templates/tanstack/src/router.tsx +27 -0
  215. package/templates/tanstack/src/routes/__root.tsx +78 -0
  216. package/templates/tanstack/src/routes/index.tsx +13 -0
  217. package/templates/tanstack/src/routes/robots[.]txt.ts +21 -0
  218. package/templates/tanstack/src/routes/site[.]webmanifest.ts +32 -0
  219. package/templates/tanstack/src/routes/sitemap[.]xml.ts +27 -0
  220. package/templates/tanstack/src/schemas/index.ts +5 -0
  221. package/templates/tanstack/src/start.ts +20 -0
  222. package/templates/tanstack/src/stores/index.ts +5 -0
  223. package/templates/tanstack/src/styles/tailwind.css +123 -0
  224. package/templates/tanstack/src/types/site-config.types.ts +10 -0
  225. package/templates/tanstack/tsconfig.json +25 -0
  226. package/templates/tanstack/tsr.config.json +3 -0
  227. package/templates/tanstack/vite.config.ts +12 -0
  228. package/templates-i18n/nextjs/.changeset/README.md +8 -0
  229. package/templates-i18n/nextjs/.changeset/config.json +11 -0
  230. package/templates-i18n/nextjs/.env.example +6 -0
  231. package/templates-i18n/nextjs/.eslintcache +1 -0
  232. package/templates-i18n/nextjs/.github/workflows/ci.yml +41 -0
  233. package/templates-i18n/nextjs/.husky/commit-msg +1 -0
  234. package/templates-i18n/nextjs/.husky/pre-commit +1 -0
  235. package/templates-i18n/nextjs/.husky/pre-push +1 -0
  236. package/templates-i18n/nextjs/.prettierignore +6 -0
  237. package/templates-i18n/nextjs/.prettierrc +42 -0
  238. package/templates-i18n/nextjs/.vscode/extensions.json +7 -0
  239. package/templates-i18n/nextjs/.vscode/settings.json +20 -0
  240. package/templates-i18n/nextjs/LICENSE +21 -0
  241. package/templates-i18n/nextjs/README.md +202 -0
  242. package/templates-i18n/nextjs/_gitignore +45 -0
  243. package/templates-i18n/nextjs/commitlint.config.js +6 -0
  244. package/templates-i18n/nextjs/eslint.config.mjs +27 -0
  245. package/templates-i18n/nextjs/knip.config.js +29 -0
  246. package/templates-i18n/nextjs/next-env.d.ts +6 -0
  247. package/templates-i18n/nextjs/next.config.ts +42 -0
  248. package/templates-i18n/nextjs/package.json +117 -0
  249. package/templates-i18n/nextjs/pnpm-lock.yaml +6854 -0
  250. package/templates-i18n/nextjs/pnpm-workspace.yaml +3 -0
  251. package/templates-i18n/nextjs/postcss.config.mjs +7 -0
  252. package/templates-i18n/nextjs/public/favicon.ico +0 -0
  253. package/templates-i18n/nextjs/public/llms.txt +96 -0
  254. package/templates-i18n/nextjs/public/logo.png +0 -0
  255. package/templates-i18n/nextjs/public/logo.webp +0 -0
  256. package/templates-i18n/nextjs/public/og.png +0 -0
  257. package/templates-i18n/nextjs/src/app/[locale]/error.tsx +34 -0
  258. package/templates-i18n/nextjs/src/app/[locale]/layout.tsx +60 -0
  259. package/templates-i18n/nextjs/src/app/[locale]/loading.tsx +12 -0
  260. package/templates-i18n/nextjs/src/app/[locale]/not-found.tsx +18 -0
  261. package/templates-i18n/nextjs/src/app/[locale]/page.tsx +10 -0
  262. package/templates-i18n/nextjs/src/app/favicon.ico +0 -0
  263. package/templates-i18n/nextjs/src/app/global-error.tsx +32 -0
  264. package/templates-i18n/nextjs/src/app/manifest.ts +22 -0
  265. package/templates-i18n/nextjs/src/app/robots.ts +13 -0
  266. package/templates-i18n/nextjs/src/app/sitemap.ts +14 -0
  267. package/templates-i18n/nextjs/src/components/shared/LanguageSwitcher.tsx +48 -0
  268. package/templates-i18n/nextjs/src/components/shared/ThemeToggle.tsx +30 -0
  269. package/templates-i18n/nextjs/src/components/ui/avatar.tsx +54 -0
  270. package/templates-i18n/nextjs/src/components/ui/button.tsx +46 -0
  271. package/templates-i18n/nextjs/src/components/ui/dialog.tsx +107 -0
  272. package/templates-i18n/nextjs/src/components/ui/field.tsx +24 -0
  273. package/templates-i18n/nextjs/src/components/ui/index.ts +27 -0
  274. package/templates-i18n/nextjs/src/components/ui/input.tsx +23 -0
  275. package/templates-i18n/nextjs/src/components/ui/label.tsx +17 -0
  276. package/templates-i18n/nextjs/src/components/ui/skeleton.tsx +13 -0
  277. package/templates-i18n/nextjs/src/components/ui/table.tsx +94 -0
  278. package/templates-i18n/nextjs/src/components/ui/tabs.tsx +46 -0
  279. package/templates-i18n/nextjs/src/config/seo.config.ts +37 -0
  280. package/templates-i18n/nextjs/src/config/site.config.ts +15 -0
  281. package/templates-i18n/nextjs/src/constants/index.ts +5 -0
  282. package/templates-i18n/nextjs/src/env.ts +41 -0
  283. package/templates-i18n/nextjs/src/features/landing/api/get-users.api.ts +7 -0
  284. package/templates-i18n/nextjs/src/features/landing/api/index.ts +2 -0
  285. package/templates-i18n/nextjs/src/features/landing/api/query-keys.ts +7 -0
  286. package/templates-i18n/nextjs/src/features/landing/components/CartDemo.tsx +68 -0
  287. package/templates-i18n/nextjs/src/features/landing/components/Features.tsx +84 -0
  288. package/templates-i18n/nextjs/src/features/landing/components/Hero.tsx +76 -0
  289. package/templates-i18n/nextjs/src/features/landing/components/LandingPage.tsx +17 -0
  290. package/templates-i18n/nextjs/src/features/landing/components/ProjectFormDemo.tsx +64 -0
  291. package/templates-i18n/nextjs/src/features/landing/components/Reveal.tsx +83 -0
  292. package/templates-i18n/nextjs/src/features/landing/components/Showcase.tsx +83 -0
  293. package/templates-i18n/nextjs/src/features/landing/components/UsersDemo.tsx +191 -0
  294. package/templates-i18n/nextjs/src/features/landing/data/features.data.tsx +47 -0
  295. package/templates-i18n/nextjs/src/features/landing/data/index.ts +1 -0
  296. package/templates-i18n/nextjs/src/features/landing/helpers/get-initials.ts +15 -0
  297. package/templates-i18n/nextjs/src/features/landing/helpers/index.ts +7 -0
  298. package/templates-i18n/nextjs/src/features/landing/helpers/motion.ts +21 -0
  299. package/templates-i18n/nextjs/src/features/landing/hooks/index.ts +1 -0
  300. package/templates-i18n/nextjs/src/features/landing/hooks/use-users.ts +16 -0
  301. package/templates-i18n/nextjs/src/features/landing/icons/index.ts +6 -0
  302. package/templates-i18n/nextjs/src/features/landing/icons/nextjs.tsx +68 -0
  303. package/templates-i18n/nextjs/src/features/landing/icons/react-hook-form.tsx +18 -0
  304. package/templates-i18n/nextjs/src/features/landing/icons/react.tsx +20 -0
  305. package/templates-i18n/nextjs/src/features/landing/icons/tailwind.tsx +14 -0
  306. package/templates-i18n/nextjs/src/features/landing/icons/tanstack.tsx +321 -0
  307. package/templates-i18n/nextjs/src/features/landing/icons/typescript.tsx +16 -0
  308. package/templates-i18n/nextjs/src/features/landing/index.ts +1 -0
  309. package/templates-i18n/nextjs/src/features/landing/schemas/index.ts +1 -0
  310. package/templates-i18n/nextjs/src/features/landing/schemas/project.schema.ts +9 -0
  311. package/templates-i18n/nextjs/src/features/landing/stores/counter.store.ts +18 -0
  312. package/templates-i18n/nextjs/src/features/landing/stores/index.ts +1 -0
  313. package/templates-i18n/nextjs/src/features/landing/types/index.ts +1 -0
  314. package/templates-i18n/nextjs/src/features/landing/types/user.types.ts +9 -0
  315. package/templates-i18n/nextjs/src/helpers/format-date.ts +13 -0
  316. package/templates-i18n/nextjs/src/helpers/index.ts +1 -0
  317. package/templates-i18n/nextjs/src/hooks/index.ts +5 -0
  318. package/templates-i18n/nextjs/src/i18n/request.ts +16 -0
  319. package/templates-i18n/nextjs/src/i18n/routing.ts +11 -0
  320. package/templates-i18n/nextjs/src/lib/api.ts +97 -0
  321. package/templates-i18n/nextjs/src/lib/query-client.ts +18 -0
  322. package/templates-i18n/nextjs/src/lib/utils.ts +12 -0
  323. package/templates-i18n/nextjs/src/messages/en.json +55 -0
  324. package/templates-i18n/nextjs/src/messages/tr.json +55 -0
  325. package/templates-i18n/nextjs/src/providers/Providers.tsx +15 -0
  326. package/templates-i18n/nextjs/src/providers/QueryProvider.tsx +19 -0
  327. package/templates-i18n/nextjs/src/providers/ThemeProvider.tsx +9 -0
  328. package/templates-i18n/nextjs/src/providers/index.ts +1 -0
  329. package/templates-i18n/nextjs/src/proxy.ts +16 -0
  330. package/templates-i18n/nextjs/src/schemas/index.ts +5 -0
  331. package/templates-i18n/nextjs/src/stores/index.ts +5 -0
  332. package/templates-i18n/nextjs/src/styles/tailwind.css +122 -0
  333. package/templates-i18n/nextjs/src/types/site-config.types.ts +10 -0
  334. package/templates-i18n/nextjs/tsconfig.json +45 -0
  335. package/templates-i18n/nextjs/tsconfig.tsbuildinfo +1 -0
  336. package/templates-i18n/tanstack/.changeset/README.md +8 -0
  337. package/templates-i18n/tanstack/.changeset/config.json +11 -0
  338. package/templates-i18n/tanstack/.env.example +6 -0
  339. package/templates-i18n/tanstack/.eslintcache +1 -0
  340. package/templates-i18n/tanstack/.github/workflows/ci.yml +41 -0
  341. package/templates-i18n/tanstack/.husky/commit-msg +1 -0
  342. package/templates-i18n/tanstack/.husky/pre-commit +1 -0
  343. package/templates-i18n/tanstack/.husky/pre-push +1 -0
  344. package/templates-i18n/tanstack/.prettierignore +7 -0
  345. package/templates-i18n/tanstack/.prettierrc +41 -0
  346. package/templates-i18n/tanstack/.vscode/extensions.json +7 -0
  347. package/templates-i18n/tanstack/.vscode/settings.json +22 -0
  348. package/templates-i18n/tanstack/LICENSE +21 -0
  349. package/templates-i18n/tanstack/README.md +204 -0
  350. package/templates-i18n/tanstack/_gitignore +52 -0
  351. package/templates-i18n/tanstack/commitlint.config.js +6 -0
  352. package/templates-i18n/tanstack/eslint.config.js +29 -0
  353. package/templates-i18n/tanstack/knip.config.js +26 -0
  354. package/templates-i18n/tanstack/messages/en.json +65 -0
  355. package/templates-i18n/tanstack/messages/tr.json +65 -0
  356. package/templates-i18n/tanstack/package.json +132 -0
  357. package/templates-i18n/tanstack/pnpm-lock.yaml +5998 -0
  358. package/templates-i18n/tanstack/pnpm-workspace.yaml +3 -0
  359. package/templates-i18n/tanstack/project.inlang/README.md +157 -0
  360. package/templates-i18n/tanstack/project.inlang/settings.json +9 -0
  361. package/templates-i18n/tanstack/public/favicon.ico +0 -0
  362. package/templates-i18n/tanstack/public/llms.txt +86 -0
  363. package/templates-i18n/tanstack/public/logo.png +0 -0
  364. package/templates-i18n/tanstack/public/logo.webp +0 -0
  365. package/templates-i18n/tanstack/public/og.png +0 -0
  366. package/templates-i18n/tanstack/src/components/shared/DefaultCatchBoundary.tsx +36 -0
  367. package/templates-i18n/tanstack/src/components/shared/LanguageSwitcher.tsx +57 -0
  368. package/templates-i18n/tanstack/src/components/shared/NotFound.tsx +18 -0
  369. package/templates-i18n/tanstack/src/components/shared/Pending.tsx +13 -0
  370. package/templates-i18n/tanstack/src/components/shared/ThemeToggle.tsx +31 -0
  371. package/templates-i18n/tanstack/src/components/ui/avatar.tsx +52 -0
  372. package/templates-i18n/tanstack/src/components/ui/button.tsx +47 -0
  373. package/templates-i18n/tanstack/src/components/ui/dialog.tsx +107 -0
  374. package/templates-i18n/tanstack/src/components/ui/field.tsx +24 -0
  375. package/templates-i18n/tanstack/src/components/ui/index.ts +27 -0
  376. package/templates-i18n/tanstack/src/components/ui/input.tsx +23 -0
  377. package/templates-i18n/tanstack/src/components/ui/label.tsx +17 -0
  378. package/templates-i18n/tanstack/src/components/ui/skeleton.tsx +13 -0
  379. package/templates-i18n/tanstack/src/components/ui/table.tsx +94 -0
  380. package/templates-i18n/tanstack/src/components/ui/tabs.tsx +46 -0
  381. package/templates-i18n/tanstack/src/config/seo.config.ts +52 -0
  382. package/templates-i18n/tanstack/src/config/site.config.ts +15 -0
  383. package/templates-i18n/tanstack/src/constants/index.ts +5 -0
  384. package/templates-i18n/tanstack/src/env.ts +47 -0
  385. package/templates-i18n/tanstack/src/features/landing/api/get-users.api.ts +7 -0
  386. package/templates-i18n/tanstack/src/features/landing/api/index.ts +2 -0
  387. package/templates-i18n/tanstack/src/features/landing/api/query-keys.ts +7 -0
  388. package/templates-i18n/tanstack/src/features/landing/components/CartDemo.tsx +67 -0
  389. package/templates-i18n/tanstack/src/features/landing/components/Features.tsx +79 -0
  390. package/templates-i18n/tanstack/src/features/landing/components/Hero.tsx +68 -0
  391. package/templates-i18n/tanstack/src/features/landing/components/LandingPage.tsx +17 -0
  392. package/templates-i18n/tanstack/src/features/landing/components/ProjectFormDemo.tsx +64 -0
  393. package/templates-i18n/tanstack/src/features/landing/components/Reveal.tsx +83 -0
  394. package/templates-i18n/tanstack/src/features/landing/components/Showcase.tsx +81 -0
  395. package/templates-i18n/tanstack/src/features/landing/components/UsersDemo.tsx +191 -0
  396. package/templates-i18n/tanstack/src/features/landing/data/features.data.tsx +45 -0
  397. package/templates-i18n/tanstack/src/features/landing/data/index.ts +1 -0
  398. package/templates-i18n/tanstack/src/features/landing/helpers/get-initials.ts +15 -0
  399. package/templates-i18n/tanstack/src/features/landing/helpers/index.ts +7 -0
  400. package/templates-i18n/tanstack/src/features/landing/helpers/motion.ts +21 -0
  401. package/templates-i18n/tanstack/src/features/landing/hooks/index.ts +1 -0
  402. package/templates-i18n/tanstack/src/features/landing/hooks/use-users.ts +19 -0
  403. package/templates-i18n/tanstack/src/features/landing/icons/index.ts +5 -0
  404. package/templates-i18n/tanstack/src/features/landing/icons/react-hook-form.tsx +18 -0
  405. package/templates-i18n/tanstack/src/features/landing/icons/react.tsx +20 -0
  406. package/templates-i18n/tanstack/src/features/landing/icons/tailwind.tsx +14 -0
  407. package/templates-i18n/tanstack/src/features/landing/icons/tanstack.tsx +321 -0
  408. package/templates-i18n/tanstack/src/features/landing/icons/typescript.tsx +16 -0
  409. package/templates-i18n/tanstack/src/features/landing/index.ts +1 -0
  410. package/templates-i18n/tanstack/src/features/landing/schemas/index.ts +1 -0
  411. package/templates-i18n/tanstack/src/features/landing/schemas/project.schema.ts +10 -0
  412. package/templates-i18n/tanstack/src/features/landing/stores/counter.store.ts +18 -0
  413. package/templates-i18n/tanstack/src/features/landing/stores/index.ts +1 -0
  414. package/templates-i18n/tanstack/src/features/landing/types/index.ts +1 -0
  415. package/templates-i18n/tanstack/src/features/landing/types/user.types.ts +9 -0
  416. package/templates-i18n/tanstack/src/helpers/format-date.ts +13 -0
  417. package/templates-i18n/tanstack/src/helpers/index.ts +1 -0
  418. package/templates-i18n/tanstack/src/hooks/index.ts +5 -0
  419. package/templates-i18n/tanstack/src/lib/api.ts +97 -0
  420. package/templates-i18n/tanstack/src/lib/query-client.ts +18 -0
  421. package/templates-i18n/tanstack/src/lib/utils.ts +13 -0
  422. package/templates-i18n/tanstack/src/paraglide/README.md +162 -0
  423. package/templates-i18n/tanstack/src/providers/Providers.tsx +12 -0
  424. package/templates-i18n/tanstack/src/providers/ThemeProvider.tsx +98 -0
  425. package/templates-i18n/tanstack/src/providers/devtools.tsx +6 -0
  426. package/templates-i18n/tanstack/src/providers/index.ts +1 -0
  427. package/templates-i18n/tanstack/src/providers/root-provider.ts +9 -0
  428. package/templates-i18n/tanstack/src/routeTree.gen.ts +179 -0
  429. package/templates-i18n/tanstack/src/router.tsx +27 -0
  430. package/templates-i18n/tanstack/src/routes/$lang/index.tsx +13 -0
  431. package/templates-i18n/tanstack/src/routes/$lang.tsx +22 -0
  432. package/templates-i18n/tanstack/src/routes/__root.tsx +80 -0
  433. package/templates-i18n/tanstack/src/routes/index.tsx +13 -0
  434. package/templates-i18n/tanstack/src/routes/robots[.]txt.ts +21 -0
  435. package/templates-i18n/tanstack/src/routes/site[.]webmanifest.ts +32 -0
  436. package/templates-i18n/tanstack/src/routes/sitemap[.]xml.ts +27 -0
  437. package/templates-i18n/tanstack/src/schemas/index.ts +5 -0
  438. package/templates-i18n/tanstack/src/server.ts +10 -0
  439. package/templates-i18n/tanstack/src/start.ts +20 -0
  440. package/templates-i18n/tanstack/src/stores/index.ts +5 -0
  441. package/templates-i18n/tanstack/src/styles/tailwind.css +123 -0
  442. package/templates-i18n/tanstack/src/types/site-config.types.ts +10 -0
  443. package/templates-i18n/tanstack/tsconfig.json +26 -0
  444. package/templates-i18n/tanstack/tsr.config.json +3 -0
  445. package/templates-i18n/tanstack/vite.config.ts +31 -0
  446. package/index.js +0 -3
  447. package/public/start.jpg +0 -0
@@ -0,0 +1,8 @@
1
+ # Changesets
2
+
3
+ Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4
+ with multi-package repos, or single-package repos to help you version and publish your code. You can
5
+ find the full documentation for it [in our repository](https://github.com/changesets/changesets).
6
+
7
+ We have a quick list of common questions to get you started engaging with this project in
8
+ [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md).
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://unpkg.com/@changesets/config@3.1.4/schema.json",
3
+ "changelog": "@changesets/cli/changelog",
4
+ "commit": false,
5
+ "fixed": [],
6
+ "linked": [],
7
+ "access": "restricted",
8
+ "baseBranch": "main",
9
+ "updateInternalDependencies": "patch",
10
+ "ignore": []
11
+ }
@@ -0,0 +1,6 @@
1
+ # Public (exposed to the browser) — must be prefixed with VITE_
2
+ VITE_APP_URL="http://localhost:3000"
3
+ VITE_APP_NAME="ViraStack Start - TanStack Edition"
4
+
5
+ # Server-only (never exposed to the browser)
6
+ # NODE_ENV is set automatically by Vite — no need to define it here.
@@ -0,0 +1,6 @@
1
+ # Public (exposed to the browser) — must be prefixed with VITE_
2
+ VITE_APP_URL="http://localhost:3000"
3
+ VITE_APP_NAME="ViraStack Start - TanStack Edition"
4
+
5
+ # Server-only (never exposed to the browser)
6
+ # NODE_ENV is set automatically by Vite — no need to define it here.
@@ -0,0 +1 @@
1
+ [{"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/shared/DefaultCatchBoundary.tsx":"1","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/shared/NotFound.tsx":"2","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/shared/Pending.tsx":"3","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/shared/ThemeToggle.tsx":"4","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/avatar.tsx":"5","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/button.tsx":"6","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/dialog.tsx":"7","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/field.tsx":"8","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/index.ts":"9","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/input.tsx":"10","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/label.tsx":"11","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/skeleton.tsx":"12","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/table.tsx":"13","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/tabs.tsx":"14","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/config/seo.config.ts":"15","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/config/site.config.ts":"16","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/constants/index.ts":"17","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/env.ts":"18","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/api/get-users.api.ts":"19","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/api/index.ts":"20","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/api/query-keys.ts":"21","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/CartDemo.tsx":"22","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/Features.tsx":"23","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/Hero.tsx":"24","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/LandingPage.tsx":"25","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/ProjectFormDemo.tsx":"26","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/Reveal.tsx":"27","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/Showcase.tsx":"28","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/UsersDemo.tsx":"29","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/data/features.data.tsx":"30","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/data/index.ts":"31","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/helpers/get-initials.ts":"32","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/helpers/index.ts":"33","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/helpers/motion.ts":"34","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/hooks/index.ts":"35","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/hooks/use-users.ts":"36","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/index.ts":"37","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/react-hook-form.tsx":"38","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/react.tsx":"39","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/tailwind.tsx":"40","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/tanstack.tsx":"41","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/typescript.tsx":"42","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/index.ts":"43","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/schemas/index.ts":"44","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/schemas/project.schema.ts":"45","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/stores/counter.store.ts":"46","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/stores/index.ts":"47","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/types/index.ts":"48","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/types/user.types.ts":"49","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/helpers/format-date.ts":"50","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/helpers/index.ts":"51","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/hooks/index.ts":"52","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/lib/api.ts":"53","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/lib/query-client.ts":"54","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/lib/utils.ts":"55","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/providers/Providers.tsx":"56","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/providers/ThemeProvider.tsx":"57","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/providers/devtools.tsx":"58","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/providers/index.ts":"59","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/providers/root-provider.ts":"60","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/router.tsx":"61","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/routes/__root.tsx":"62","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/routes/index.tsx":"63","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/routes/robots[.]txt.ts":"64","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/routes/site[.]webmanifest.ts":"65","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/routes/sitemap[.]xml.ts":"66","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/schemas/index.ts":"67","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/start.ts":"68","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/stores/index.ts":"69","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/types/site-config.types.ts":"70","/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/vite.config.ts":"71"},{"size":1246,"mtime":1785060939821,"results":"72","hashOfConfig":"73"},{"size":659,"mtime":1784854633164,"results":"74","hashOfConfig":"73"},{"size":460,"mtime":1784890377483,"results":"75","hashOfConfig":"73"},{"size":831,"mtime":1785178880879,"results":"76","hashOfConfig":"73"},{"size":1454,"mtime":1784854986287,"results":"77","hashOfConfig":"73"},{"size":1841,"mtime":1784854986483,"results":"78","hashOfConfig":"73"},{"size":3186,"mtime":1784724501000,"results":"79","hashOfConfig":"73"},{"size":570,"mtime":1784844670000,"results":"80","hashOfConfig":"73"},{"size":775,"mtime":1784844515000,"results":"81","hashOfConfig":"73"},{"size":926,"mtime":1784724501000,"results":"82","hashOfConfig":"73"},{"size":430,"mtime":1784724501000,"results":"83","hashOfConfig":"73"},{"size":304,"mtime":1784724501000,"results":"84","hashOfConfig":"73"},{"size":2820,"mtime":1784844955000,"results":"85","hashOfConfig":"73"},{"size":1515,"mtime":1784724501000,"results":"86","hashOfConfig":"73"},{"size":2002,"mtime":1784855059230,"results":"87","hashOfConfig":"73"},{"size":521,"mtime":1784854595443,"results":"88","hashOfConfig":"73"},{"size":156,"mtime":1784848451000,"results":"89","hashOfConfig":"73"},{"size":1384,"mtime":1785162800911,"results":"90","hashOfConfig":"73"},{"size":233,"mtime":1784852534000,"results":"91","hashOfConfig":"73"},{"size":127,"mtime":1784852535000,"results":"92","hashOfConfig":"73"},{"size":301,"mtime":1784852534000,"results":"93","hashOfConfig":"73"},{"size":2271,"mtime":1784851697000,"results":"94","hashOfConfig":"73"},{"size":1645,"mtime":1784848485000,"results":"95","hashOfConfig":"73"},{"size":2589,"mtime":1785102111794,"results":"96","hashOfConfig":"73"},{"size":476,"mtime":1785058808101,"results":"97","hashOfConfig":"73"},{"size":1954,"mtime":1784854987794,"results":"98","hashOfConfig":"73"},{"size":2020,"mtime":1784848449000,"results":"99","hashOfConfig":"73"},{"size":2780,"mtime":1785102111830,"results":"100","hashOfConfig":"73"},{"size":6573,"mtime":1784890384034,"results":"101","hashOfConfig":"73"},{"size":1528,"mtime":1785058808101,"results":"102","hashOfConfig":"73"},{"size":66,"mtime":1784848481000,"results":"103","hashOfConfig":"73"},{"size":354,"mtime":1784848482000,"results":"104","hashOfConfig":"73"},{"size":192,"mtime":1784848482000,"results":"105","hashOfConfig":"73"},{"size":696,"mtime":1784849743000,"results":"106","hashOfConfig":"73"},{"size":63,"mtime":1784848503000,"results":"107","hashOfConfig":"73"},{"size":566,"mtime":1784890383238,"results":"108","hashOfConfig":"73"},{"size":340,"mtime":1784855062461,"results":"109","hashOfConfig":"73"},{"size":1973,"mtime":1784848418000,"results":"110","hashOfConfig":"73"},{"size":6639,"mtime":1784848418000,"results":"111","hashOfConfig":"73"},{"size":807,"mtime":1784848418000,"results":"112","hashOfConfig":"73"},{"size":12913,"mtime":1784848427000,"results":"113","hashOfConfig":"73"},{"size":1892,"mtime":1784848418000,"results":"114","hashOfConfig":"73"},{"size":73,"mtime":1784848503000,"results":"115","hashOfConfig":"73"},{"size":94,"mtime":1784848436000,"results":"116","hashOfConfig":"73"},{"size":210,"mtime":1784757948000,"results":"117","hashOfConfig":"73"},{"size":478,"mtime":1784724501000,"results":"118","hashOfConfig":"73"},{"size":75,"mtime":1784848436000,"results":"119","hashOfConfig":"73"},{"size":65,"mtime":1784848474000,"results":"120","hashOfConfig":"73"},{"size":127,"mtime":1784853202000,"results":"121","hashOfConfig":"73"},{"size":411,"mtime":1784724501000,"results":"122","hashOfConfig":"73"},{"size":52,"mtime":1784724501000,"results":"123","hashOfConfig":"73"},{"size":144,"mtime":1784848450000,"results":"124","hashOfConfig":"73"},{"size":2902,"mtime":1784890382022,"results":"125","hashOfConfig":"73"},{"size":465,"mtime":1784724501000,"results":"126","hashOfConfig":"73"},{"size":376,"mtime":1784854986908,"results":"127","hashOfConfig":"73"},{"size":350,"mtime":1785177886860,"results":"128","hashOfConfig":"73"},{"size":3037,"mtime":1785178881334,"results":"129","hashOfConfig":"73"},{"size":160,"mtime":1784855044958,"results":"130","hashOfConfig":"73"},{"size":51,"mtime":1784854605002,"results":"131","hashOfConfig":"73"},{"size":163,"mtime":1784855059230,"results":"132","hashOfConfig":"73"},{"size":708,"mtime":1785173711917,"results":"133","hashOfConfig":"73"},{"size":2317,"mtime":1785178881358,"results":"134","hashOfConfig":"73"},{"size":308,"mtime":1784890377498,"results":"135","hashOfConfig":"73"},{"size":448,"mtime":1784890374497,"results":"136","hashOfConfig":"73"},{"size":833,"mtime":1784890376550,"results":"137","hashOfConfig":"73"},{"size":702,"mtime":1784890375619,"results":"138","hashOfConfig":"73"},{"size":154,"mtime":1784848451000,"results":"139","hashOfConfig":"73"},{"size":766,"mtime":1784890449212,"results":"140","hashOfConfig":"73"},{"size":154,"mtime":1784848451000,"results":"141","hashOfConfig":"73"},{"size":160,"mtime":1784724501000,"results":"142","hashOfConfig":"73"},{"size":349,"mtime":1785102111794,"results":"143","hashOfConfig":"73"},{"filePath":"144","messages":"145","suppressedMessages":"146","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1invr81",{"filePath":"147","messages":"148","suppressedMessages":"149","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"150","messages":"151","suppressedMessages":"152","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"153","messages":"154","suppressedMessages":"155","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"156","messages":"157","suppressedMessages":"158","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"159","messages":"160","suppressedMessages":"161","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"162","messages":"163","suppressedMessages":"164","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"165","messages":"166","suppressedMessages":"167","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"168","messages":"169","suppressedMessages":"170","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"171","messages":"172","suppressedMessages":"173","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"174","messages":"175","suppressedMessages":"176","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"177","messages":"178","suppressedMessages":"179","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"180","messages":"181","suppressedMessages":"182","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"183","messages":"184","suppressedMessages":"185","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"186","messages":"187","suppressedMessages":"188","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"189","messages":"190","suppressedMessages":"191","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"192","messages":"193","suppressedMessages":"194","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"195","messages":"196","suppressedMessages":"197","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"198","messages":"199","suppressedMessages":"200","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"201","messages":"202","suppressedMessages":"203","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"204","messages":"205","suppressedMessages":"206","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"207","messages":"208","suppressedMessages":"209","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"210","messages":"211","suppressedMessages":"212","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"213","messages":"214","suppressedMessages":"215","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"216","messages":"217","suppressedMessages":"218","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"219","messages":"220","suppressedMessages":"221","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"222","messages":"223","suppressedMessages":"224","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"225","messages":"226","suppressedMessages":"227","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"228","messages":"229","suppressedMessages":"230","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"231","messages":"232","suppressedMessages":"233","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"234","messages":"235","suppressedMessages":"236","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"237","messages":"238","suppressedMessages":"239","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"240","messages":"241","suppressedMessages":"242","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"243","messages":"244","suppressedMessages":"245","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"246","messages":"247","suppressedMessages":"248","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"249","messages":"250","suppressedMessages":"251","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"252","messages":"253","suppressedMessages":"254","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"255","messages":"256","suppressedMessages":"257","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"258","messages":"259","suppressedMessages":"260","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"261","messages":"262","suppressedMessages":"263","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"264","messages":"265","suppressedMessages":"266","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"267","messages":"268","suppressedMessages":"269","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"270","messages":"271","suppressedMessages":"272","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"273","messages":"274","suppressedMessages":"275","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"276","messages":"277","suppressedMessages":"278","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"279","messages":"280","suppressedMessages":"281","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"282","messages":"283","suppressedMessages":"284","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"285","messages":"286","suppressedMessages":"287","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"288","messages":"289","suppressedMessages":"290","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"291","messages":"292","suppressedMessages":"293","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"294","messages":"295","suppressedMessages":"296","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"297","messages":"298","suppressedMessages":"299","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"300","messages":"301","suppressedMessages":"302","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"303","messages":"304","suppressedMessages":"305","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"306","messages":"307","suppressedMessages":"308","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"309","messages":"310","suppressedMessages":"311","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"312","messages":"313","suppressedMessages":"314","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"315","messages":"316","suppressedMessages":"317","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"318","messages":"319","suppressedMessages":"320","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"321","messages":"322","suppressedMessages":"323","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"324","messages":"325","suppressedMessages":"326","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"327","messages":"328","suppressedMessages":"329","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"330","messages":"331","suppressedMessages":"332","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"333","messages":"334","suppressedMessages":"335","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"336","messages":"337","suppressedMessages":"338","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"339","messages":"340","suppressedMessages":"341","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"342","messages":"343","suppressedMessages":"344","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"345","messages":"346","suppressedMessages":"347","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"348","messages":"349","suppressedMessages":"350","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"351","messages":"352","suppressedMessages":"353","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"354","messages":"355","suppressedMessages":"356","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/shared/DefaultCatchBoundary.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/shared/NotFound.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/shared/Pending.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/shared/ThemeToggle.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/avatar.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/button.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/dialog.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/field.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/input.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/label.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/skeleton.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/table.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/components/ui/tabs.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/config/seo.config.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/config/site.config.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/constants/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/env.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/api/get-users.api.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/api/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/api/query-keys.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/CartDemo.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/Features.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/Hero.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/LandingPage.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/ProjectFormDemo.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/Reveal.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/Showcase.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/components/UsersDemo.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/data/features.data.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/data/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/helpers/get-initials.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/helpers/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/helpers/motion.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/hooks/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/hooks/use-users.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/react-hook-form.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/react.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/tailwind.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/tanstack.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/icons/typescript.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/schemas/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/schemas/project.schema.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/stores/counter.store.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/stores/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/types/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/features/landing/types/user.types.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/helpers/format-date.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/helpers/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/hooks/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/lib/api.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/lib/query-client.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/lib/utils.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/providers/Providers.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/providers/ThemeProvider.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/providers/devtools.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/providers/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/providers/root-provider.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/router.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/routes/__root.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/routes/index.tsx",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/routes/robots[.]txt.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/routes/site[.]webmanifest.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/routes/sitemap[.]xml.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/schemas/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/start.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/stores/index.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/src/types/site-config.types.ts",[],[],"/Users/omergulcicek/Projeler/virastack/start/templates/tanstack/vite.config.ts",[],[]]
@@ -0,0 +1,41 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main, master]
6
+ pull_request:
7
+ branches: [main, master]
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - name: Checkout
15
+ uses: actions/checkout@v4
16
+
17
+ - name: Install pnpm
18
+ uses: pnpm/action-setup@v4
19
+ with:
20
+ version: 10
21
+
22
+ - name: Setup Node.js
23
+ uses: actions/setup-node@v4
24
+ with:
25
+ node-version: 22
26
+ cache: "pnpm"
27
+
28
+ - name: Install dependencies
29
+ run: pnpm install --frozen-lockfile
30
+
31
+ - name: Typecheck
32
+ run: pnpm run typecheck
33
+
34
+ - name: Lint
35
+ run: pnpm run lint:ci
36
+
37
+ - name: Knip
38
+ run: pnpm run knip
39
+
40
+ - name: Build
41
+ run: pnpm run build
@@ -0,0 +1 @@
1
+ npx --no -- commitlint --edit "$1"
@@ -0,0 +1 @@
1
+ npx --no -- lint-staged
@@ -0,0 +1 @@
1
+ npm run typecheck && npm run lint:ci
@@ -0,0 +1,7 @@
1
+ .next
2
+ node_modules
3
+ pnpm-lock.yaml
4
+ public
5
+ CHANGELOG.md
6
+ .changeset
7
+ src/routeTree.gen.ts
@@ -0,0 +1,41 @@
1
+ {
2
+ "singleQuote": false,
3
+ "trailingComma": "all",
4
+ "printWidth": 100,
5
+ "plugins": ["@ianvs/prettier-plugin-sort-imports", "prettier-plugin-tailwindcss"],
6
+ "tailwindFunctions": ["cn", "clsx", "cva"],
7
+ "tailwindStylesheet": "./src/styles/tailwind.css",
8
+ "importOrder": [
9
+ "^react$",
10
+ "^@tanstack/.*",
11
+ "",
12
+ "^zustand($|/)",
13
+ "^lucide-react($|/)",
14
+ "<THIRD_PARTY_MODULES>",
15
+ "",
16
+ "^@/types($|/)",
17
+ "^@/constants($|/)",
18
+ "^@/schemas($|/)",
19
+ "^@/config($|/)",
20
+ "^@/env($|/)",
21
+ "",
22
+ "^@/assets($|/)",
23
+ "^@/styles($|/)",
24
+ "^@/lib($|/)",
25
+ "^@/helpers($|/)",
26
+ "",
27
+ "^@/providers($|/)",
28
+ "^@/stores($|/)",
29
+ "^@/hooks($|/)",
30
+ "^@/data($|/)",
31
+ "",
32
+ "^@/components($|/)",
33
+ "^@/layout($|/)",
34
+ "^@/features($|/)",
35
+ "^@/ui($|/)",
36
+ "^@/.*",
37
+ "",
38
+ "^[./]"
39
+ ],
40
+ "importOrderParserPlugins": ["typescript", "jsx"]
41
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "recommendations": [
3
+ "esbenp.prettier-vscode",
4
+ "dbaeumer.vscode-eslint",
5
+ "bradlc.vscode-tailwindcss"
6
+ ]
7
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
3
+ "editor.formatOnSave": true,
4
+ "editor.codeActionsOnSave": {
5
+ "source.fixAll.eslint": "explicit"
6
+ },
7
+ "typescript.tsdk": "node_modules/typescript/lib",
8
+ "files.exclude": {
9
+ "**/.git": true,
10
+ "**/.svn": true,
11
+ "**/.hg": true,
12
+ "**/.DS_Store": true,
13
+ "**/Thumbs.db": true,
14
+ "**/.cache": true,
15
+ "**/.next": true,
16
+ "**/.tanstack": true,
17
+ "**/.output": true,
18
+ "**/build": true,
19
+ "**/dist": true,
20
+ "**/node_modules": true
21
+ }
22
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026-present Ömer Gülçiçek (ViraStack)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,204 @@
1
+ <div align="center">
2
+
3
+ <a href="https://github.com/virastack/start" target="_blank" rel="noreferrer">
4
+ <picture>
5
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/virastack/start/main/assets/logo-dark.png">
6
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/virastack/start/main/assets/logo-light.png">
7
+ <img src="https://raw.githubusercontent.com/virastack/start/main/assets/logo-light.png" alt="ViraStack Start" height="120" style="max-width: 100%;" />
8
+ </picture>
9
+ </a>
10
+
11
+ # ViraStack Start — TanStack Edition
12
+
13
+ _The TanStack Start boilerplate that feels effortless._
14
+
15
+ [![ViraStack TanStack](https://img.shields.io/badge/ViraStack-TanStack-%2300bba7)](https://virastack.com)
16
+ [![npm version](https://img.shields.io/npm/v/virastack)](https://www.npmjs.com/package/virastack)
17
+ [![npm downloads](https://img.shields.io/npm/dt/virastack)](https://www.npmjs.com/package/virastack)
18
+ [![Node](https://img.shields.io/badge/node-%3E%3D20.9-339933?logo=node.js&logoColor=white)](package.json)
19
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
20
+ [![CI](https://github.com/virastack/start/actions/workflows/ci.yml/badge.svg)](https://github.com/virastack/start/actions/workflows/ci.yml)
21
+ [![@virastack](https://img.shields.io/badge/-%40virastack-black?logo=x&logoColor=white)](https://x.com/virastack)
22
+
23
+ </div>
24
+
25
+ ---
26
+
27
+ **Docs:** [See the docs](https://www.virastack.com/)
28
+
29
+ **Contents:** [Why](#why-virastack) · [Features](#features) · [Getting started](#getting-started) · [Environment](#environment-variables) · [Scripts](#scripts) · [Project structure](#project-structure) · [Customization](#customization) · [ViraStack AI](#virastack-ai) · [Deployment](#deployment)
30
+
31
+ Production-grade TanStack Start starter with feature-sliced architecture, strict TypeScript, and a pre-configured [**ViraStack AI**](https://github.com/virastack/ai) layer — so you and your coding agents ship consistent code from day one.
32
+
33
+ ## Why ViraStack
34
+
35
+ - **Opinionated, not opaque** — clear folder rules and placement conventions; nothing important is hidden behind magic
36
+ - **Agent-ready by default** — `AGENTS.md`, Cursor rules, `llms.txt`, and design skills ship with every project
37
+ - **Own your UI** — Base UI primitives in `components/ui` (shadcn-style), fully editable
38
+ - **State triad** — TanStack Query (server), Zustand (client), nuqs (URL) — each with a dedicated job
39
+ - **DX that sticks** — ESLint, Prettier, Knip, Husky, Commitlint, and GitHub Actions CI out of the box
40
+
41
+ ## Features
42
+
43
+ **Included**
44
+
45
+ - ⚡ **TanStack Start** — file-based TanStack Router, type-safe loaders, SSR
46
+ - ⚛️ **React 19** + TypeScript strict (`noUncheckedIndexedAccess`)
47
+ - 🎨 **Tailwind CSS 4** + Base UI primitives
48
+ - 🔄 **TanStack Query** · **Zustand** · **nuqs**
49
+ - 📋 **React Hook Form** + **Zod** — validated forms end to end
50
+ - 🤖 **ViraStack AI** — agent context, scoped rules, design skills
51
+ - ✅ **Quality built in** — ESLint, Prettier, Knip, Husky, Commitlint, CI (typecheck → lint → knip → build)
52
+
53
+ **Optional / bring your own**
54
+
55
+ - Auth, database, i18n, analytics, and monitoring — wire them in when you need them; the architecture is ready
56
+
57
+ ## Getting started
58
+
59
+ **Quick Start & Setup:** Please follow the instructions in the main [ViraStack Start README](https://github.com/virastack/start#quick-start).
60
+
61
+ Once your project is scaffolded, start the development server:
62
+
63
+ ```bash
64
+ pnpm dev
65
+ ```
66
+
67
+ Open [http://localhost:3000](http://localhost:3000). The home route renders `LandingPage` from `src/features/landing` — a full demo of the stack (theme toggle, TanStack Query, Zustand, Zod forms, nuqs). Delete that feature when you are ready to build.
68
+
69
+ ## Environment variables
70
+
71
+ Validated in `src/env.ts`. Scaffolded projects already have `.env.local`.
72
+
73
+ | Variable | Scope | Description |
74
+ | :-------------- | :----- | :------------------------------------------------------------ |
75
+ | `VITE_APP_URL` | Public | Canonical app URL (default `http://localhost:3000`) |
76
+ | `VITE_APP_NAME` | Public | Product name shown in UI/metadata (default `ViraStack Start`) |
77
+
78
+ `NODE_ENV` is set by Vite — do not define it manually. Add new vars in both `.env.example` and `src/env.ts`.
79
+
80
+ ## Scripts
81
+
82
+ | Script | Description |
83
+ | :------------------------------ | :------------------------------------------- |
84
+ | `dev` | Start the Vite + TanStack Start dev server |
85
+ | `build` | Production build |
86
+ | `start` / `preview` | Serve the production build |
87
+ | `lint` / `lint:fix` / `lint:ci` | ESLint (+ format check in CI) |
88
+ | `format` / `format:check` | Prettier |
89
+ | `typecheck` | `tsc --noEmit` |
90
+ | `knip` | Find unused files, exports, and dependencies |
91
+
92
+ CI runs the same gates: typecheck → lint → knip → build (see `.github/workflows/ci.yml`).
93
+
94
+ ## Project structure
95
+
96
+ ```
97
+ src/
98
+ ├── routes/ # File-based TanStack Router routes
99
+ ├── features/
100
+ │ └── landing/ # Demo feature (canonical folder layout)
101
+ │ ├── api/
102
+ │ ├── components/ # Hero, Features, Showcase, demos, LandingPage
103
+ │ ├── constants/
104
+ │ ├── data/
105
+ │ ├── helpers/
106
+ │ ├── hooks/
107
+ │ ├── icons/ # Brand SVGs used only by the landing demo
108
+ │ ├── schemas/
109
+ │ ├── stores/
110
+ │ ├── types/
111
+ │ └── index.ts
112
+ ├── components/
113
+ │ ├── ui/ # Base UI primitives (Button, Dialog, Tabs, …)
114
+ │ ├── layout/ # Header, Footer (reusable chrome)
115
+ │ └── shared/ # Cross-feature components (ThemeToggle, …)
116
+ ├── hooks/ # Shared hooks (promote via Rule of Three)
117
+ ├── stores/
118
+ ├── schemas/
119
+ ├── providers/
120
+ ├── lib/ # api.ts, query-client.ts, utils
121
+ ├── config/
122
+ ├── constants/
123
+ ├── helpers/
124
+ ├── types/
125
+ ├── styles/
126
+ ├── integrations/ # Framework integrations (TanStack Query)
127
+ ├── router.tsx
128
+ ├── start.ts # Global request middleware (security headers)
129
+ └── env.ts
130
+ ```
131
+
132
+ The bundled `landing` feature follows the ViraStack AI feature tree and is meant to be deleted when you start building.
133
+
134
+ **Quick start (strip the demo)**
135
+
136
+ 1. Delete `src/features/landing`
137
+ 2. Replace `src/routes/index.tsx` with your own route
138
+ 3. Keep `components/layout` Header/Footer if you still want site chrome — pass `links` only when you need nav items
139
+
140
+ **Rules of thumb**
141
+
142
+ - Default scope is `features/[feature]/` — promote to global `src/` only when a second feature needs it
143
+ - No cross-feature imports; share via `components/`, `lib/`, `hooks/`, etc.
144
+ - Path aliases are mandatory; parent-relative imports (`../`) are forbidden
145
+
146
+ See [`docs/architecture-guide.md`](docs/architecture-guide.md) for placement rules and import conventions.
147
+
148
+ ## Customization
149
+
150
+ Search the repo for `FIXME:` to find the first things to own:
151
+
152
+ | File | What to change |
153
+ | :---------------------------- | :-------------------------------- |
154
+ | `src/config/site.config.ts` | Site name, description, metadata |
155
+ | `vite.config.ts` | Vite / TanStack Start options |
156
+ | `src/start.ts` | Global request middleware/headers |
157
+ | `src/lib/api.ts` | Auth header / API client wiring |
158
+ | `src/env.ts` + `.env.example` | New environment variables |
159
+ | `public/` | Favicon and static assets |
160
+
161
+ You own every file — trim demos, rename features, keep only what you need.
162
+
163
+ ## ViraStack AI
164
+
165
+ Developed with [**ViraStack AI**](https://github.com/virastack/ai) — an AI-native architecture kit that ships agent context into every project:
166
+
167
+ | File | Purpose |
168
+ | :---------------- | :------------------------------- |
169
+ | `AGENTS.md` | Agent operating guide |
170
+ | `CLAUDE.md` | Claude Code entry point |
171
+ | `.cursor/rules/` | Scoped coding rules |
172
+ | `public/llms.txt` | Machine-readable project summary |
173
+ | `.agents/skills/` | Design-taste skills |
174
+
175
+ Install or refresh rules: `npx @virastack/ai init`
176
+
177
+ ## Deployment
178
+
179
+ Works with [Netlify](https://www.netlify.com/), [Cloudflare](https://developers.cloudflare.com/), Nitro, Railway, or any Node host:
180
+
181
+ 1. Push the repo and import the project
182
+ 2. Set `VITE_APP_URL` and `VITE_APP_NAME` from `.env.example`
183
+ 3. Deploy — `pnpm build` / `pnpm start` work on any Node host that can serve the Vite output
184
+
185
+ ## Philosophy
186
+
187
+ - Minimal surface, strong conventions
188
+ - Agent-first documentation lives next to the code
189
+ - Own your UI and architecture — no locked black boxes
190
+ - Production-ready DX without forcing auth/db opinions until you need them
191
+
192
+ ## Contributing
193
+
194
+ Ideas and bug reports welcome — open an [issue](https://github.com/virastack/start/issues).
195
+
196
+ PRs that improve DX, architecture docs, or the landing showcase are especially appreciated.
197
+
198
+ ---
199
+
200
+ <div align="center">
201
+
202
+ Bootstrapped with [**ViraStack Start**](https://github.com/virastack/start) · Built by <a href="https://omergulcicek.com">Ömer Gülçiçek</a> · <a href="LICENSE">MIT Licensed</a>
203
+
204
+ </div>
@@ -0,0 +1,52 @@
1
+ # dependencies
2
+ /node_modules
3
+ /.pnp
4
+ .pnp.*
5
+ .yarn/*
6
+ !.yarn/patches
7
+ !.yarn/plugins
8
+ !.yarn/releases
9
+ !.yarn/versions
10
+
11
+ # testing
12
+ /coverage
13
+
14
+ # build / framework
15
+ /dist
16
+ /dist-ssr
17
+ .nitro
18
+ .tanstack
19
+ .wrangler
20
+ .output
21
+ .vinxi
22
+ __unconfig*
23
+
24
+ # production
25
+ /build
26
+
27
+ # misc
28
+ .DS_Store
29
+ *.pem
30
+ *.local
31
+ todos.json
32
+
33
+ # debug
34
+ npm-debug.log*
35
+ yarn-debug.log*
36
+ yarn-error.log*
37
+ .pnpm-debug.log*
38
+
39
+ # env files
40
+ .env*
41
+ !.env.example
42
+
43
+ # vercel
44
+ .vercel
45
+
46
+ # typescript
47
+ *.tsbuildinfo
48
+
49
+ # cache / tooling
50
+ .eslintcache
51
+ .knip
52
+ .turbo
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ extends: ["@commitlint/config-conventional"],
3
+ rules: {
4
+ "body-max-line-length": [0, "always"],
5
+ },
6
+ };
@@ -0,0 +1,28 @@
1
+ // @ts-check
2
+
3
+ import { tanstackConfig } from "@tanstack/eslint-config";
4
+
5
+ export default [
6
+ ...tanstackConfig,
7
+ {
8
+ rules: {
9
+ "import/no-cycle": "off",
10
+ "import/order": "off",
11
+ "sort-imports": "off",
12
+ "@typescript-eslint/array-type": "off",
13
+ "@typescript-eslint/require-await": "off",
14
+ "pnpm/json-enforce-catalog": "off",
15
+ },
16
+ },
17
+ {
18
+ ignores: [
19
+ "eslint.config.js",
20
+ "knip.config.js",
21
+ "commitlint.config.js",
22
+ "src/routeTree.gen.ts",
23
+ "dist/**",
24
+ ".tanstack/**",
25
+ ".output/**",
26
+ ],
27
+ },
28
+ ];
@@ -0,0 +1,22 @@
1
+ /** @type {import('knip').KnipConfig} */
2
+ const config = {
3
+ entry: ["src/router.tsx", "src/start.ts", "src/routes/**/*.{ts,tsx}"],
4
+ project: ["src/**/*.{ts,tsx,js,jsx}"],
5
+ ignore: [
6
+ "src/components/ui/**",
7
+ // Shared-layer barrels reserved for Rule-of-Three promotions
8
+ "src/hooks/index.ts",
9
+ "src/stores/index.ts",
10
+ "src/schemas/index.ts",
11
+ "src/constants/index.ts",
12
+ ],
13
+ ignoreDependencies: ["tailwindcss", "tw-animate-css"],
14
+ rules: {
15
+ dependencies: "error",
16
+ exports: "warn",
17
+ types: "warn",
18
+ files: "warn",
19
+ },
20
+ };
21
+
22
+ module.exports = config;